STM8S单片机串口UART2接收中断一直在运行,出不来,怎么回事? 10

主函数intmain(void){ITC_DeInit();uart_init();ITC_SetSoftwarePriority(ITC_IRQ_UART2_RX,IT... 主函数
int main(void)
{
ITC_DeInit();
uart_init();
ITC_SetSoftwarePriority(ITC_IRQ_UART2_RX, ITC_PRIORITYLEVEL_2);
enableInterrupts(); /* 开启总中断 */
while (1);
}
中断函数
INTERRUPT_HANDLER(UART2_RX_IRQHandler, 21)
{
/* In order to detect unexpected events during development,
it is recommended to set a breakpoint on the following instruction.
*/
u8 REV;
REV = UART2_ReceiveData8();
uart_SendByte(REV);
UART2_ClearITPendingBit(UART2_IT_RXNE); //清中断标志
}
我用串口助手发一个1,就不停的接收1,这是怎么回事
void uart_init()
{
UART2_DeInit(); //可以不操作
UART2_Init((u32)600, UART2_WORDLENGTH_8D, UART2_STOPBITS_1,\
UART2_PARITY_NO, UART2_SYNCMODE_CLOCK_DISABLE, UART2_MODE_TXRX_ENABLE);
UART2_ITConfig(UART2_IT_RXNE_OR, ENABLE);
UART2_Cmd(ENABLE); //使能
}

void uart_SendByte(u8 data)
{
UART2_SendData8(data);
while(!UART2_GetFlagStatus(UART2_FLAG_TXE)); //等待发送完成
}
展开
 我来答
w3180121
2014-04-25 · 知道合伙人数码行家
w3180121
知道合伙人数码行家
采纳数:793 获赞数:2403
单片机 C语言 电脑 液晶 没有 证书 我们只是一个团队

向TA提问 私信TA
展开全部
你的程序进入死循环了 你 发送数据前吧串口中断关闭 等数据发送完毕后在打开串口中断
更多追问追答
追问
死循环和中断不冲突
追答
冲突  首先要检测是否收到数据 收到数据之后要将串口中断允许为(ES)清零 然后才能发送数据 若不关闭 就进入死循环
xzhw8608
推荐于2017-12-15 · TA获得超过1779个赞
知道小有建树答主
回答量:1074
采纳率:100%
帮助的人:576万
展开全部
不知道你的uart_SendByte(REV);函数实现是不是等待发送完成才返回的,还是立即返回
如果是立即返回,那么后面的清除完标志之后,发送标志会在发送完成之后置位,然后会再进入中断,至于REV仍然存在数据1,大概是因为没有其它的操作覆盖掉数据。
更多追问追答
追问
是等待发送完毕才回去的,那个中断也是接收中断,和发送没关系吧
追答
中断向量表是怎么配置的
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
颓废呗呗123
2014-07-11
知道答主
回答量:2
采纳率:0%
帮助的人:2672
展开全部
楼主,我最近也遇到这个问题 请问你问题解决了么,能否说说怎么解决的?谢谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式