STM32學習心得 八 初識中斷

2021-10-13 20:15:15 字數 1567 閱讀 8145

typedef struct

nvic_type;

其中最常用的就是中斷優先順序暫存器。

同時,在「misc.h」韌體庫中也實現了部分與中斷相關的函式

void nvic_prioritygroupconfig(uint32_t nvic_prioritygroup);

void nvic_init(nvic_inittypedef* nvic_initstruct);

void nvic_setvectortable(uint32_t nvic_vecttab, uint32_t offset);

void nvic_systemlpconfig(uint8_t lowpowermode, functionalstate newstate);

void systick_clksourceconfig(uint32_t systick_clksource);

暫存器層面上,通過操作nvic->iprx來實現(ipr:interrupt priority registers)

通過優先順序分組來設定搶占優先順序。同樣地,在暫存器層面上是通過操作scb->aircr:prigroup[10:8]來實現

韌體庫層面則是misc.h裡面提供的函式來配置。

misc.h中找到「void nvic_prioritygroupconfig(uint32_t nvic_prioritygroup);」來配置

注意,這個設定在整個系統執行過程中,只能設定一次

typedef struct

nvic_inittypedef;

配置完成後,呼叫misc.h中的void nvic_init(nvic_inittypedef* nvic_initstruct);來將配置的各引數寫入對應的暫存器中。

//以設定串列埠1中斷為例

/usart1 nvic 配置

nvic_initstructure.nvic_irqchannel = usart1_irqn;

nvic_initstructure.nvic_irqchannelpreemptionpriority=3 ;//搶占優先順序3

nvic_initstructure.nvic_irqchannelsubpriority = 3; //子優先順序3

nvic_initstructure.nvic_irqchannelcmd = enable; //irq通道使能

nvic_init(&nvic_initstructure); //根據指定的引數初始化vic暫存器

1.首先要強調的是中斷服務函式已經被定義好,不能自己隨意寫,具體參考startup_stm32f10x_hd.s檔案

2.建議終端服務函式統一寫在stm32f10x_it.c

STM32學習心得(1)

學stm32的目的只是為了可以讓乙個電機轉動起來,哈哈哈是不是感覺沒什麼大目標。但是能讓電機轉起來就覺得很有成就感。我在學之前有的概念就是 pwm,can,輸入輸出啥的,然而卻並不知道是幹什麼的。前一段時間在 上買了一款stmf103的板子,買回來後裝了keil4花了好幾個小時,又花了好幾個小時配置...

STM32中斷優先順序 學習心得

剛開始學習stm32微控制器時,對中斷優先順序的規則不是很明白,通過今天的學習,對這方面的內容有了新的了解,記錄下來以便日後檢視。首先說一下stm32的中斷 stm32有84個中斷,包括16個核心中斷和68個可遮蔽中斷,具有16級可程式設計的中斷優先順序。stm32f103系列上面,又只有60個可遮...

STM32學習心得十三 NVIC中斷優先順序管理

記錄一下,方便以後翻閱 主要內容 1 nvic中斷優先順序分組 2 nvic中斷優先順序設定。官方資料 stm32中文參考手冊v10 第9章 中斷和事件 1.nvic中斷優先順序分組 1.1 cm3核心支援256個中斷,其中包含16個核心中斷和240個外部中斷,並且具有256級的可程式設計中斷設定 ...