欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: STM32F407VET6-100P單片機串口1和串口2數據互通源程序 [打印本頁]

作者: xin16    時間: 2022-12-30 16:27
標題: STM32F407VET6-100P單片機串口1和串口2數據互通源程序
STM32F407VET6-100P串口1和串口2數據互通,串口2我連接的是WIfi模塊。所以下載的小伙伴可以自己做出判斷是用USB轉TTL。這個我試過,是可行的。
串口實驗中的PA9和PA10已經復用映射了。PA9對應TX,PA10對應RX.

使用usart2,所以printf不可以在串口2的收發函數里出現,不然串口1會對串口2產生干擾。

單片機源程序如下:
main.c文件
  1. #include "sys.h"   
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "usart2.h"
  5. #include "led.h"
  6. #include "beep.h"
  7. #include "key.h"
  8. int main(void)
  9. {

  10.         u8 t;
  11.         u8 len;        
  12.         u8 len2;
  13.         u16 times=0;
  14.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置系統中斷優先級分組2
  15.         delay_init(168);                //延時初始化
  16.   uart_init(115200); //串口1初始化波特率為115200
  17.         uart2_init(115200);//串口2初始化波特率為115200
  18.         LED_Init();        
  19.         while(1)
  20.         {


  21.                 if(USART_RX_STA&0x8000)
  22.                 {                                          
  23.                         len=USART_RX_STA&0x3fff;//得到此次接收到的數據長度
  24.       printf("\r\n您發送的消息為:");
  25.                         for(t=0;t<len;t++)
  26.                         {
  27.         USART_SendData(USART2, USART_RX_BUF[t]);//將串口1收到的數據轉發給串口2輸出
  28.                                 while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);//等待發送結束        
  29.       printf("\r\n");//插入換行                                
  30.                         }
  31. //                  printf("電腦send to串口1的數據為:\r\n");
  32.                         for(t=0;t<len;t++)
  33.                         {
  34.                                 USART_SendData(USART1, USART_RX_BUF[t]);//單片機通過串口1發送數據給電腦
  35.                                 while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待發送結束
  36. //                        printf("\r\n發送成功\r\n");//插入換行
  37.                         }
  38.        printf("\r\n");//插入換行
  39.                          USART_RX_STA=0;


  40.                 }
  41.                 if(USART2_RX_STA&0x8000)
  42.                 {                                          
  43.                         len2=USART2_RX_STA&0x3fff;//得到此次接收到的數據長度
  44. //                        printf("\r\n您發送的消息為:");
  45.                         for(t=0;t<len2;t++)
  46.                         {
  47.                                 USART_SendData(USART2, USART2_RX_BUF[t]);//單片機通過串口2給電腦發數據(作用:提示另一個串口接收到的數據是什么)
  48.                                 while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);//等待發送結束
  49.                         }        
  50.       //printf("電腦 send to串口1的數據為:\r\n");
  51. //      printf("\r\n");//作為指令響應的開頭               
  52.                         for(t=0;t<len2;t++)
  53.                         {
  54.                                 USART_SendData(USART1, USART2_RX_BUF[t]);//將串口2收到的數據轉發給串口1輸出
  55.                                 while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待發送結束
  56.                         }                        
  57. //                        printf("\r\n");//插入換行               
  58.                         USART2_RX_STA=0;
  59.                 }
  60.                 else
  61.                 {
  62.                         times++;
  63.                         if(times%5000==0)
  64.                         {
  65.                              LED1=!LED1;
  66.                         }
  67.                         if(times%30==0)LED0=!LED0;  //閃爍LED,提示系統正在運行
  68.                         delay_ms(10);
  69.                 }                        
  70.   }
  71. }

復制代碼

Keil代碼下載: 代碼 串口1和串口2數據互傳.7z (570.41 KB, 下載次數: 25)

作者: xin16    時間: 2022-12-30 16:28
發數據的時候記得加回車鍵




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