久久久性爱视频,青娱乐这里只有精品狼牙,在线日韩av资源播放网站,掩去也俺来也久久丁香图

0 賣盤信息
BOM詢價
您現在的位置: 首頁 > 電子資訊 >基礎知識 > stm32f103rct6標準庫串口配置

stm32f103rct6標準庫串口配置

來源:
2025-05-21
類別:基礎知識
eye 9
文章創建人 拍明芯城

STM32F103RCT6標準庫串口配置詳解

一、串口通信基礎理論

1.1 串口通信概述

串口通信(Serial Communication)是嵌入式系統中常用的數據交換方式,通過兩條線(TX發送線、RX接收線)和地線(GND)實現全雙工或半雙工通信。其核心優勢在于硬件成本低、連接簡單,適用于低速數據傳輸場景。在STM32F103RCT6中,串口模塊(USART/UART)支持多種通信參數配置,包括波特率、數據位、停止位和校驗位,需與通信對端嚴格匹配以確保數據完整性。

image.png

1.2 關鍵參數詳解

  • 波特率:單位時間內傳輸的符號數(如9600波特率表示每秒傳輸9600個符號),需與對端設備一致。

  • 數據位:數據幀中有效信息的位數(常見為8位),影響單次傳輸的數據量。

  • 停止位:標識數據幀結束的位(1位、1.5位或2位),用于同步時鐘。

  • 校驗位:可選的奇偶校驗位,用于簡單錯誤檢測(如奇校驗、偶校驗)。

1.3 硬件連接規范

STM32F103RCT6的串口引腳需遵循交叉連接原則:

  • 發送端(TX)連接對端接收端(RX)

  • 接收端(RX)連接對端發送端(TX)

  • 地線(GND)需共地

例如,USART1的TX(PA9)接對端RX,RX(PA10)接對端TX。

二、標準庫串口配置步驟

2.1 初始化流程

標準庫配置串口需完成以下步驟:

  1. 時鐘使能:啟用USART及GPIO時鐘。

  2. GPIO配置:設置TX為復用推挽輸出,RX為浮空輸入。

  3. USART復位:初始化前復位外設。

  4. 參數初始化:配置波特率、數據位、停止位等。

  5. 中斷配置(可選):啟用接收中斷并配置NVIC。

  6. 使能USART:啟動串口模塊。

2.2 代碼實現示例

以下以USART1為例,展示完整配置代碼:


#include "stm32f10x.h"



void USART1_Init(uint32_t bound) {

GPIO_InitTypeDef GPIO_InitStructure;

USART_InitTypeDef USART_InitStructure;

NVIC_InitTypeDef NVIC_InitStructure;



// 1. 使能時鐘

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);



// 2. 配置GPIO

// TX (PA9)

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOA, &GPIO_InitStructure);



// RX (PA10)

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIOA, &GPIO_InitStructure);



// 3. USART復位

USART_DeInit(USART1);



// 4. 配置USART參數

USART_InitStructure.USART_BaudRate = bound; // 波特率

USART_InitStructure.USART_WordLength = USART_WordLength_8b; // 8位數據

USART_InitStructure.USART_StopBits = USART_StopBits_1; // 1位停止位

USART_InitStructure.USART_Parity = USART_Parity_No; // 無校驗

USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; // 無硬件流控

USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; // 發送+接收

USART_Init(USART1, &USART_InitStructure);



// 5. 啟用中斷(可選)

USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); // 接收中斷



// 6. 配置NVIC

NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; // 搶占優先級

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; // 子優先級

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);



// 7. 使能USART

USART_Cmd(USART1, ENABLE);

}

2.3 中斷服務函數

中斷模式下需實現接收回調函數,例如:


void USART1_IRQHandler(void) {

if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) {

uint8_t data = USART_ReceiveData(USART1); // 讀取數據

// 處理數據(如存入緩沖區或觸發其他邏輯)

}

}

三、數據發送與接收實現

3.1 發送數據

通過USART_SendData函數發送數據,需等待發送完成:


void USART1_SendChar(char ch) {

while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); // 等待發送緩沖區空

USART_SendData(USART1, (uint8_t)ch);

}



void USART1_SendString(char *str) {

while (*str) {

USART1_SendChar(*str++);

}

}

3.2 接收數據

接收方式分為輪詢和中斷兩種:

  • 輪詢模式:通過USART_GetFlagStatus檢查RXNE標志位。

  • 中斷模式:通過回調函數處理接收數據,適合高實時性場景。

3.3 重定向printf

通過重定向fputc函數實現printf輸出到串口:


int fputc(int ch, FILE *f) {

while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);

USART_SendData(USART1, (uint8_t)ch);

return ch;

}

四、高級應用與優化

4.1 DMA傳輸

通過DMA實現高速數據傳輸,減少CPU占用。需配置DMA通道并關聯USART數據寄存器。

4.2 多主機通信

在多設備場景中,需通過硬件流控(RTS/CTS)或軟件協議(如幀頭幀尾)避免沖突。

4.3 故障排除

  • 無數據收發:檢查硬件連接、波特率匹配、時鐘使能。

  • 數據錯亂:增大緩沖區、優化中斷優先級。

  • 死機:避免在中斷中執行耗時操作。

五、完整工程示例

5.1 工程結構

Project/
├── Core/
│   ├── Inc/
│   │   └── usart.h
│   ├── Src/
│   │   └── usart.c
│   └── Startup/
│       └── startup_stm32f10x_hd.s
├── User/
│   ├── main.c
│   └── stm32f10x_it.c
└── Libraries/
├── CMSIS/
└── STM32F10x_StdPeriph_Driver/

5.2 主函數示例


#include "stm32f10x.h"

#include "usart.h"



int main(void) {

// 初始化系統時鐘、GPIO等

SystemInit();



// 初始化USART1

USART1_Init(115200);



while (1) {

printf("Hello, STM32! ");

Delay_ms(1000);

}

}

六、總結

STM32F103RCT6的串口配置涉及時鐘、GPIO、USART及中斷的協同工作。通過標準庫提供的API,開發者可靈活實現基礎通信功能,并通過DMA、多主機協議等高級特性優化性能。實際應用中需結合硬件連接、通信協議及調試工具(如串口助手)進行綜合驗證,確保系統穩定運行。

責任編輯:David

【免責聲明】

1、本文內容、數據、圖表等來源于網絡引用或其他公開資料,版權歸屬原作者、原發表出處。若版權所有方對本文的引用持有異議,請聯系拍明芯城(marketing@iczoom.com),本方將及時處理。

2、本文的引用僅供讀者交流學習使用,不涉及商業目的。

3、本文內容僅代表作者觀點,拍明芯城不對內容的準確性、可靠性或完整性提供明示或暗示的保證。讀者閱讀本文后做出的決定或行為,是基于自主意愿和獨立判斷做出的,請讀者明確相關結果。

4、如需轉載本方擁有版權的文章,請聯系拍明芯城(marketing@iczoom.com)注明“轉載原因”。未經允許私自轉載拍明芯城將保留追究其法律責任的權利。

拍明芯城擁有對此聲明的最終解釋權。

標簽: stm32f103rct6

相關資訊

資訊推薦
云母電容公司_云母電容生產廠商

云母電容公司_云母電容生產廠商

開關三極管13007的規格參數、引腳圖、開關電源電路圖?三極管13007可以用什么型號替代?

開關三極管13007的規格參數、引腳圖、開關電源電路圖?三極管13007可以用什么型號替代?

74ls74中文資料匯總(74ls74引腳圖及功能_內部結構及應用電路)

74ls74中文資料匯總(74ls74引腳圖及功能_內部結構及應用電路)

芯片lm2596s開關電壓調節器的中文資料_引腳圖及功能_內部結構及原理圖_電路圖及封裝

芯片lm2596s開關電壓調節器的中文資料_引腳圖及功能_內部結構及原理圖_電路圖及封裝

芯片UA741運算放大器的資料及參數_引腳圖及功能_電路原理圖?ua741運算放大器的替代型號有哪些?

芯片UA741運算放大器的資料及參數_引腳圖及功能_電路原理圖?ua741運算放大器的替代型號有哪些?

28nm光刻機卡住“02專項”——對于督工部分觀點的批判(睡前消息353期)

28nm光刻機卡住“02專項”——對于督工部分觀點的批判(睡前消息353期)

拍明芯城微信圖標

各大手機應用商城搜索“拍明芯城”

下載客戶端,隨時隨地買賣元器件!

拍明芯城公眾號
拍明芯城抖音
拍明芯城b站
拍明芯城頭條
拍明芯城微博
拍明芯城視頻號
拍明
廣告
恒捷廣告
廣告
深亞廣告
廣告
原廠直供
廣告