高级会员

- 积分
- 612
- 金钱
- 612
- 注册时间
- 2016-6-7
- 在线时间
- 59 小时
|
3金钱
如题:基于HAL库,STM32F0芯片通信过程中更改通信波特率,串口重启函数会挂掉!不知道问题出在哪里。。。
串口的初始化函数,是自动生成的,包括DMA配置、USART2配置,以及
HAL_UART_Receive_DMA(&huart2, UsartType.RX_pData, RX_LEN); //开启串口DMA接收
__HAL_UART_ENABLE_IT(&huart2, UART_IT_IDLE); //开启串口接收空闲中断
正常上电初始化流程没有任何问题,通信可以以配置的9600波特率跑起来。
但是使用通信报文更换通信波特率后,然后将串口初始化函数重新调用了一遍,
然后,就导致程序挂掉了,仿真显示进入了硬件错误:
void HardFault_Handler(void)
{}
不知道这到底是怎么回事!!
应该如何在程序运行过程中重启一个外设呢??
|
最佳答案
查看完整内容[请看2#楼]
差不多找到原因了,是DMA缓冲区的数据不管用不用,中断后都要清空,然后再开启接收。尤其是第一个字节。不然就会一直进中断,程序就死了。
|