0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32 SysTick中断使用方法

冬至子 来源:纷纭杂谈 作者:CY_CHEN 2023-07-22 10:18 次阅读

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

    文章

    1554

    浏览量

    107032
  • 寄存器
    +关注

    关注

    30

    文章

    5032

    浏览量

    117746
  • NVIC
    +关注

    关注

    0

    文章

    35

    浏览量

    11519
  • 串口中断
    +关注

    关注

    0

    文章

    63

    浏览量

    13614
  • Systick
    +关注

    关注

    0

    文章

    62

    浏览量

    12950
收藏 人收藏

    评论

    相关推荐

    STM32 SYSTICK定时器常见问题

    我们知道,STM32库函数里通常使用来自内核的系统定时器SYSTICK作为时基,实现计数延时。一般来讲,ST公司提供的库函数里将SYSTICK定时器配置为1ms的定时器中断,每产生1m
    发表于 09-13 16:20 2458次阅读

    CKS32F4xx系列MCU SysTick定时器的原理及使用方法

    本课将为大家讲解CKS32F4xx系列产品的SysTick定时器原理及使用方法SysTick定时器也叫SysTick滴答定时器,属于Cortex-M4内核外设。
    的头像 发表于 12-18 09:21 530次阅读
    CKS32F4xx系列MCU <b class='flag-5'>SysTick</b>定时器的原理及<b class='flag-5'>使用方法</b>

    STM32SysTick定时中断分析

    SysTick_Config()函数,系统就为我们做了大量的事情。系统完成的事情如下所示: 1.该函数的参数就是预装值 2.中断设置成最低级别,并将计数寄存器清零。 3.配置SysTick的时钟为HCLK
    发表于 11-14 18:25

    中断的作用及使用方法

    1.中断是什么2.中断的作用3.中断使用方法
    发表于 08-13 07:13

    STM32基本定时器中断使用方法

    文章目录摘要配置工程配置定时器参数使能定时器配置定时器参数开启定时器中断生成工程编写用户程序编写中断回调函数启动定时器编译下载程序摘要  本章讲解STM32基本定时器中断
    发表于 12-13 07:10

    STM32单片机Systick函数的使用方法

    在CMSIS中提供的函数是SysTick_Config(uint32_t ticks); 该函数设置了自动重载入计数器(LOAD)的值,SysTick IRQ的优先级,复位了计数器(VAL)的值,开始计数并打开SysTick I
    发表于 12-28 15:07 5727次阅读

    使用STM32单片机进行外部中断实验的详细资料说明

    实验目的 理解中断的基本概念。 掌握STM32中断源及中断优先级。 掌握STM32外部中断
    发表于 04-29 18:24 11次下载
    使用<b class='flag-5'>STM32</b>单片机进行外部<b class='flag-5'>中断</b>实验的详细资料说明

    STM32中的SysTick时钟源来自哪里?

    STM32SysTick时钟源来自哪里?
    的头像 发表于 03-03 14:32 7398次阅读

    STM32关全局中断方法 STM32中断类型

    STM32中断类型: 系统异常:内核水平 10个 外部中断:外设水平 60个 STM32关全局中断有多种
    的头像 发表于 07-22 10:52 2.7w次阅读

    Cortex-M4和Cortex-M3内核的systick不进中断的软件延时

    时会导致系统不稳定,并且systick中断的优先级还比一般中断的优先级要高,这可能会导致其他中断程序被打断。这里给出一种systick不进
    发表于 12-01 11:51 1次下载
    Cortex-M4和Cortex-M3内核的<b class='flag-5'>systick</b>不进<b class='flag-5'>中断</b>的软件延时

    STM32 SysTick_Handler/SysTickHandler 无法进入中断的问题

    STM32 SysTick_Handler/SysTickHandler 无法进入中断的问题首先,在3.5版本的库函数中,SysTickHandler改为了SysTick_Handle
    发表于 12-02 18:36 17次下载
    <b class='flag-5'>STM32</b> <b class='flag-5'>SysTick</b>_Handler/SysTickHandler 无法进入<b class='flag-5'>中断</b>的问题

    Systick_Handler B.卡死处理方法

    文章目录Systick_Handler B.卡死处理方法1.中断开启未处理!2.引入C/C++代码而未作配置处理总结注:主要总结国产GD32和STM32单片机卡死在*.s启动文件
    发表于 12-03 15:21 21次下载
    <b class='flag-5'>Systick</b>_Handler   B.卡死处理<b class='flag-5'>方法</b>

    STM32F429第十篇之systick

    位计数器递减计数可以产生中断本文主要介绍该功能在STM32F429上的使用方法。本文主要参考文献:Joesph Yiu.ARM cortex-M3与cortex-M4权威指南(第三版).清华大学出版社ST.
    发表于 12-07 11:51 7次下载
    <b class='flag-5'>STM32</b>F429第十篇之<b class='flag-5'>systick</b>

    stm32 SysTick/EXTI/USART中断过程

    本文中例子所使用的是stm32f103+标准库函数, 声明.SysTick中断过程SysTick是配置好重装载计数器(STK_LOAD)后, 并使能了
    发表于 12-23 19:55 3次下载
    <b class='flag-5'>stm32</b> <b class='flag-5'>SysTick</b>/EXTI/USART<b class='flag-5'>中断</b>过程

    STM32SysTick时钟源来自哪里?

    STM32SysTick时钟源来自哪里?
    的头像 发表于 10-26 15:58 977次阅读
    <b class='flag-5'>STM32</b>的<b class='flag-5'>SysTick</b>时钟源来自哪里?