串口1的引脚为RX-PA9,TX-PA10 所以GPIO端口时钟使能的是GPIOA。RCC_APB2PeriphClockCmd(RCC_APB2...
USART1_IRQHandler的理解
if(USART_RX_STA&0x4000) USART_RX_STA的第14位仍然是0,所以这个判断不成立,所以会执行下面这句话 if(Res==0x0d) 当然这个判断也不成立,所以要执行下面这句话 USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;计算出接收的是第几个字符,然后装到缓存里面 USART_RX_STA++;加1表明已经接收好了几个数据原文链...
uint16_t USART_RX_STA=0;//主函数 int main(void){uint8_t i;NVIC_PriorityGroupConfig(NVIC_...
if(USART_RX_STA&0x4000)//接收到了0x0d { if(Res!=0x0a)USART_RX_STA=0;//接收错误,重新开始 else USART_RX_STA|=0x8000; //接收完成了 } else //还没收到0X0D { if(Res==0x0d)USART_RX_STA|=0x4000; else { USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ; ...
62 return ((int)(USART1->DR & 0x1FF));63} 64*/ 65 66#if EN_USART1_RX //如果使能了接收 67//串⼝1中断服务程序 68//注意,读取USARTx->SR能避免莫名其妙的错误 69 u8 USART_RX_BUF[USART_REC_LEN]; //接收缓冲,最⼤USART_REC_LEN个字节.70//接收状态 71//bit15,接收完成标...
//变量USART_RX_STA最高位还是0,即接收未完成 { if(USART_RX_STA&0x4000) //变量USART_RX_STA的位14是1,和0x4000位与结果是1,则接收到了0x0d { if(Res!=0x0a)USART_RX_STA=0; //上次接收的字节是0x0d,而这次接收到的字节却不是0x0d,那么接收错误,重新开始 ...
else //?1??ê?μ?0X0D ???{? ???if(Res==0x0d)USART_RX_STA|=0x4000; ???else ???{ ???USART_RX_BUF[USART_RX_STA0X3FFF]=Res ; ???USART_RX_STA++; ???if(USART_RX_STA(USART_REC_LEN-1))USART_RX_STA=0;//?óê?êy?Y′í?ó,??D??aê??óê??? ???}?? ???}...
读取USARTx->SR能避免莫名其妙的错误69u8 USART_RX_BUF[USART_REC_LEN];//接收缓冲,最大USART_REC_LEN个字节.70//接收状态71//bit15, 接收完成标志72//bit14, 接收到0x0d73//bit13~0, 接收到的有效字节数目74u16 USART_RX_STA=0;//接收状态标记7576voiduart_init(u32 bound){77//GPIO端口设置78...
= 0 ;receive_buffer = U1RXREG ; if (i ==1) {if (receive_buffer[1] == 0x03 && svmuwer2019-04-17 13:17:12 I2C不工作是MCC问题吗? 不完全肯定。这是MCC为PixMealth.C生成的(注意,我使用RC1作为SCL和RC2和SDA)LATA= 0x06;TrISA=0x3f;ANSELA=0x10;WPUA= 0x00 ...