STM32f103 串列埠中斷及其配置

2021-10-21 04:25:27 字數 2533 閱讀 8331

rcc_apb2periphclockcmd

(rcc_apb2periph_gpioa, enable)

;//使能gpio時鐘

rcc_apb2periphclockcmd

(rcc_apb2periph_afio, enable)

;//使能afio時鐘

rcc_apb2periphclockcmd

(rcc_apb2periph_usart1, enable)

;//使能串列埠時鐘

gpio_inittypedef gpioinitstructure;

// 配置pa9 tx

gpioinitstructure.gpio_mode = gpio_mode_af_pp;

gpioinitstructure.gpio_pin = gpio_pin_9;

gpioinitstructure.gpio_speed = gpio_speed_50mhz;

gpio_init

( gpioa,

&gpioinitstructure)

;// 配置pa10 rx

gpioinitstructure.gpio_mode = gpio_mode_in_floating;

gpioinitstructure.gpio_pin = gpio_pin_10;

gpio_init

( gpioa,

&gpioinitstructure)

;

usart_inittypedef usartinitsturure;

usartinitsturure.usart_baudrate =

115200

;usartinitsturure.usart_hardwareflowcontrol = usart_hardwareflowcontrol_none;

usartinitsturure.usart_mode = usart_mode_rx |usart_mode_tx;

usartinitsturure.usart_parity =usart_parity_no;

usartinitsturure.usart_stopbits = usart_stopbits_1;

usartinitsturure.usart_wordlength = usart_wordlength_8b;

usart_init

(usart1,

&usartinitsturure)

;usart_itconfig

(usart1, usart_it_rxne,enable)

;//串列埠中斷配置,第二個引數是表示使能串列埠的型別,也就是使能哪種中斷,因為串列埠的中斷型別有很多種。

usart_cmd

(usart1, enable)

;//使能串列埠

nvic_inittypedef nvicinitstructure;

nvic_prioritygroupconfig

(nvic_prioritygroup_2 )

;nvicinitstructure.nvic_irqchannel = usart1_irqn;

nvicinitstructure.nvic_irqchannelpreemptionpriority =1;

nvicinitstructure.nvic_irqchannelsubpriority =1;

nvicinitstructure.nvic_irqchannelcmd = enable;

nvic_init

(&nvicinitstructure)

;

void

usart1_irqhandler

(void)if

(tmp ==

'c')

}}

void

usartsendbyte

(usart_typedef* usartx, uint16_t data)

void

usartsendstr

(usart_typedef* usartx,

char

*str)

while(*

(str +i)

!='\0');

while

(usart_getflagstatus

(usart1, usart_flag_tc)

== reset)

;}

int

fputc

(int ch , file *f)

需要包含標頭檔案stdio.h,並且勾選target中的use microlib

int

fgetc

(file *f)

通過庫函式使用STM32f103串列埠中斷的心得

stm32使用usart中斷主要有一下幾步 1,定義中斷結構體,和串列埠結構體 2,使能時鐘 3,編寫中斷函式 4,使能中斷 關於傳送中斷,筆者當時有個疑惑 上圖是關於狀態暫存器 usart sr 中的兩位。上圖是控制暫存器1 usart cr1 中的兩位。筆者當時的疑惑是,這兩位都可以控制中斷啊,...

stm32f103外部中斷

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

STM32F103串列埠通訊

usart 通用同步非同步收發器 是乙個序列通訊裝置,可以靈活地與外部裝置進行全雙工資料交換。有別於 usart 還有乙個uart,它是在 usart 基礎上裁剪掉了同步通訊功能,只有非同步通訊。全雙工的,非同步通訊 分數波特率發生器系統 傳送和接收共用的可程式設計波特率,最高達4.5mbits s...