标题: STM32串口通信Proteus8.13仿真程序例子 [打印本页]

作者: wenzhong77    时间: 2022-5-16 13:59
标题: STM32串口通信Proteus8.13仿真程序例子
这是某STM32教材串口寄存器编程的例子,要在教材配套的实验版上验证功能,我把程序修改了一下能用proteus里虚拟端口仿真。如果用VSPD驱动,还能用SSCOM等串口调试工具查看串口通信内容。

串口仿真


串口调试仿真


单片机源程序如下:
  1. #include <stm32f10x.h>
  2. #include "sys.h"
  3. #include "usart.h"               
  4. #include "delay.h"        
  5. #include "led.h"                  

  6. int main(void)
  7. {                        
  8.         u8 t;
  9.         u8 len;
  10.         u16 times=0;        
  11.         Stm32_Clock_Init(9); //系统时钟设置
  12.         delay_init(72);             //延时初始化
  13. //        uart_init(72,9600);//串口初始化为115200
  14.         uart_init(72,9600);
  15.         LED_Init();                           //初始化与LED连接的硬件接口   
  16.         while(1)
  17.         {
  18.                   if(USART_RX_STA&0x80)
  19.                 {               
  20.                          if(USART_RX_BUF[0]=='d'){
  21.                                  
  22.                                 LED1=!LED1;
  23.                          }
  24.                                           
  25.                         len=USART_RX_STA&0x3f;//得到此次接收到的数据长度

  26.                         for(t=0;t<len;t++)
  27.                         {
  28.                                 USART1->DR=USART_RX_BUF[t];
  29.                                 while((USART1->SR&0X40)==0);//等待发送结束
  30.                         }
  31.                         printf("\n\n");//插入换行
  32.                         USART_RX_STA=0;
  33.                 }
  34.                 else
  35.                 {
  36.                         times++;
  37.                         if(times%2000==0)
  38.                         {
  39.                                 printf("\r\nSTM32核心板串口通信\r\n");
  40.                                 printf("嵌入式技术与应用开发项目教程(STM32版)\r\n\r\n");
  41.                         }
  42.                         if(times%200==0)
  43.                                 printf("请输入数据,以回车键结束\n");  
  44.                         if(times%30==0)
  45.                                 LED0=!LED0;//闪烁LED,提示系统正在运行.
  46.                         delay_ms(10);
  47.                 }

  48.         }         
  49. }
复制代码

Keil5代码与Proteus8.13仿真下载(其他版本无法打开的,只能用8.13的Proteus):
STM32串口通信.7z (328.57 KB, 下载次数: 170)

作者: cq_guohu    时间: 2022-9-7 12:42
怎么是乱码!
作者: inaosan    时间: 2024-3-27 22:41
直接元器件主频设置为72M 虚拟串口9600 可以用
作者: kk17328    时间: 2024-3-29 17:46
还可以,但是能不能改一个 C8T6版本




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1