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

    文章

    1592

    浏览量

    107824
  • 寄存器
    +关注

    关注

    31

    文章

    5308

    浏览量

    119981
  • NVIC
    +关注

    关注

    0

    文章

    35

    浏览量

    11675
  • 串口中断
    +关注

    关注

    0

    文章

    64

    浏览量

    13855
  • Systick
    +关注

    关注

    0

    文章

    62

    浏览量

    13042
收藏 人收藏

    评论

    相关推荐

    STM32 SYSTICK定时器常见问题

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

    STM32CubeMx外部中断基本使用方法

    第一步:现在STM32CubeMx 中配置所需要IO口外部中断模式。
    发表于 05-31 15:32 4021次阅读
    <b class='flag-5'>STM32</b>CubeMx外部<b class='flag-5'>中断</b>基本<b class='flag-5'>使用方法</b>

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

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

    中断的作用及使用方法

    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 5929次阅读

    使用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 7802次阅读

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

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

    STM32—关于SYSTICK系统时钟的详解及学习笔记

    /*配置SYSTICK很简单,只需在SySTick_Config中写入一个不大于2^24次方的数,就可以产生systick中断1.无需对NVIC进行配置,在
    发表于 11-30 15:51 15次下载
    <b class='flag-5'>STM32</b>—关于<b class='flag-5'>SYSTICK</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>

    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>过程

    STM32学习---中断EXTI(按键中断)

    //中断实验--利用按键进行的中断;//首先分析STM32中断机制:/*    因为STM32中断
    发表于 01-14 15:31 14次下载
    <b class='flag-5'>STM32</b>学习---<b class='flag-5'>中断</b>EXTI(按键<b class='flag-5'>中断</b>)

    STM32SysTick时钟源来自哪里?

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