中级会员
 
- 积分
- 280
- 金钱
- 280
- 注册时间
- 2015-6-11
- 在线时间
- 56 小时
|
发表于 2017-1-13 10:51:06
|
显示全部楼层
因为定义中是这样的
if ((USARTx->SR & USART_FLAG) != (uint16_t)RESET)
{
bitstatus = SET;
}
else
{
bitstatus = RESET;
}
typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus;
SET 不一定 等于1
while(USART_GetFlagStatus(USART2,USART_FLAG_RXNE)!=1);//等待接受标志位置1
收到数据后USART_GetFlagStatus(USART2,USART_FLAG_RXNE)=SET
相当于USART_GetFlagStatus(USART2,USART_FLAG_RXNE)!=0
所以USART_GetFlagStatus(USART2,USART_FLAG_RXNE)!=1 不一定成立
你改成
while(USART_GetFlagStatus(USART2,USART_FLAG_RXNE)==0);试试,我也是猜测 |
|