STM32
直播中

李郝荫

7年用户 1327经验值
私信 关注
[问答]

请问串口中断收发只进入一次是为什么?怎么解决?

请问串口中断收发只进入一次是为什么?怎么解决?

回帖(1)

张琛根

2021-11-22 14:36:41
环境:使用STR912FAW44芯片,用MAX487将UART转成485信号与上位机联接。欲实现功能是:当从串口调试助手发一个数,进入串口中断后,返回1~10十个数。
问题:程序烧进芯片后,第一次可以正常实现,但后续就无法再进入中断了。用硬件仿真模式观察发现第一次发完了数已经跳出中断回到main函数,再发数就不再进入中断了。
解决:各个功能都正常,但进入中断后“清除中断标志位”,发送完成标志位等待也都正常配置。最终是试验了将串口助手发出的数给从中断里发回来,发现正常,但屏蔽发原数的语句后,在中断里发送连续1~10个数,只能实现一次。通过试验,发现必须加入语句读取串口助手的数据,程序成功。
STR912的库函数里的清除中断标志的语句是个虚假的语句,并没有真正清除中断标志,只有读出串口助手发送的数据,才能真的清除中断标志,第n次发送数据都可以正常回复数据。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分