SysTick中斷屬于核內(nèi)外設(shè)中斷器,中斷號(hào)為-1。想要使用SysTick中斷,只需在SysTick查詢定時(shí)上進(jìn)行稍微的修改。需要添加開(kāi)啟中斷,直接用中斷函數(shù)對(duì)計(jì)數(shù)標(biāo)志位進(jìn)行清零,不再使用查詢方式判斷計(jì)數(shù)是否結(jié)束去清零。中斷函數(shù)接口SysTick_Handler在匯編文件中已經(jīng)給出定義,直接到文件中查找即可。
本來(lái)NVIC提供了中斷使能的函數(shù),但是要求中斷號(hào)要大于0(Value cannot be negative.),所以就不能調(diào)用NVIC中斷使能函數(shù)了,直接在操作寄存器開(kāi)啟中斷就可以了。
修改如下:
#include "delay.h"
#include "led.h"
void Systick_Delayus(u32 us)
{
SysTick- >CTRL = 0; //選擇時(shí)鐘源,8分頻
SysTick- >CTRL |= 1< 1; //開(kāi)中斷
SysTick- >LOAD = 21*us - 1; //賦值裝載值
SysTick- >VAL = 0;
SysTick- >CTRL |= 1< 0; //使能計(jì)數(shù)器
}
void Systick_Delayms(u16 ms)
{
Systick_Delayus(ms * 1000);
}
void SysTick_Handler()
{
SysTick- >CTRL &=~ (1< 16); //清計(jì)數(shù)標(biāo)志位
LED_Toggle(DS0); //LED燈閃爍
}
中斷函數(shù)定義好后,直接初始化中斷時(shí)間,主函數(shù)中不需要對(duì)中斷進(jìn)行其他處理,這樣就能實(shí)現(xiàn)SysTick中斷讓LED燈閃爍了。
#include "stm32f4xx.h"
#include "led.h"
#include "delay.h"
int main()
{
LED_Init(); //初始化LED燈
Systick_Delayms(500);
while(1)
{
}
}
-
led燈
+關(guān)注
關(guān)注
22文章
1592瀏覽量
108456 -
寄存器
+關(guān)注
關(guān)注
31文章
5369瀏覽量
121268 -
NVIC
+關(guān)注
關(guān)注
0文章
35瀏覽量
11748 -
串口中斷
+關(guān)注
關(guān)注
0文章
67瀏覽量
14018 -
Systick
+關(guān)注
關(guān)注
0文章
62瀏覽量
13155
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
STM32 SYSTICK定時(shí)器常見(jiàn)問(wèn)題
CKS32F4xx系列MCU SysTick定時(shí)器的原理及使用方法
![CKS32F4xx系列MCU <b class='flag-5'>SysTick</b>定時(shí)器的原理及<b class='flag-5'>使用方法</b>](https://file1.elecfans.com/web2/M00/B6/51/wKgaomV_ny6AGhlCAAAYS1xvSns093.png)
STM32基本定時(shí)器中斷的使用方法
STM32單片機(jī)Systick函數(shù)的使用方法
使用STM32單片機(jī)進(jìn)行外部中斷實(shí)驗(yàn)的詳細(xì)資料說(shuō)明
![使用<b class='flag-5'>STM32</b>單片機(jī)進(jìn)行外部<b class='flag-5'>中斷</b>實(shí)驗(yàn)的詳細(xì)資料說(shuō)明](https://file.elecfans.com/web1/M00/90/B4/o4YBAFzGtyKAQ6SQAACgAF4BlDU589.png)
STM32關(guān)全局中斷的方法 STM32中斷類(lèi)型
STM32—關(guān)于SYSTICK系統(tǒng)時(shí)鐘的詳解及學(xué)習(xí)筆記
![<b class='flag-5'>STM32</b>—關(guān)于<b class='flag-5'>SYSTICK</b>系統(tǒng)時(shí)鐘的詳解及學(xué)習(xí)筆記](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM32 SysTick_Handler/SysTickHandler 無(wú)法進(jìn)入中斷的問(wèn)題
![<b class='flag-5'>STM32</b> <b class='flag-5'>SysTick</b>_Handler/SysTickHandler 無(wú)法進(jìn)入<b class='flag-5'>中斷</b>的問(wèn)題](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
Systick_Handler B.卡死處理方法
![<b class='flag-5'>Systick</b>_Handler B.卡死處理<b class='flag-5'>方法</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
stm32 SysTick/EXTI/USART中斷過(guò)程
![<b class='flag-5'>stm32</b> <b class='flag-5'>SysTick</b>/EXTI/USART<b class='flag-5'>中斷</b>過(guò)程](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM32學(xué)習(xí)---中斷EXTI(按鍵中斷)
![<b class='flag-5'>STM32</b>學(xué)習(xí)---<b class='flag-5'>中斷</b>EXTI(按鍵<b class='flag-5'>中斷</b>)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論