STM8S单片机串口UART2接收中断一直在运行,出不来,怎么回事?
答案:3 悬赏:60 手机版
解决时间 2021-03-26 18:20
- 提问者网友:那叫心脏的地方装的都是你
- 2021-03-26 05:01
STM8S单片机串口UART2接收中断一直在运行,出不来,怎么回事?
最佳答案
- 五星知识达人网友:野味小生
- 2021-03-26 05:10
不知道你的uart_SendByte(REV);函数实现是不是等待发送完成才返回的,还是立即返回
如果是立即返回,那么后面的清除完标志之后,发送标志会在发送完成之后置位,然后会再进入中断,至于REV仍然存在数据1,大概是因为没有其它的操作覆盖掉数据。追问是等待发送完毕才回去的,那个中断也是接收中断,和发送没关系吧追答中断向量表是怎么配置的追问21号就是UART2接收寄存器数据满的中断追答中断函数是不是应该这样定义
void UART2_RX_IRQHandler(void)
{
u8 REV;
REV = UART2_ReceiveData8();
uart_SendByte(REV);
}追问不对,我用的是库函数,那个中断函数是库里的函数,没有错追答那我也不知道了,INTERRUPT_HANDLER不过是一个宏展开。
感觉还是发送中断的问题,你使能了发送中断,但是没有给发送中断做定义,而且发送中断向量刚好在接收中断之前
如果是立即返回,那么后面的清除完标志之后,发送标志会在发送完成之后置位,然后会再进入中断,至于REV仍然存在数据1,大概是因为没有其它的操作覆盖掉数据。追问是等待发送完毕才回去的,那个中断也是接收中断,和发送没关系吧追答中断向量表是怎么配置的追问21号就是UART2接收寄存器数据满的中断追答中断函数是不是应该这样定义
void UART2_RX_IRQHandler(void)
{
u8 REV;
REV = UART2_ReceiveData8();
uart_SendByte(REV);
}追问不对,我用的是库函数,那个中断函数是库里的函数,没有错追答那我也不知道了,INTERRUPT_HANDLER不过是一个宏展开。
感觉还是发送中断的问题,你使能了发送中断,但是没有给发送中断做定义,而且发送中断向量刚好在接收中断之前
全部回答
- 1楼网友:鸽屿
- 2021-03-26 07:22
楼主,我最近也遇到这个问题 请问你问题解决了么,能否说说怎么解决的?谢谢
- 2楼网友:鸽屿
- 2021-03-26 06:00
你的程序进入死循环了 你 发送数据前吧串口中断关闭 等数据发送完毕后在打开串口中断追问死循环和中断不冲突追答冲突 首先要检测是否收到数据 收到数据之后要将串口中断允许为(ES)清零 然后才能发送数据 若不关闭 就进入死循环追问这个不是51单片机,中断标志我在程序里已经清除了啊追答是在main()函数里面清除的标志位清零了吗追问中断程序里的最后一句追答发送数据的标志位
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯