在
STM32F10x_StdPeriph_Lib_V3.5.0中,stm32f10x_usart.h的第356行
#define IS_USART_CLEAR_FLAG(FLAG) ((((FLAG) & (uint16_t)0xFC9F) == 0x00) && ((FLAG) != (uint16_t)0x00))
来判断串口的一些标志位参数是否正确,而Flags定义如下
#define USART_FLAG_CTS ((uint16_t)0x0200)
#define USART_FLAG_LBD ((uint16_t)0x0100)
#define USART_FLAG_TXE ((uint16_t)0x0080)
#define USART_FLAG_TC ((uint16_t)0x0040)
#define USART_FLAG_RXNE ((uint16_t)0x0020)
#define USART_FLAG_IDLE ((uint16_t)0x0010)
#define USART_FLAG_ORE ((uint16_t)0x0008)
#define USART_FLAG_NE ((uint16_t)0x0004)
#define USART_FLAG_FE ((uint16_t)0x0002)
#define USART_FLAG_PE ((uint16_t)0x0001)
大家看一下第356行是不是错了,比如USART_FLAG_TXE& (uint16_t)0xFC9F 结果不为0,IS_USART_CLEAR_FLAG(FLAG)为假
你这句话真是错了,IS_USART_CLEAR_FLAG(FLAG)是用在断言里的,和清标志没有关系
你是不是不知道什么是断言?去看一看代码里IS_USART_CLEAR_FLAG(FLAG)是用来干什么的吧
一周热门 更多>