• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

刚进入中断应该怎么处理一些标志位?

huihui163 2019-04-19 浏览量:413
if (USART_GetFlagStatus(USART1 USART_FLAG_ORE) != RESET) 
{
USART_ReceiveData(USART1);

}

这是啥意思

应该有哪些清楚标志位的语句 网上说的啥都有

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 你这个中断是不是有问题?

    void KZ_USART_IRQHandler(void)
    {
        uint8_t temp;
        if(USART_GetITStatus(KZ_USARTxUSART_IT_RXNE)!=RESET)
        {
            temp = USART_ReceiveData(KZ_USARTx);
            USART4_BUFF[USART4_Num]  = temp;
           USART_SendData(macUSARTxtemp);   
            USART4_Num++;
            if(USART4_Num>=100)
            {
                    USART4_Num = 0;
            }
        }
    }



    • 发布于 2019-04-19
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:4
  • 这个是串口缓存溢出中断,告诉你中断缓存的数据满了,需要读取数据才能恢复正常,所以第二句就是读取数据的意思
    • 发布于2019-04-19
    • 举报
    • 评论 0
    • 0
    • 0

  • 单片机在初始化的时候会打开中断,然后当终端来临时进入中断服务函数,这个时候会产生一个标志,如果不清除这个标志那么就没法再次进入,所以在服务函数里重新调用中断打开那个语句也就相当于清除标志位了
    • 发布于2019-04-19
    • 举报
    • 评论 0
    • 0
    • 0

  • 进入中断先判断是哪个中断被响应了,毕竟很多中断是同一个中断函数

    结束时需要清除中断标志(部分会自动清除标志),你的程序里没有写

    • 发布于2019-04-19
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个ORE是个溢出标志位来的,出现这个标志,说明至少有一次数据丢失,这个标志位需要通过将DR寄存器里面的数据读走来清除,没有专门清除的语句

    然后串口的DR寄存器是用来保存接收到的数据,RXNE是个是否有数据的标志位

    • 发布于2019-04-21
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

刚进入中断应该怎么处理一些标志位?