STM32 中斷使用

2021-07-24 06:34:10 字數 1573 閱讀 8185

stm32中斷有時候用多了容易亂,特此記錄一下,因為之前一直是m3 m0交叉用,韌體庫有些區別容易弄混,這裡說一下m3外部中斷的配置

步驟:1.將對應的io配置為輸入

2.將io對應的中斷的優先等級用nvic配置好

3.設定好對應io的中斷模式和觸發方式

4.將io所屬的中斷線設為中斷輸入源

1---------以pb5為例子

gpio_initstructure.gpio_speed = gpio_speed_2mhz;

gpio_initstructure.gpio_mode = gpio_mode_ipu;

gpio_initstructure.gpio_pin = gpio_pin_5;

gpio_init(gpiob, &gpio_initstructure);

2-------------

nvic_prioritygroupconfig(nvic_prioritygroup_1);

/*usb insert*/

nvic_initstructure.nvic_irqchannel = exti9_5_irqn;

nvic_initstructure.nvic_irqchannelpreemptionpriority = 1;

nvic_initstructure.nvic_irqchannelsubpriority = 7;

nvic_initstructure.nvic_irqchannelcmd = enable;

nvic_init(&nvic_initstructure);

3------------

exti_initstructure.exti_line = exti_line5;

exti_initstructure.exti_mode = exti_mode_interrupt;

exti_initstructure.exti_trigger = exti_trigger_rising;

exti_initstructure.exti_linecmd = enable;

exti_init(&exti_initstructure);

4---------

gpio_extilineconfig(gpio_portsourcegpiob,gpio_pinsource5);
第四步比如容易被忽略,因為如果是pa口的話預設是已經作為輸入中斷源 就因為這點浪費了半天時間。。。

對於m0晶元 則用的是

m0->  syscfg_extilineconfig(gpio_portsourcegpiob,gpio_pinsource5);

這個時候要在前面加上syscfg時鐘使能

m0->  rcc_apb2periphclockcmd(rcc_apb2periph_syscfg, enable);

接下來就是中斷服務程式了

void exti9_5_irqhandler(void)

}

stm32中斷優先順序 STM32中斷系統

stm32 中斷非常強大,幾乎每個外設都可以產生中斷,因此這裡我們單獨使用一章來介紹它,為後面介紹外設中斷做鋪墊。學習本章可以參考 stm32f10x中文參考手冊 9 中斷和事件章節,cortex m3 權威指南 中文 chpt08 nvic與中斷控制章節。中斷概念 在學習 51 微控制器時,我們就...

STM32中斷巢狀

cortex m3核心支援256個中斷,其中包括16個核心中斷和240個外部中斷,且具有256級的可程式設計中斷設定,而stm32只用了其中一部分。stm32有84個中斷,包括16個核心中斷和68個可遮蔽中斷,具有16級可程式設計中斷優先順序。而我所使用的103系列只有60個可遮蔽中斷。優先順序的判...

STM32中斷相關

一般io口的初始化過程 下面以初始化e埠的0 1 2 3引腳為例。void mx gpio init void 在core cm4.h中定義nvic結構體 typedef struct nvic type 在配置中斷時,最常用的就是iser icer和ip這三個暫存器。iser用來使能中斷,icer...