UART_IT 请问以下USART各个中断是按照什么规律定义的呢 ,也就是如何和16位数字对应的,谢谢!

2019-07-21 04:24发布

   #define USART_IT_PE                          ((uint16_t)0x0028) #define USART_IT_TXE                         ((uint16_t)0x0727) #define USART_IT_TC                          ((uint16_t)0x0626) #define USART_IT_RXNE                        ((uint16_t)0x0525) #define USART_IT_IDLE                        ((uint16_t)0x0424) #define USART_IT_LBD                         ((uint16_t)0x0846) #define USART_IT_CTS                         ((uint16_t)0x096A) #define USART_IT_ERR                         ((uint16_t)0x0060) #define USART_IT_ORE                         ((uint16_t)0x0360) #define USART_IT_NE                          ((uint16_t)0x0260) #define USART_IT_FE                          ((uint16_t)0x0160)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
飘逸心晴
2019-07-21 18:46
殷子 发表于 2016-4-24 22:03
原子哥,我刚入门,我想问你个问题啊,
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //接收 ...

在库函数里面是有关于RESET的定义的。

typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus;

RESET的值是0,SET的值是非0(可以理解为1)

在数据接收完毕的时候,会把寄存器某一位置为1然后发生中断。于是我们就在中断里面查询这个位的值,如果是1(也就是 不等于RESET),则说明发生的中断,是由接收数据引起的。

一周热门 更多>