STM32CUBE_MX_STM32F030C8T6_USART_TX应用

初始设置:SYS  :debug_serial_write  勾选   timebase_source选择systick      RCC:默认内部时钟所有不需要做任何修改

需要注意的是:如果想用IWDG,则在调试代码时需要先关闭之,否则系统不能正常运行,下面开始设置USART,如下图

接着设置通讯参数(之前的系统时钟配置为48MHz):

             

补充一下,这里要实现的是把txbuf数组中的10个字节的数据利用定时器17的溢出中断每隔500ms从TX口发送一次,下面设置定时器



Tout=(24000*1000)/48000000=0.5S计数周期

记得设置中断,如下图


到此CUBE设置完成

重点在下面哦

在主函数初始化部分进行

使能USART发送和定时器17

定义发送数组

u8 txbuf[10] = {0,1,2,3,4,5,6,7,8,9};


在stm32f0xx_it.c中有如下语句,其中

 HAL_TIM_IRQHandler(&htim17);找到后goto definition到函数定义处,找到溢出中断对应的回调函数
void TIM17_IRQHandler(void)
{
  /* USER CODE BEGIN TIM17_IRQn 0 */

  /* USER CODE END TIM17_IRQn 0 */
  HAL_TIM_IRQHandler(&htim17);
  /* USER CODE BEGIN TIM17_IRQn 1 */

  /* USER CODE END TIM17_IRQn 1 */
}

  /* TIM Update event */
  if(__HAL_TIM_GET_FLAG(htim, TIM_FLAG_UPDATE) != RESET)
  {
    if(__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_UPDATE) !=RESET)
    {
      __HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE);
      HAL_TIM_PeriodElapsedCallback(htim);
    }
  }

HAL_TIM_PeriodElapsedCallback(htim),这个函数就是我们要写的中断服务函数,由于cube在代码中有弱定义_weak,我们直接复制
/* USER CODE BEGIN 1 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    HAL_UART_Transmit(&huart2,&txbuf[0],sizeof(txbuf),100);  //这个就是我们加入的中断服务程序,每500ms进入中断一次	  
}
/* USER CODE END 1 */


 文中写的粗略一些,根据自己使用环境再进行详细编写! 
 


猜你喜欢

转载自blog.csdn.net/liuxinyong236/article/details/72636362