STM32 GPIO和外部中斷

2021-06-15 06:25:36 字數 1332 閱讀 8144

stm32中使用gpio作為外部中斷,以如下圖的方式連線到外部中斷,因此在設計的時候,不能同時將中斷連線在pa.1 pb.1  pc.1 pd.1 pe.1,因為同時只能選擇乙個中斷。

外部中斷初始化,乙個重要的結構體exit_inittypedef;

typedef struct

exti_inittypedef;

在gpio用作外部中斷首先需要將extix和具體的gpio口對應起來,選擇gpio管腳用作外部中斷線路

void gpio_extilineconfig(u8 gpio _portsource, u8  gpio_pinsource)

gpio_portsource:  選擇用作外部中斷線源的 gpio埠

gpio_pinsource :待設定的外部中斷線路 

然後對結構體exit_inittypedef進行初始化

exti_initstructure.exti_line = gpio_key1_exti_line;      //使用的中斷線為exti_x

exti_initstructure.exti_mode = exti_mode_interrupt; //外部中斷模式

exti_initstructure.exti_trigger = exti_trigger_falling; //下降沿觸發

exti_initstructure.exti_linecmd = enable;//使能

exti_init(&exti_initstructure);//初始化

exit_init(&exti_initstructure )根據exti_initstruct 中指定的引數初始化外設 exti暫存器 。

連續初始化外部exti時,只需要修改exti_initstruct.exti_line引數就行了,然後在呼叫exit_init(&exti_initstructure )函式進行初始化

gpio_extilineconfig(gpio_key2_exti_port_source, gpio_key2_exti_pin_source);//另外乙個埠的gpio管腳作為中斷線
exti_initstructure.exti_line = gpio_key2_exti_line;//修改exti_line引數

exti_init(&exti_initstructure); //再次進行初始化

中斷函式裡面

void extix_irqhandler(void)  

}

STM32GPIO部分介紹

最近在老師交給了乙個專案,需要用到stm32微控制器,這裡就在學習的過程中所注意到的一些地方或細節部分記錄了下來,筆者所使用的是stm32f407zgt6晶元 探索者 檢視晶元的資料手冊 這個 對每個i o口的功能進行了很詳細的介紹。每個i o除了作為i o使用外,還可以作為其他的復用。已以pe2口...

STM32 GPIO模式總結

4種輸入模式 浮空輸入 上拉輸入 下拉輸入 模擬輸入 4種輸出模式 開漏輸出 復用開漏輸出 推挽輸出 復用推挽輸出 3種最大輸出速度 2mhz 10mhz 50mhz 浮空輸入模式 1 外部通過io口輸入電平,外部電平通過上下拉部分 浮空模式下都關閉,既無 上拉也無下拉電阻 2 傳輸到施密特觸發器 ...

STM32 GPIO簡單介紹

2018 3 28 stm32 1.簡單配置暫存器環境 2.ministm32f103rc 51個io口 1.擁有著4組io口 gpioa0 a15 gpiob0 b15 gpioc0 c15 gpiod0 d2 2.gpio的工作方式 四種輸入模式,四種輸出模式 輸入方式 1.輸入浮空模式 由引腳...