你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM8 使用串口接收中断 时 用不用 清标志位?

[复制链接]
su-409464 提问时间:2015-10-15 17:52 /
请问大家 串口 使用  接收中断的模式。
接收完数据之后, 用不用清 标志位  什么的 ???


我试过  中断中  没做清除标志位的动作,  但是一直都有效?
请问  STM8  串口接收中断   是不用清除标志位的是吧
@far @interrupt void UART1_RX_IRQHandler(void)
{  
    UART1_SendData8(UART1_ReceiveData8());
    return;
}

收藏 1 评论6 发布时间:2015-10-15 17:52

举报

6个回答
M≠0 回答时间:2015-10-18 11:51:38
su-409464 发表于 2015-10-17 10:12
奇怪,我用到是接收中断, 也没有清中断标志, 实际运行没有问题!

stm8s是自动清除 ,stm8l进入中断就要手动清除中断标志
小小超 回答时间:2015-10-17 08:16:26
要清中断标志位。不然老进入中断~
M≠0 回答时间:2015-10-17 09:58:52
要手动清一下吧
su-409464 回答时间:2015-10-17 10:11:30
ts2000 发表于 2015-10-17 08:16
要清中断标志位。不然老进入中断~

奇怪, 我的怎么不会!》》》

我的串口初始化如下:

        UART2_DeInit();//复位UART1
        UART2_Init((uint32_t)115200, UART2_WORDLENGTH_8D,UART2_STOPBITS_1, UART2_PARITY_NO,
              UART2_SYNCMODE_CLOCK_DISABLE, UART2_MODE_TXRX_ENABLE);
  
        UART2_ITConfig(UART2_IT_RXNE,ENABLE);//配置串口1的接收中断
        UART2_Cmd(ENABLE);

主函数中:

        while (1)
  {
               
                if(WIFI_RX)
                {
                    UART2_SendData8(SBUF);
                }       
}


串口结束中断 处理:
@far @interrupt void UART2_RX_IRQHandler(void)
{  
       
        SBUF = UART2_ReceiveData8(); //接收一个字节到缓存区
        WIFI_RX = TRUE; // 成功接收一个字节
       
        return;
}

然后 运行的时候 也很正常!


电脑发一个数到STM8  ,STM8 就返回去给电脑!

也不会出现什么重复中断 什么的问题,  

我用到是接收中断。  也没有请中断标志  什么的操作!!!!
su-409464 回答时间:2015-10-17 10:12:19
M≠0 发表于 2015-10-17 09:58
要手动清一下吧

奇怪,我用到是接收中断, 也没有清中断标志, 实际运行没有问题!

Aaron-354694 回答时间:2017-2-10 22:45:10
接收中断后读数据寄存器就会清零标志位。发数据不太一样,有两种中断方式,具体看数据表
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版