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浏览量
120232 -
NVIC
+关注
关注
0文章
35浏览量
11695 -
串口中断
+关注
关注
0文章
64浏览量
13882 -
Systick
+关注
关注
0文章
62浏览量
13073
发布评论请先 登录
相关推荐
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
•5948次阅读
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次下载
评论