STM32G030 串口中断
在使用串口时数据发送完毕 将串口设置为外部中断,然后MCU进入停止模式。在触发外部唤醒后,进入外部触发中断 ,再次初始化串口后,再接收串口数据时,不能再次进入串口中断。这是什么原因。串口初始化
MX_USART2_UART_Init();
HAL_UART_Receive_IT(&huart2, (uint8_t *)&aRxBuffer, 1);//串口中断
......数据发送接收完成
MX_GPIOA3_INIT();// 串口RX 重新配置为中断引脚
HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON,PWR_SLEEPENTRY_WFI); //进入低功耗STOP模式
SystemClock_Config();
MX_USART2_UART_Init();
__HAL_UART_ENABLE(&huart2);//串口中断使能
...... 后续串口不能产生中断
这个思路是很巧妙的。
不过有个时序问题需要考量,就是起始信号唤醒MCU后,这时时钟启动需要一定的时间,然后运行串口配置的代码也要一定时间(注意时钟源的选择,选错了的话波特率会不对)
此时START 信号已经执行了一段时间,甚至到了数据段,很大概率不能收到第一帧数据。
首先确认一下,程序是否唤醒。从理论上说应该没有问题,再就是测试发送是否能够正常发送。正常如果使用HAL库,应该要调用中断接收的缓冲区。
页:
[1]