STM32-串口超时判断方式接收未知长度数据
来源:互联网 发布:无线键盘 游戏 知乎 编辑:程序博客网 时间:2024/05/16 06:24
usart.c串口中断处理函数:
u8 USART_RX_BUF[64]; //接收缓冲,最大64个字节. u8 res=0; u8 i=0,Rec_Len; //Rec_Len为接收到的字符个数 u8 Rec_Over_Flag=0; u8 RxTimeout=3; //串口接收超时; void USART1_IRQHandler(void) { if(USART1->SR&(1<<5))//接收到数据 { if(RxTimeout==0) { Rec_Len=i; i=0; Rec_Over_Flag=1; } RxTimeout=3; //定时器每隔10ms中断一次,3次的时间为30ms,超过30ms无数据发送就认定该次发送结束 USART_RX_BUF[i++]=USART1->DR; } }
timer.c定时器中断函数
void TIM3_IRQHandler(void) { if(TIM3->SR&0X0001)//溢出中断 { if(RxTimeout>0) { RxTimeout--; if(RxTimeout==0) LED1=!LED1; //RxTimeout等于0,变换LED1表明该次发送结束 } } TIM3->SR&=~(1<<0);//清除中断标志位 }
main.c主函数
int main(void) { u8 t; u8 len; extern u8 i,Rec_Len,Rec_Over_Flag; u8 Password[7]="123456"; u8 Tishi1[]="操作码长度不对"; u8 Tishi2[]="操作码不正确"; u8 Tishi3[]="指令成功执行!"; u16 times=0; Stm32_Clock_Init(9); //系统时钟设置 delay_init(72); //延时初始化 uart_init(72,9600); //串口初始化为9600 LED_Init(); //初始化与LED连接的硬件接口 Timerx_Init(100,7199); //10kHz的技术频率,计数到100为10ms while(1) { if(Rec_Over_Flag==1) { len=Rec_Len;//得到此次接收到的数据长度 if(len!=0x06) { Putstrings(Tishi1); } else // len等于6 { for(t=0;t<len;t++) { if(USART_RX_BUF[t]!=Password[t]) { Putstrings(Tishi2); break; } else if(t==(len-1)) { Putstrings(Tishi3); LED0=!LED0; } } } Rec_Over_Flag=0; } else { times++; // if(times%30==0)LED1=!LED1;//闪烁LED,提示系统正在运行. // if(times%30==0)RxTimeout--; delay_ms(10); } } } //------------输出字符串到串口------------------- void Putstrings(u8 *ptr) { while(*ptr!='\0') { USART1->DR=*ptr++; while((USART1->SR&0X40)==0);//等待发送结束 } USART1->DR='\n'; }
- STM32-串口超时判断方式接收未知长度数据
- STM32-串口超时判断方式接收未知长度数据
- STM32-串口超时判断方式接收未知长度数据
- 关于STM32串口接收未知长度数据的网贴
- STM32 UART DMA实现未知数据长度接收
- STM32 串口DMA方式接收数据
- STM32 UART DMA实现未知数据长度接收(转自amoBBs)
- STM32实现USART+DMA接收未知长度的数据和发送
- STM32串口中断方式接收
- STM32 串口DMA方式接收
- STM32串口中断方式接收
- STM32的串口采用DMA方式接收数据测试
- STM32的串口采用DMA方式接收数据测试
- STM32的串口采用DMA方式接收数据测试
- STM32的串口采用DMA方式接收数据测试
- STM32的串口采用DMA方式接收数据测试
- STM32串口DMA方式接收数据,类似环形FIFO
- STM32串口中断接收方式详细比较
- (韩顺平视频)struts基本概念及其优缺点
- Deep learning:(Sparse Autoencoder)
- 学习排序 Learning to Rank 小结
- Oracle Linux 系统下载
- 算法导论-----插入排序
- STM32-串口超时判断方式接收未知长度数据
- 算法导论-----归并排序
- mymail开发
- CentOS rsync文件同步配置
- 基于Linux视频驱动接口V4L2视频采集编程
- Spring 注入静态变量 解决方案
- 在table 中控制单元格之间的间距
- [apk破解]apk打包解包3.0, 无广告, 无限积分
- 前端笔记(不定时更新)