你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32L0 串口uart通讯 USART1_IRQHandler

[复制链接]
STMCU小助手 发布时间:2021-11-18 22:00
使用stm32 cubx 生成工程后 发现USART1_IRQHandler 中断不能进入。

下面这段代码进不去:

  1. void USART1_IRQHandler(void)
  2. {
  3.   /* USER CODE BEGIN USART1_IRQn 0 */

  4.   /* USER CODE END USART1_IRQn 0 */
  5.   HAL_UART_IRQHandler(&huart1);
  6.   /* USER CODE BEGIN USART1_IRQn 1 */
  7.   HAL_UART_Receive_IT(&huart1, recive_buf, 10);
  8.     HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
  9.   /* USER CODE END USART1_IRQn 1 */
  10. }
复制代码

于是添加红色部分,能够进入中断,完成数据接收

  1. void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
  2. {
  3.   GPIO_InitTypeDef GPIO_InitStruct = {0};
  4.   if(uartHandle->Instance==USART1)
  5.   {
  6.   /* USER CODE BEGIN USART1_MspInit 0 */

  7.   /* USER CODE END USART1_MspInit 0 */
  8.     /* USART1 clock enable */
  9.     __HAL_RCC_USART1_CLK_ENABLE();

  10.     __HAL_RCC_GPIOA_CLK_ENABLE();
  11.     /**USART1 GPIO Configuration   
  12.     PA9     ------> USART1_TX
  13.     PA10     ------> USART1_RX
  14.     */
  15.     GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10;
  16.     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  17.     GPIO_InitStruct.Pull = GPIO_NOPULL;
  18.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  19.     GPIO_InitStruct.Alternate = GPIO_AF4_USART1;
  20.     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

  21.     /* USART1 interrupt Init */
  22.     HAL_NVIC_SetPriority(USART1_IRQn, 3, 0);
  23.     HAL_NVIC_EnableIRQ(USART1_IRQn);
  24. //            SET_BIT(USART1->ICR, USART_ICR_TCCF);   /* ȥԽTCע̍ΪԉҪ־ */
  25. //    SET_BIT(USART1->RQR, USART_RQR_RXFRQ);  /* ȥԽRXNEޓ˕Ҫ־ */
  26. //    SET_BIT(USART1->CR1, USART_CR1_RXNEIE); /* ʹŜPE. RXޓ˜א׏ */
  27.   /* USER CODE BEGIN USART1_MspInit 1 */

  28.   /* USER CODE END USART1_MspInit 1 */
  29.   }
  30.   else if(uartHandle->Instance==USART2)
  31.   {
  32.   /* USER CODE BEGIN USART2_MspInit 0 */

  33.   /* USER CODE END USART2_MspInit 0 */
  34.     /* USART2 clock enable */
  35.     __HAL_RCC_USART2_CLK_ENABLE();

  36.     __HAL_RCC_GPIOA_CLK_ENABLE();
  37.     /**USART2 GPIO Configuration   
  38.     PA2     ------> USART2_TX
  39.     PA3     ------> USART2_RX
  40.     */
  41.     GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3;
  42.     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  43.     GPIO_InitStruct.Pull = GPIO_NOPULL;
  44.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  45.     GPIO_InitStruct.Alternate = GPIO_AF4_USART2;
  46.     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

  47.     /* USART2 interrupt Init */
  48.     HAL_NVIC_SetPriority(USART2_IRQn, 3, 0);
  49.     HAL_NVIC_EnableIRQ(USART2_IRQn);
  50.   /* USER CODE BEGIN USART2_MspInit 1 */

  51.     SET_BIT(USART2->ICR, USART_ICR_TCCF);   /* 清除TC发送完成标志*/
  52.     SET_BIT(USART2->RQR, USART_RQR_RXFRQ);  /*־清除RXNE接收标志*/
  53.     SET_BIT(USART2->CR1, USART_CR1_RXNEIE); /* 使能PERX接收中断*/

  54.   /* USER CODE END USART2_MspInit 1 */
  55.   }
  56. }
复制代码



97PJUYPAGE[G~YJ6PJ0C`OX.png
收藏 评论0 发布时间:2021-11-18 22:00

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版