这是某STM32教材串口寄存器编程的例子,要在教材配套的实验版上验证功能,我把程序修改了一下能用proteus里虚拟端口仿真。如果用VSPD驱动,还能用SSCOM等串口调试工具查看串口通信内容。
串口仿真
串口调试仿真
单片机源程序如下:
- #include <stm32f10x.h>
- #include "sys.h"
- #include "usart.h"
- #include "delay.h"
- #include "led.h"
- int main(void)
- {
- u8 t;
- u8 len;
- u16 times=0;
- Stm32_Clock_Init(9); //系统时钟设置
- delay_init(72); //延时初始化
- // uart_init(72,9600);//串口初始化为115200
- uart_init(72,9600);
- LED_Init(); //初始化与LED连接的硬件接口
- while(1)
- {
- if(USART_RX_STA&0x80)
- {
- if(USART_RX_BUF[0]=='d'){
-
- LED1=!LED1;
- }
-
- len=USART_RX_STA&0x3f;//得到此次接收到的数据长度
- for(t=0;t<len;t++)
- {
- USART1->DR=USART_RX_BUF[t];
- while((USART1->SR&0X40)==0);//等待发送结束
- }
- printf("\n\n");//插入换行
- USART_RX_STA=0;
- }
- else
- {
- times++;
- if(times%2000==0)
- {
- printf("\r\nSTM32核心板串口通信\r\n");
- printf("嵌入式技术与应用开发项目教程(STM32版)\r\n\r\n");
- }
- if(times%200==0)
- printf("请输入数据,以回车键结束\n");
- if(times%30==0)
- LED0=!LED0;//闪烁LED,提示系统正在运行.
- delay_ms(10);
- }
- }
- }
复制代码
Keil5代码与Proteus8.13仿真下载(其他版本无法打开的,只能用8.13的Proteus):
STM32串口通信.7z
(328.57 KB, 下载次数: 170)
|