SysTick中斷屬于核內外設中斷器,中斷號為-1。想要使用SysTick中斷,只需在SysTick查詢定時上進行稍微的修改。需要添加開啟中斷,直接用中斷函數對計數標志位進行清零,不再使用查詢方式判斷計數是否結束去清零。中斷函數接口SysTick_Handler在匯編文件中已經給出定義,直接到文件中查找即可。
本來NVIC提供了中斷使能的函數,但是要求中斷號要大于0(Value cannot be negative.),所以就不能調用NVIC中斷使能函數了,直接在操作寄存器開啟中斷就可以了。
修改如下:
#include "delay.h"
#include "led.h"
void Systick_Delayus(u32 us)
{
SysTick- >CTRL = 0; //選擇時鐘源,8分頻
SysTick- >CTRL |= 1< 1; //開中斷
SysTick- >LOAD = 21*us - 1; //賦值裝載值
SysTick- >VAL = 0;
SysTick- >CTRL |= 1< 0; //使能計數器
}
void Systick_Delayms(u16 ms)
{
Systick_Delayus(ms * 1000);
}
void SysTick_Handler()
{
SysTick- >CTRL &=~ (1< 16); //清計數標志位
LED_Toggle(DS0); //LED燈閃爍
}
中斷函數定義好后,直接初始化中斷時間,主函數中不需要對中斷進行其他處理,這樣就能實現SysTick中斷讓LED燈閃爍了。
#include "stm32f4xx.h"
#include "led.h"
#include "delay.h"
int main()
{
LED_Init(); //初始化LED燈
Systick_Delayms(500);
while(1)
{
}
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
led燈
+關注
關注
22文章
1592瀏覽量
107950 -
寄存器
+關注
關注
31文章
5336瀏覽量
120230 -
NVIC
+關注
關注
0文章
35瀏覽量
11695 -
串口中斷
+關注
關注
0文章
64瀏覽量
13882 -
Systick
+關注
關注
0文章
62瀏覽量
13071
發布評論請先 登錄
相關推薦
STM32 SYSTICK定時器常見問題
我們知道,STM32庫函數里通常使用來自內核的系統定時器SYSTICK作為時基,實現計數延時。一般來講,ST公司提供的庫函數里將SYSTICK定時器配置為1ms的定時器中斷,每產生1m
發表于 09-13 16:20
?3039次閱讀
CKS32F4xx系列MCU SysTick定時器的原理及使用方法
本課將為大家講解CKS32F4xx系列產品的SysTick定時器原理及使用方法。SysTick定時器也叫SysTick滴答定時器,屬于Cortex-M4內核外設。
STM32基本定時器中斷的使用方法
文章目錄摘要配置工程配置定時器參數使能定時器配置定時器參數開啟定時器中斷生成工程編寫用戶程序編寫中斷回調函數啟動定時器編譯下載程序摘要??本章講解STM32基本定時器中斷的
發表于 12-13 07:10
STM32單片機Systick函數的使用方法
在CMSIS中提供的函數是SysTick_Config(uint32_t ticks); 該函數設置了自動重載入計數器(LOAD)的值,SysTick IRQ的優先級,復位了計數器(VAL)的值,開始計數并打開SysTick I
發表于 12-28 15:07
?5947次閱讀
STM32關全局中斷的方法 STM32中斷類型
。 STM32中斷類型: 系統異常:內核水平 10個 外部中斷:外設水平 60個 STM32關全局中斷有多種
STM32—關于SYSTICK系統時鐘的詳解及學習筆記
/*配置SYSTICK很簡單,只需在SySTick_Config中寫入一個不大于2^24次方的數,就可以產生systick中斷1.無需對NVIC進行配置,在
發表于 11-30 15:51
?15次下載
STM32 SysTick_Handler/SysTickHandler 無法進入中斷的問題
STM32 SysTick_Handler/SysTickHandler 無法進入中斷的問題首先,在3.5版本的庫函數中,SysTickHandler改為了SysTick_Handle
發表于 12-02 18:36
?17次下載
Systick_Handler B.卡死處理方法
文章目錄Systick_Handler B.卡死處理方法1.中斷開啟未處理!2.引入C/C++代碼而未作配置處理總結注:主要總結國產GD32和STM32單片機卡死在*.s啟動文件
發表于 12-03 15:21
?21次下載
stm32 SysTick/EXTI/USART中斷過程
本文中例子所使用的是stm32f103+標準庫函數, 聲明.SysTick中斷過程SysTick是配置好重裝載計數器(STK_LOAD)后, 并使能了
發表于 12-23 19:55
?3次下載
評論