標(biāo)題: Proteus全網(wǎng)首次實(shí)現(xiàn)STMF103串口仿真 [打印本頁]

作者: bushhu    時(shí)間: 2019-4-9 15:19
標(biāo)題: Proteus全網(wǎng)首次實(shí)現(xiàn)STMF103串口仿真
特別說明:由于Proteus的STM32F103仿真模型,在讀取串口的輸入數(shù)據(jù)時(shí),只能正確讀取第1個(gè)字符,所以我特地在main()函數(shù)中加入switch語句做判斷處理。


完整代碼如下:
#include "sys.h"
#include "usart.h"  
#include "delay.h"
#include "led.h"
#include "key.h"
//串口實(shí)驗(yàn)   
int main(void)
{   
u8 t;
u8 len;
u16 times=0;  
Stm32_Clock_Init(9); //系統(tǒng)時(shí)鐘設(shè)置
delay_init(72);      //延時(shí)初始化
uart_init(72,9600);  //串口初始化為9600
LED_Init();      //初始化與LED連接的硬件接口   
while(1)
{
  #define Proteus_SIM  1  //1使能Proteus仿真;0禁止Proteus仿真
  switch(Proteus_SIM)
  {
   case 1://Proteus仿真
    if(USART_RX_STA>0)
    {
     printf("\r\n您發(fā)送的消息為:\r\n");
     for(t=0;t<1;t++)//Proteus的STM32F103仿真模型只能正確接收第一個(gè)字符
     {
      USART1->DR=USART_RX_BUF[t];
      while((USART1->SR&0X40)==0);//等待發(fā)送結(jié)束
     }
     printf("\r\nProteus的STM32F103仿真模型只能正確接收第一個(gè)字符\r\n\r\n");//插入換行
     USART_RX_STA=0;
    }
    times++;
    if(times%5000==0)
    {
     printf("\r\nALIENTEK MiniSTM32開發(fā)板 串口實(shí)驗(yàn)\r\n");
     printf("正點(diǎn)原子@ALIENTEK\r\n\r\n\r\n");
    }
    if(times%200==0)printf("請輸入數(shù)據(jù),以回車鍵結(jié)束\r\n");  
    if(times%30==0)LED0=!LED0;//閃爍LED,提示系統(tǒng)正在運(yùn)行.
    delay_ms(10);      
    break;
   case 0://正點(diǎn)原子Mini板實(shí)物運(yùn)行
    if(USART_RX_STA&0x8000)
    {        
     len=USART_RX_STA&0x3fff;//得到此次接收到的數(shù)據(jù)長度
     printf("\r\n您發(fā)送的消息為:\r\n");
     for(t=0;t<len;t++)
     {
      USART1->DR=USART_RX_BUF[t];
      while((USART1->SR&0X40)==0);//等待發(fā)送結(jié)束
     }
     printf("\r\n\r\n");//插入換行
     USART_RX_STA=0;
    }
    else
    {
     times++;
     if(times%5000==0)
     {
      printf("\r\nALIENTEK MiniSTM32開發(fā)板 串口實(shí)驗(yàn)\r\n");
      printf("正點(diǎn)原子@ALIENTEK\r\n\r\n\r\n");
     }
     if(times%200==0)printf("請輸入數(shù)據(jù),以回車鍵結(jié)束\r\n");  
     if(times%30==0)LED0=!LED0;//閃爍LED,提示系統(tǒng)正在運(yùn)行.
     delay_ms(10);   
    }   
    break;
   }
}  
}

全部資料51hei下載地址:
STM32F103_USART1_Proteus8.7.zip (8.68 MB, 下載次數(shù): 275)

作者: easyming    時(shí)間: 2019-5-8 16:29
點(diǎn)個(gè)贊,學(xué)習(xí)啦。!
作者: jcz_100    時(shí)間: 2019-6-5 10:15
謝謝分享,學(xué)習(xí)了
作者: tianma    時(shí)間: 2019-11-30 13:36
stm32串口仿真一直在調(diào)試,感謝分享,多謝。!
作者: 哎喲喂17    時(shí)間: 2019-12-31 17:27
請問能不能發(fā)個(gè)proteus的硬件電路截圖呀??因?yàn)槲抑挥?.6版本的,打不開!感謝。。!
作者: linshifaa    時(shí)間: 2019-12-31 22:00
帥氣
作者: 888888888888899    時(shí)間: 2020-2-29 15:29
Proteus文件打不開,Keil程序也打不開,有種懷疑?
作者: hj08102    時(shí)間: 2020-3-9 10:22
感謝分享,下載學(xué)習(xí)下
作者: lianxiwang    時(shí)間: 2020-3-9 20:09
看了一下 代碼 軟件品質(zhì)一般
作者: asm555    時(shí)間: 2020-3-10 13:08
正好拿來學(xué)習(xí)一下
作者: yubo2007    時(shí)間: 2020-4-8 19:48
謝謝分享,學(xué)習(xí)了
作者: 777451    時(shí)間: 2020-4-8 21:37
大佬有沒有硬件圖啊學(xué)習(xí)一下
作者: cndeusa    時(shí)間: 2020-5-9 21:40
Proteus仿真STM32串口時(shí),發(fā)送端發(fā)送字符串時(shí),字符串必須按字符逐個(gè)發(fā)送,每個(gè)字符之間用空for循環(huán)插入一點(diǎn)延時(shí),類似于做簡單的發(fā)送流控制,就可以正常接收了
作者: nmgbtzyf    時(shí)間: 2020-7-17 15:56
你portues用哪個(gè)版本做的?  我用的是8.7。不管是他原來自帶的例子,還是我從網(wǎng)上下載的例子。  能見總是能突然閃退。  祝你這個(gè)例子卻沒有這樣現(xiàn)象一直不會(huì)自動(dòng)關(guān)閉的。是解決了我很大的問題。你想問問你,你是哪個(gè)版本的,能不能介紹給我一下?
作者: 花高價(jià)h    時(shí)間: 2022-6-5 16:23
樓主解開我多年的困惑
作者: mick32    時(shí)間: 2022-6-6 01:59
if you need snapshot...

Snapshot.jpg (245.31 KB, 下載次數(shù): 89)

Snapshot.jpg





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