找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 18408|回復(fù): 14
打印 上一主題 下一主題
收起左側(cè)

STM32串口通訊USART收發(fā)程序 收到串口發(fā)送數(shù)據(jù),再回送給串口 已驗證

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:140725 發(fā)表于 2017-4-8 15:22 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
stm32單片機實現(xiàn)的。已驗證,實現(xiàn)功能,收到串口發(fā)送數(shù)據(jù),再回送給串口


源碼工程下載:
基本例程-USART收發(fā).rar (585.15 KB, 下載次數(shù): 452)



源代碼:

  1. /********************
  2. * 文件名  :main.c
  3. * 描述    :通過串口調(diào)試軟件,向板子發(fā)送數(shù)據(jù),板子接收到數(shù)據(jù)后,立即回傳給電腦。         
  4. * 實驗平臺:MINI STM32開發(fā)板 基于STM32F103VET6
  5. * 庫版本  :ST3.0.0
  6. *********************************************************/

  7. #include "stm32f10x.h"
  8. #include "usart1.h"



  9. int main(void)
  10. {  
  11.             
  12.     SystemInit();        //配置系統(tǒng)時鐘為 72M
  13.    
  14.         USART1_Config(); //USART1 配置                 

  15.   while (1)
  16.   {         
  17.     UART1Test();
  18.   }
  19. }

復(fù)制代碼
  1. /****************
  2. * 文件名  :usart1.c
  3. * 描述    :配置USART1         
  4. * 實驗平臺:MINI STM32開發(fā)板 基于STM32F103VET6
  5. * 硬件連接:------------------------
  6. *          | PA9  - USART1(Tx)      |
  7. *          | PA10 - USART1(Rx)      |
  8. *           ------------------------
  9. * 庫版本  :ST3.0.0  
  10. **********************************************************************************/

  11. #include "usart1.h"
  12. #include <stdarg.h>


  13. void USART1_Config(void)
  14. {
  15.         GPIO_InitTypeDef GPIO_InitStructure;
  16.         USART_InitTypeDef USART_InitStructure;

  17.         /* 使能 USART1 時鐘*/
  18.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);

  19.         /* USART1 使用IO端口配置 */   
  20.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
  21.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //復(fù)用推挽輸出
  22.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  23.   GPIO_Init(GPIOA, &GPIO_InitStructure);   
  24.   
  25.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
  26.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;        //浮空輸入
  27.   GPIO_Init(GPIOA, &GPIO_InitStructure);   //初始化GPIOA
  28.          
  29.         /* USART1 工作模式配置 */
  30.         USART_InitStructure.USART_BaudRate = 115200;        //波特率設(shè)置:115200
  31.         USART_InitStructure.USART_WordLength = USART_WordLength_8b;        //數(shù)據(jù)位數(shù)設(shè)置:8位
  32.         USART_InitStructure.USART_StopBits = USART_StopBits_1;         //停止位設(shè)置:1位
  33.         USART_InitStructure.USART_Parity = USART_Parity_No ;  //是否奇偶校驗:無
  34.         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;        //硬件流控制模式設(shè)置:沒有使能
  35.         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;//接收與發(fā)送都使能
  36.         USART_Init(USART1, &USART_InitStructure);  //初始化USART1
  37.         USART_Cmd(USART1, ENABLE);// USART1使能
  38. }

  39. /*發(fā)送一個字節(jié)數(shù)據(jù)*/
  40. void UART1SendByte(unsigned char SendData)
  41. {           
  42.         USART_SendData(USART1,SendData);
  43.         while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);            
  44. }  

  45. /*接收一個字節(jié)數(shù)據(jù)*/
  46. unsigned char UART1GetByte(unsigned char* GetData)
  47. {              
  48.         if(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET)
  49.         {  return 0;//沒有收到數(shù)據(jù)
  50.                 }
  51.         *GetData = USART_ReceiveData(USART1);
  52.         return 1;//收到數(shù)據(jù)
  53. }
  54. /*接收一個數(shù)據(jù),馬上返回接收到的這個數(shù)據(jù)*/
  55. void UART1Test(void)
  56. {

復(fù)制代碼

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂2 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:262045 發(fā)表于 2017-12-15 15:41 | 只看該作者
坑爹啊
回復(fù)

使用道具 舉報

板凳
ID:254416 發(fā)表于 2017-12-16 12:45 | 只看該作者
太好了,可以省事了,
回復(fù)

使用道具 舉報

地板
ID:177675 發(fā)表于 2018-1-9 19:30 | 只看該作者
亂碼啊
回復(fù)

使用道具 舉報

5#
ID:345814 發(fā)表于 2018-6-6 20:52 | 只看該作者
厲害
回復(fù)

使用道具 舉報

6#
ID:363452 發(fā)表于 2018-7-2 19:41 | 只看該作者
感覺這個會有用誒,可是只差兩個黑幣了,我的這個評論能獲得兩個黑幣嗎,如果行的話我就能花5個黑幣下載這個程序了
回復(fù)

使用道具 舉報

7#
ID:382350 發(fā)表于 2018-8-2 23:49 | 只看該作者
最近正好在學(xué)32,單向給串口調(diào)試發(fā)送消息搞定了,就是這個不會了,感謝樓主
回復(fù)

使用道具 舉報

8#
ID:415894 發(fā)表于 2019-1-31 22:54 | 只看該作者
您是怎么驗證的?我用串口調(diào)試助手怎么接受沒有反應(yīng)?
回復(fù)

使用道具 舉報

9#
ID:674461 發(fā)表于 2019-12-26 13:53 | 只看該作者
真的有用么?期待有所收獲
回復(fù)

使用道具 舉報

10#
ID:640334 發(fā)表于 2020-12-3 18:45 | 只看該作者
用串口調(diào)試助手怎么接受沒有反應(yīng)啊
回復(fù)

使用道具 舉報

11#
ID:785561 發(fā)表于 2021-4-6 09:52 | 只看該作者
接收沒效
回復(fù)

使用道具 舉報

12#
ID:896697 發(fā)表于 2021-4-10 18:16 | 只看該作者
程序編譯通過,但調(diào)試助手不顯示
回復(fù)

使用道具 舉報

13#
ID:877522 發(fā)表于 2021-10-6 15:37 | 只看該作者
我是通過仿真,可以接受,但是不能發(fā)送
回復(fù)

使用道具 舉報

14#
ID:1038302 發(fā)表于 2022-7-7 13:17 | 只看該作者
usart1.h文件的內(nèi)容
  1. #ifndef __USART1_H
  2. #define        __USART1_H

  3. #include "stm32f10x.h"
  4. #include <stdio.h>

  5. void USART1_Config(void);
  6. void UART1Test(void);
  7. #endif /* __USART1_H */
復(fù)制代碼




回復(fù)

使用道具 舉報

15#
ID:681006 發(fā)表于 2022-7-8 10:46 | 只看該作者
代碼不全
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表