中级会员
 
- 积分
- 328
- 金钱
- 328
- 注册时间
- 2018-8-2
- 在线时间
- 170 小时
|
里面还是会有点BUG存在,只是确保功能正常。当i>=数组长度时的数据处理还没写好。有空再处理一下!
- void USART1_IRQHandler(void)
- {
- u8 Res;
- static u8 i=0;
- static u8 flag=0;
- if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断(接收到的数据必须是0x0d 0x0a结尾)
- {
- if(flag==1) //下一次接收时能清楚上一次的BUF
- {
- memset(USART_RX_BUF,0,USART_REC_LEN);
- flag=0;
- }
- if(flag==0)
- {
- Res=USART_ReceiveData(USART1); //读取接收到的数据
- if(i<USART_REC_LEN)
- {
- USART_RX_BUF[i]=Res;
- i++;
- }
- else
- {
- printf("接收溢出,请重新输入");
- }
- }
-
- }
- else if(USART_GetITStatus(USART1,USART_IT_IDLE ) != RESET)//空闲中断,判断接收什么时候结束使其可以按时接收第二帧数据
- {
- USART1->ICR |= 1<<4; // 清除中断
- i=0;
- flag=1;
- }
- USART_ClearFlag(USART1,USART_FLAG_TC);
-
- }
复制代码
|
|