usart 串口的发送-接收数据(正点改编)
2017-03-10 21:29
423 查看
功能:上位机发送给mcu,mcu原原本本发送给上位机 **main关键代码** while(1) { if(flag==1) { len=usart_sta&0xffff;//接收数据长度,&0xffff 可以省略 for(t=0;t<len;t++) { Uart1_PutChar(usart_array[t]); } printf("\r\n"); flag=0; usart_sta=0; } else times++; if(times%30==0) LED0=!LED0; delay_ms(10); } **usart.h关键代码** #define usart_len 10 //定义最大接收字节数 extern u8 usart_array[usart_len]; //接收缓冲 extern u8 usart_sta; //接收n位的判断 extern u8 flag; //标志位 **usart.c关键代码** u8 usart_array[usart_len]; u8 flag=0; u8 usart_sta=0; void Uart1_PutChar(u8 ch) { USART_SendData(USART1,ch); while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET); } //USART_GetITStatus(USART1, USART_IT_RXNE) == SET void USART1_IRQHandler(void) //串口1中断服务程序,固定的函数名,在startup_stm32f10x_hd.s { u8 Res; if(USART_GetITStatus(USART1, USART_IT_RXNE) == SET) //接收中断 { Res=USART_ReceiveData(USART1); //读取接收到的数据 while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);//这个可有可无 if(flag==0)//标志位 { usart_array[usart_sta&0xffff]=Res;//按位存储,可以去掉&0xffff,加上方便理解 usart_sta++; if(usart_sta>usart_len)//设置数据存放数据的上限 { usart_sta=0; printf("\r\n输入错误\r\n"); } if(Res==0x0d)//判段是否收到回车键,回车键表示发送 { flag=1; } } } } USART设置步骤: 1.开启串口、GPIO时钟 2.串口引脚初始化(TX/RX) 3.NVIC配置(优先级/通道..) 4.USART初始化设置(波特率/字长/奇偶校验..) 5.开启串口的中断方式(TC/RXNE..) 6.使能串口 【7.中断处理函数】(函数名在startup_stm32f1010x_hd.s) 皇图霸业谈笑中,不胜今宵一场醉...
相关文章推荐
- 网关--串口接收数据转送到网口发送到PC机
- 异步串口模式发送和接收数据
- linux如何清空串口接收缓冲区和发送缓冲区数据
- STM32 USART 串口 DMA 接收和发送的源码详解!
- OSAL串口接收发送数据流程简介
- 51单片机中用中断方式实现串口数据发送与接收
- STM32F3使用USART串口DMA发送数据,使用蓝牙发送
- 51单片机串口接收和发送数据
- c# 串口发送接收数据
- 闪烁led来标志串口的接收与发送数据
- 求android 中串口的发送接收数据代码
- USART---串口发送数据
- s3c6410 s3c2440串口发送接收数据的实现(轮询)及相关寄存器
- STM8S003F使用IO口模拟串口(三)使用中断方式发送和接收数据
- linux多线程下打开串口发送和接收数据
- Qt中串口16进制发送和接收数据
- 关于php串口接收和发送数据的几点技巧
- C# UDP、串口的数据接收与发送
- win7串口可以发送数据无法接收数据
- [CC2530]串口接收发送数据