標(biāo)題: 全球首發(fā),全網(wǎng)最快,全世界第一個Proteus8.8仿真stm32f401實現(xiàn)串口通信(寄存器版) [打印本頁]

作者: happy87    時間: 2019-1-29 15:40
標(biāo)題: 全球首發(fā),全網(wǎng)最快,全世界第一個Proteus8.8仿真stm32f401實現(xiàn)串口通信(寄存器版)
全球首發(fā),全網(wǎng)最快,全球第一個用Proteus8.8軟件仿真stm32f401芯片實現(xiàn)串口通信(寄存器版)

使用寄存器實現(xiàn),沒有bug
庫函數(shù)有bug,可以發(fā)送后但是無法接收,接收亂碼
本人時間精力有限,希望高手能夠解決bug

實驗現(xiàn)象:
        本實驗,STM32通過串口1和上位機對話,STM32在收到上位機發(fā)過來的字符串(以回車換行結(jié)束)后,原原本本的返回給上位機。下載后,DS0閃爍,提示程序在運行,同時每隔 一定時間,通過串口1輸出一段信息到電腦。

注:調(diào)試需安裝虛擬串口



單片機源程序如下:
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "led.h"

  5. int main(void)
  6. {
  7.         u8 t;
  8.         u8 len;        
  9.         u16 times=0;   
  10.         Stm32_Clock_Init(168,8,2,7);//設(shè)置時鐘,84Mhz
  11.         delay_init(84);                //延時初始化
  12.         uart_init(42,9600);        //串口初始化為115200
  13.         LED_Init();                                  //初始化與LED連接的硬件接口   
  14.         while(1)
  15.         {
  16.                 if(USART_RX_STA&0x8000)
  17.                 {                                          
  18.                         len=USART_RX_STA&0x3fff;//得到此次接收到的數(shù)據(jù)長度
  19.                         printf("\r\n您發(fā)送的消息為:\r\n");
  20.                         for(t=0;t<len+1;t++)
  21.                         {
  22.                                 USART1->DR=USART_RX_BUF[t];
  23.                                 while((USART1->SR&0X40)==0);//等待發(fā)送結(jié)束
  24.                         }
  25.                         printf("\r\n\r\n");//插入換行
  26.                         USART_RX_STA=0;
  27.                 }else
  28.                 {
  29.                         times++;

  30.                         if(times%200==0)printf("請輸入數(shù)據(jù),以回車鍵結(jié)束\r\n");  
  31.                         if(times%30==0)LED0=!LED0;//閃爍LED,提示系統(tǒng)正在運行.
  32.                         delay_ms(10);   
  33.                 }
  34.         }
  35. }
復(fù)制代碼

所有資料51hei提供下載:
proteus stm32f401 實現(xiàn)串口通信.7z (110.09 KB, 下載次數(shù): 479)



作者: linuxcso    時間: 2019-2-14 18:23
厲害,學(xué)習(xí)了
作者: 高老久    時間: 2019-5-22 10:54
感謝樓主
作者: jamlee    時間: 2019-5-25 16:27
厲害了呀
作者: mupro    時間: 2020-1-1 17:22
感謝分享  學(xué)習(xí)這個軟件
作者: 伏特加    時間: 2020-1-2 17:28
感謝分享  學(xué)習(xí)這個軟件
作者: wa51hdz    時間: 2020-2-13 09:14
有這個軟件的鏈接嗎,求分享
作者: 黑貓一只    時間: 2020-3-7 17:35
請問樓主或者有人解決了嘛

作者: asm555    時間: 2020-3-10 12:35
請問樓主這個問題解決沒,我對這個實驗也很感興趣
作者: lium7    時間: 2020-3-18 20:21
這個不錯,stm32串口通信
作者: songxinhong    時間: 2020-4-8 23:59
謝謝,學(xué)習(xí)了
作者: sfdsl1    時間: 2020-4-14 12:15

在正點原子的   F4串口實驗基礎(chǔ)之上按照上圖修改,即可實現(xiàn)

作者: tonywuplc    時間: 2020-4-23 00:51
樓主,你使用的就是庫函數(shù),怎么就實現(xiàn)了,而且我打開你的附件,也能正常按要求運行。但我用我自己的F1系列的在仿真串口,就是能發(fā)送不能正常的接收,我知道是波特率的問題,無論我怎么修改調(diào)試,結(jié)果還是不理想,這個問題困擾我很久了,希望能指點一下!
作者: happy87    時間: 2020-5-14 20:35
tonywuplc 發(fā)表于 2020-4-23 00:51
樓主,你使用的就是庫函數(shù),怎么就實現(xiàn)了,而且我打開你的附件,也能正常按要求運行。但我用我自己的F1系列 ...

這個內(nèi)部實現(xiàn),真的是寄存器
作者: 526637566@qq.co    時間: 2020-5-20 07:05
happy87 發(fā)表于 2020-5-14 20:35
這個內(nèi)部實現(xiàn),真的是寄存器

F1的接收是有問題,我試了寄存器、庫函數(shù)、hal庫都不行,不同波特率也試了,都是不能正確接受數(shù)據(jù)串,單個數(shù)據(jù)接收正常,發(fā)射正常。但是沒有用過查詢方式,用了DMA和中斷都是不行的,查詢由于太占時間,仿真本來就卡,也就算了
作者: sfdsl1    時間: 2020-5-23 00:38
526637566@qq.co 發(fā)表于 2020-5-20 07:05
F1的接收是有問題,我試了寄存器、庫函數(shù)、hal庫都不行,不同波特率也試了,都是不能正確接受數(shù)據(jù)串,單 ...

https://www.ixigua.com/i6799650795739415052/

可以看下這個視頻
作者: fudianshu    時間: 2020-5-31 09:04
感謝分享,學(xué)習(xí)一下
作者: haha3931    時間: 2020-6-6 09:26
很強大。
作者: nmgbtzyf    時間: 2020-7-30 21:19
樓主師傅能不能搞個復(fù)雜一點兒的sd卡 或usb  串口仿真不用發(fā)送,我只監(jiān)視內(nèi)容就可以。
作者: nmgbtzyf    時間: 2020-7-30 21:21
還有,我看到cdsn。里面有改成f 407。的帖子,但是他的源碼我沒有c幣下載不了。幫我嘗試一下這個嘛,我也現(xiàn)在正在搞這個。
作者: lhf58    時間: 2020-8-5 10:52

這個不錯,正在學(xué)習(xí)stm32串口通信
作者: 倩倩錢    時間: 2021-4-4 10:25
原理一直沒人弄懂嗎
作者: lllgs    時間: 2023-11-22 11:24
謝謝樓主學(xué)習(xí)到了




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