STM32F103開發之USART的使用

2021-10-01 02:37:04 字數 2301 閱讀 2398

串列埠,是微控制器的乙個重要的外部介面,同時也是重要的除錯手段,在stm32f103系列的微控制器中,可以提供多路串列埠。usart利用分數波特率發生器可以提供寬範圍的波特率選擇,同時支援同步單向通訊和半雙工單線通訊與全雙工通訊,允許多處理器通訊並且可以使用多緩衝器配置的dma方式,從而實現高速資料通訊。

在stm32f103中,串列埠可以被配置成全雙工模式或是半雙工同步模式,同時接收到的資料位數也可以進行配置,與gpio的配置相類似,首先要對串列埠進行初始化,通過初始化來配置串列埠的模式和引數:

void usart_init(usart_typedef* usartx, usart_inittypedef* usart_initstruct);
在這個函式中,共有兩個引數,第乙個用於指定串列埠(usart1,usart2,usart3根據晶元型號不同,串列埠個數不同),第二個引數位結構體型別。

在對串列埠進行初始化之前,需要對使用到的io口先行初始化,初始化的步驟同上篇

//usart1_tx    pa.9 

gpio_init structure.gpio_pin = gpio_pin_9; 復用推挽輸出

gpio_init structure.gpio_speed = gpio_speed_50mhz;

gpio_init structure.gpio_mode = gpio_mode_af_pp; //復用推挽輸出

gpio_init(gpioa, &gpio_init structure);

//usart1_rx pa.10 浮空輸入

gpio_init structure.gpio_pin = gpio_pin_10;

gpio_init structure.gpio_mode = gpio_mode_in_floating;//浮空輸入

gpio_init(gpioa, &gpio_init structure);

之後,對串列埠進行初始化:

//usart  初始化設定

usart_init structure.usart_baud rate = bound;//波特率設定;

usart_init structure.usart_word length = usart_word length_8b;//字長為 8 位

usart_init structure.usart_stop bits = usart_stop bits_1;//乙個停止位

usart_init structure.usart_parity = usart_parity_no; //無奇偶校驗位

usart_init structure.usart_hardware flow control= usart_hardware flowcontrol_none;

//無硬體資料流控制

usart_init structure.usart_mode = usart_mode_rx | usart_mode_tx;//全雙工收發模式

usart_init(usart1, &usart_init structure); //初始化串列埠

在使用串列埠進行通訊時,為了保證能夠實時接收到資訊,必須使用中斷

//usart1 nvic 配置

nvic_initstructure.nvic_irqchannel = usart1_irqn;

nvic_initstructure.nvic_irqchannelpreemptionpriority=3 ;//設定搶占優先順序3

nvic_initstructure.nvic_irqchannelsubpriority = 3; //子優先順序3

nvic_initstructure.nvic_irqchannelcmd = enable; //中斷通道使能

nvic_init(&nvic_initstructure); //進行nvic初始化

初始化完成之後,必須對其進行使能,只有使能之後才可以使用,usart也需要開啟中斷使能

usart_itconfig(usart1, usart_it_rxne, enable); //中斷使能

usart_cmd(usart1, enable); //使能串列埠

初始化完成,中斷開啟,之後編寫中斷函式,當微控制器接收到訊號時,觸發相應的中斷,進入中斷函式進行處理

void usart1_irqhandler(void)  

}

到此,串列埠的初步使用便完成。

stm32f103外部中斷

void extix init void 外部中斷0服務程式 void exti9 5 irqhandler void 這是簡單的外部中斷的配置,pc7作為中斷輸入 上面補充io口的初始化 gpio initstructure.gpio mode gpio mode ipu pc6配置為快充指示 1...

STM32F103啟動檔案

目錄 一 概述 二 彙編指令 2.1 equ 2.2 area 2.3 space 2.4 preserve8 2.5 thumb 2.6 export 2.7 dcd 2.8 proc 2.9 ldr 2.10 blx 2.11 bx 2.12 temport 2.13 b 2.14 if,els...

關於STM32F103精確延時

為了相容freertos,所以將延時函式統一規範,後續使用方便移植。此延時針對無晶振,示例為系統倍頻64mhz,型號 stm32f103c8t6。新建system資料夾,新增兩個檔案,delay.c和delay.h 以下為delay.c內容 其中系統已倍頻為64m include stm32f10x...