全球首发,全网最快,全球第一个用Proteus8.8软件仿真stm32f401芯片实现串口通信(寄存器版)
使用寄存器实现,没有bug
库函数有bug,可以发送后但是无法接收,接收乱码
本人时间精力有限,希望高手能够解决bug
实验现象:
本实验,STM32通过串口1和上位机对话,STM32在收到上位机发过来的字符串(以回车换行结束)后,原原本本的返回给上位机。下载后,DS0闪烁,提示程序在运行,同时每隔 一定时间,通过串口1输出一段信息到电脑。
注:调试需安装虚拟串口
单片机源程序如下:
- #include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #include "led.h"
- int main(void)
- {
- u8 t;
- u8 len;
- u16 times=0;
- Stm32_Clock_Init(168,8,2,7);//设置时钟,84Mhz
- delay_init(84); //延时初始化
- uart_init(42,9600); //串口初始化为115200
- LED_Init(); //初始化与LED连接的硬件接口
- while(1)
- {
- if(USART_RX_STA&0x8000)
- {
- len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
- printf("\r\n您发送的消息为:\r\n");
- for(t=0;t<len+1;t++)
- {
- USART1->DR=USART_RX_BUF[t];
- while((USART1->SR&0X40)==0);//等待发送结束
- }
- printf("\r\n\r\n");//插入换行
- USART_RX_STA=0;
- }else
- {
- times++;
- if(times%200==0)printf("请输入数据,以回车键结束\r\n");
- if(times%30==0)LED0=!LED0;//闪烁LED,提示系统正在运行.
- delay_ms(10);
- }
- }
- }
复制代码
所有资料51hei提供下载:
proteus stm32f401 实现串口通信.7z
(110.09 KB, 下载次数: 479)
|