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