kekechon 发表于 2024-3-6 16:25:55

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);//串口中断使能

...... 后续串口不能产生中断

butterflyspring 发表于 2024-3-6 18:01:10

这个思路是很巧妙的。

不过有个时序问题需要考量,就是起始信号唤醒MCU后,这时时钟启动需要一定的时间,然后运行串口配置的代码也要一定时间(注意时钟源的选择,选错了的话波特率会不对)

此时START 信号已经执行了一段时间,甚至到了数据段,很大概率不能收到第一帧数据。

废鱼 发表于 2024-3-6 21:04:32

首先确认一下,程序是否唤醒。从理论上说应该没有问题,再就是测试发送是否能够正常发送。正常如果使用HAL库,应该要调用中断接收的缓冲区。
页: [1]
查看完整版本: STM32G030 串口中断