su-409464 发表于 2015-10-15 17:52:13

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

请问大家 串口 使用接收中断的模式。
接收完数据之后, 用不用清 标志位什么的 ???


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

M≠0 发表于 2015-10-18 11:51:38

su-409464 发表于 2015-10-17 10:12
奇怪,我用到是接收中断, 也没有清中断标志, 实际运行没有问题!

stm8s是自动清除 ,stm8l进入中断就要手动清除中断标志

ts2000 发表于 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

接收中断后读数据寄存器就会清零标志位。发数据不太一样,有两种中断方式,具体看数据表
页: [1]
查看完整版本: STM8 使用串口接收中断 时 用不用 清标志位?