標(biāo)題: STM32串口通信Proteus8.13仿真程序例子 [打印本頁(yè)]

作者: wenzhong77    時(shí)間: 2022-5-16 13:59
標(biāo)題: STM32串口通信Proteus8.13仿真程序例子
這是某STM32教材串口寄存器編程的例子,要在教材配套的實(shí)驗(yàn)版上驗(yàn)證功能,我把程序修改了一下能用proteus里虛擬端口仿真。如果用VSPD驅(qū)動(dòng),還能用SSCOM等串口調(diào)試工具查看串口通信內(nèi)容。

串口仿真


串口調(diào)試仿真


單片機(jī)源程序如下:
  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); //系統(tǒng)時(shí)鐘設(shè)置
  12.         delay_init(72);             //延時(shí)初始化
  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;//得到此次接收到的數(shù)據(jù)長(zhǎng)度

  26.                         for(t=0;t<len;t++)
  27.                         {
  28.                                 USART1->DR=USART_RX_BUF[t];
  29.                                 while((USART1->SR&0X40)==0);//等待發(fā)送結(jié)束
  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("嵌入式技術(shù)與應(yīng)用開(kāi)發(fā)項(xiàng)目教程(STM32版)\r\n\r\n");
  41.                         }
  42.                         if(times%200==0)
  43.                                 printf("請(qǐng)輸入數(shù)據(jù),以回車(chē)鍵結(jié)束\n");  
  44.                         if(times%30==0)
  45.                                 LED0=!LED0;//閃爍LED,提示系統(tǒng)正在運(yùn)行.
  46.                         delay_ms(10);
  47.                 }

  48.         }         
  49. }
復(fù)制代碼

Keil5代碼與Proteus8.13仿真下載(其他版本無(wú)法打開(kāi)的,只能用8.13的Proteus):
STM32串口通信.7z (328.57 KB, 下載次數(shù): 170)

作者: cq_guohu    時(shí)間: 2022-9-7 12:42
怎么是亂碼!
作者: inaosan    時(shí)間: 2024-3-27 22:41
直接元器件主頻設(shè)置為72M 虛擬串口9600 可以用
作者: kk17328    時(shí)間: 2024-3-29 17:46
還可以,但是能不能改一個(gè) C8T6版本




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1