找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2216|回复: 3
打印 上一主题 下一主题
收起左侧

STM32串口通信Proteus8.13仿真程序例子

[复制链接]
跳转到指定楼层
楼主
ID:479650 发表于 2022-5-16 13:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是某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, 下载次数: 149)

评分

参与人数 1黑币 +10 收起 理由
admin + 10 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:123925 发表于 2022-9-7 12:42 | 只看该作者
怎么是乱码!
回复

使用道具 举报

板凳
ID:97349 发表于 2024-3-27 22:41 | 只看该作者
直接元器件主频设置为72M 虚拟串口9600 可以用
回复

使用道具 举报

地板
ID:1074206 发表于 2024-3-29 17:46 | 只看该作者
还可以,但是能不能改一个 C8T6版本
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表