實驗平台:正點原子戰艦開發板
系統: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。程式寫好以後發現始終無法進入中斷,開始查...