串列埠,是微控制器的乙個重要的外部介面,同時也是重要的除錯手段,在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...