STM32外部中斷和IWDG

2021-06-26 07:05:54 字數 2218 閱讀 8987

實驗平台:正點原子戰艦開發板

系統:windows 7 64位

編譯器:mdk 4.72a

參考例程:atk

串列埠例程,野火

iso串列埠例程

中斷主要分為兩種:

1、系統異常中斷也可以說的核心異常,這類異常中斷有些是不可以控制的,如reset,nmi,fault.

2、外部中斷,這些中斷都是可以設定的,每個gpio

都可以被設定為中斷。

當要使用中斷時候都要對nvic

進行設定

void  nvic_init(nvic_inittypedef* nvic_initstruct);

nvic_irqchannel  

需要配置的中斷線

nvic_irqchannelcmd  

使能或關閉相應中斷向量的中斷響應 

nvic_irqchannelpreemptionpriority     配置相應中斷向量搶占優先順序 

nvic_irqchannelsubpriority  

配置相應中斷向量的響應優先順序 

搶占 > 

響應 ,先判斷搶占 然後再判斷響應。

要配置這些優先順序組,可以採用庫函式 nvic_prioritygroupconfig(),可輸

入的引數為 nvic_prioritygroup_0   ~  nvic_prioritygroup_4,有5 

種分配組。

關係式是: 

第0組:

16種搶斷 第1

組:2種搶斷,

8種響應 第2

組:4種搶斷,

4種響應 第3

組:8種搶斷,

2種響應 第4

組:16

種響應,無搶斷

數越小,優先順序越高。當要用到n

多中斷時候才要設定這個優先順序組。否則不用設定。

stm32一共有

16個中斷線,編號為

0~15

。gpioa~gpiog的第0

個引腳都屬於

0號中斷線,所有的

1引腳,都屬於

1號中斷線,以此類推。但是每乙個中斷線同時只能響應乙個引腳的中斷,但是可以分時復用,設定不同的觸發方式。

void exti_init(exti_inittypedef* exti_initstruct);

//初始化的結構體函式

typedef struct

exti_inittypedef;

填寫完這兩個結構體,然後初始化就可以使用外部中斷了。但是我們還需要中斷函式

記得使能引腳的復用功能afio

中斷函式有固定的函式名字,不能更改,我們可以從啟動檔案裡看到中斷函式

外部按鍵中斷函式的一般格式為:

void exti2_irqhandler(void) 

} 看門狗作用就是防止程式跑飛或者宕機,當iwdg_kr

沒有定時寫入

0xaaaa

時就會產生乙個強制的復位訊號使晶元重啟。但是

iwdg

用的是內部

rc時鐘,頻率不穩定,所以在餵狗時候要提前餵狗,防止勿復位。

void iwdg_writeaccesscmd(uint16_t iwdg_writeaccess);

開啟和關閉iwdg

的寫入保護

void iwdg_setprescaler(uint8_t iwdg_prescaler);

分頻比 2^n( n= 2 ~ 16) 

最大256

void iwdg_setreload(uint16_t reload);

設定過載值最大4095

void iwdg_reloadcounter(void);

過載iwdg_rlr

暫存器的數

void iwdg_enable(void);

使能iwdg

flagstatus iwdg_getflagstatus(uint16_t iwdg_flag);

查詢預分頻或者過載是否進行中

計算時間用:tout=((4

×2^prer)  

×rlr) /40 。

部分**:

void iwdg_init()

void exitx_init()

void exti2_irqhandler()

exti_clearitpendingbit(exti_line2); }

STM32外部中斷

一 基本概念 arm coetex m3核心共支援256個中斷,其中16個內部中斷,240個外部中斷和可程式設計的256級中斷優先順序的設定。stm32目前支援的中斷共84個 16個內部 68個外部 還有16級可程式設計的中斷優先順序的設定,僅使用中斷優先順序設定8bit中的高4位。stm32可支援...

stm32外部中斷

外部中斷程式配置流程 rcc 時鐘配置 void rcc configuration void 時鐘配置 開啟各路時鐘 rcc apb2periphclockcmd rcc apb2periph usart1 rcc apb2periph gpioa rcc apb2periph afio,enab...

stm32外部中斷

好久沒玩微控制器了,最近閒著沒事想拿出來玩玩,沒想到乙個stm32的外部中斷讓我花費了兩天時間,好的的挫折啊!終於下午除錯成功,下面來說一下我的除錯之路吧!硬體就是兩個按鍵,四個led,led事共陽極接法,按鍵一端接地一端接gpio口,通過按鍵中斷控制led。程式寫好以後發現始終無法進入中斷,開始查...