STM32F030首次使用的异常过程"USART"
由于芯片价格问题,使用STM8S的老项目需要移植至STM32F030,在此分享一下移植过程中产生的问题。
- STM8S使用5V供电,STM32F030使用3.3V供电,在接口上需要做好电平转换
- 软件移植使用CubeMX 配置,HAL库文件,过程很顺利,但在老化测试过程中,串口会出现卡死(串口为IDLE+DMA)。修改为普通 接收中断,串口异常处理中添加ORE等标识处理,并尝试降低通讯速率,仍不能解决问题,串口依旧卡死。最后针对串口驱动使用 LL库,开启接收中断,在中断函数中使用下面代码
LL_USART_IsEnabledIT_RXNE(USART1);
xtUart1.clear_time=1;
if(xtUart1.RxLen<255)
{
xtUart1.RxBuf[xtUart1.RxLen++]=LL_USART_ReceiveData8(USART1);
}
else
{
LL_USART_ReceiveData8(USART1);
debug.connect_error|=0x02;
}
LL_USART_EnableIT_RXNE(USART1);
串口无视异常,数据正确性需要软件内自行判断。
- 在FLASH存储前需要关闭总中断,为避免开启中断后,中断发生异常,建议在 总中断关闭与开启 前,先处理串口中断
LL_USART_Disable(USART1);
__disable_irq();
LL_USART_Enable(USART1);
__enable_irq();
|