打印

STM32的串口接收中断接收一个字节后,接收中断使能就被清除,无法进入中断

[复制链接]
203|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
丑帅丑帅的|  楼主 | 2018-8-4 08:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
采用HAL库,调试串口中断接收数据时发现,STM32的串口接收中断在接收一个字节后,接收中断使能位就会被自动清除,再有新的数据就无法进入中断,无法正常接收数据,想请教各位是什么情况导致的?

初始化代码如下:
/* 配置Tx引脚为复用功能  */
GPIO_InitStruct.Pin = GPIO_PIN_9;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
               
/* 配置Rx引脚为复用功能 */
GPIO_InitStruct.Pin = GPIO_PIN_10;
GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

/*串口1中断初始化 */
HAL_NVIC_SetPriority(USART1_IRQn, 1, 0);
HAL_NVIC_EnableIRQ(USART1_IRQn);

__HAL_UART_ENABLE_IT(&UartCtrlHandle,UART_IT_RXNE);


中断处理如下:
if (__HAL_UART_GET_IT( &UartCtrlHandle, UART_IT_RXNE ) != RESET)
{
        HAL_UART_Receive(&UartCtrlHandle, &rx_dat, 1, 1000);

        HAL_UART_IRQHandler(&UartCtrlHandle);
}

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

741

主题

742

帖子

0

粉丝