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)
{
}
}
关键字:STM32 SysTick 中断使用
引用地址:
STM32 SysTick中断使用方法
推荐阅读最新更新时间:2024-11-17 17:15
STM32学习第二课——(操作)按键控制LED灯
对于按键控制LED灯这一课,首先要看小黑板的原理图如下所示 查看可知KEY0按键对应的IO口是PC1,KEY1按键所对应的IO口是PC13。这样就可以操作写代码了吗?不不不,在写代码之前必须要清楚自己要干什么,要实现一个什么样的功能,还有程序的基本流程图等等以下是代码部分: //FUNCTION:按键所对应的IO口初始化 //DATA:20180914 void key_Init(void) { GPIO_InitTypeDef GPIO_InitStructure;//定义结构体变量 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);//使能GPIO的时
[单片机]
STM32 | ISP下载的原理是什么?
ISP方式下载程序原理 ISP:In System Programing,在系统中编程 在STM32F10xxx里有三种启动方式: 以ISP方式下载程序时需要把STM32的BOOT0引脚置1、BOOT1引脚置0,即从系统存储区(System Memory)启动。为什么设置从System Memory启动就可以使用串口来下载我们的程序呢?那是因为在芯片出厂前ST官方已经把一段自举程序(BootLoader程序)固化到这一块存储区。对于STM32F103ZET6来说,System Memory的起始地址为0x1FFFF000,可在芯片手册的内存映射图里找到: 其通过串口来接收数据并烧写到用户闪存存储器的起始地址(0x08000
[单片机]
arm工作模式——异常和中断使用方法
Arm920T寄存器简单介绍: R1-R15:通用寄存器 R13:栈指针寄存器 R14:程序连接寄存器,当执行BL子程序调用指令时,R14中得到R15(程序计数寄存器pc)的备份,而当发生中断或异常时,对应的R14_svc、R14_irq等保存R15返回值。 R15:程序计数器pc CPSR:当前程序状态寄存器 1、T位(1位) Thumb/Arm。 2、I位与F位(5、6位)IRQ中断、FIQ中断开关。 SPSR:程序状态保存寄存器,SPSR中保存前一个工作模式的CPSR值。 异常发生时,将切换进入相应的异常模式,ARM920T cpu核自动完成如下工作,注意是自动完成。 1、在异常模式的连接寄存器R14中保存前一个
[单片机]
STM32学习--PWM测试
今天针对通用定时器的输入捕获和PWM输出进行了学习测试,使用库函数进行。 1. PWM输出测试 1.1 测试方法 输出测试使用软件调试方法,直接在MDK调试界面的逻辑分析仪进行。软件调试设置网上一堆一堆的,我只描述一下遇到问题点。 图中,软件仿真只用设1、2项,加入硬件调需设第3项。 打开逻辑分析仪,在setup中输入想看的端口,如下图设置。 在端口号上右击,选择bit,然后运行即可看PWM输出的效果。 1.2测试的程序 ① GPIO设置,主要是时钟、复用时钟、推挽输出、由于用默认的映射所以不用GPIO_PinRemapConfig。 void PWMOut_GPIO_Init() { GP
[单片机]
STM32_EXTI外部中断学习笔记
参考资料:《STM32F4xx中文参考手册》系统配置控制器以及中断和事件章节。 EXTI( External interrupt /evet controller) 之前接触过51单片机的都了解到51单片机有两个外部中断 ,分别为外部中断0、1。用来实时地处理外部事件的一种内部机制。当某种外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理;中断处理完毕后.又返回被中断的程序处,继续执行下去。而STM32的则有与之功能相同的外部中断事件控制器。外部中断/事件控制器(EXTI)管理了控制器的 23个中断/事件线。每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的
[单片机]
STM32的断言机制——函数assert_param()
我们在学STM32的时候函数assert_param出现的几率非常大,上网搜索一下,网上一般解释断言机制,做为程序开发调试阶段时使用。 下面我就谈一下我对这些应用的看法,学习东西抱着知其然也要知其所以然。 我们在分析库函数的时候,几乎每一个函数的原型有这个函数assert_param(); 下面以assert_param(IS_GPIO_ALL_PERIPH(GPIOx));为例说一下我的理解, 函数的参数IS_GPIO_ALL_PERIPH(GPIOx),我们可以寻找到原型 #define IS_GPIO_ALL_PERIPH(PERIPH) (((*(uint32_t*)&(PERIPH)) == GPIOA_
[单片机]
基于STM32的BLE智能灯泡
本文将教您如何使用 STM32 制作启用 BLE 的智能灯泡。 家庭自动化涉及自动化家庭环境设备。为此,我们开发了一种易于安装的智能灯泡,并且可以通过网络浏览器或智能手机应用程序控制连接的设备。该项目的目的是使用网络浏览器或智能手机控制不同的家用电器。 一、介绍 该项目展示了一种使用 BleuIO Dongle 打开和关闭通过 5V 继电器连接到 STM32 Nucleo-144 的灯泡的简单方法。 您将需要两个加密狗,一个连接到 Nucleo 板,一个连接到计算机,运行 Web 脚本。 当 BleuIO Dongle 连接到 Nucleo 板的 USB 端口时,STM32 会识别它并直接开始广告。这允许另一个加密狗连接到它。
[单片机]
ST推M4 MCU,据称全球性能最强
“全球每交付2个Cortex-M系列微控制器,其中1个就是STM32,” ST(意法半导体) 微控制器全球市场部总监Daniel Colonna自豪地告诉EEWORLD。 意法半导体微控制器全球市场部总监Daniel Colonna 为了进一步扩大ST Cortex-M微控制器产品阵营,近日,ST宣布STM32 F4系列微控制器产品上市,至此,ST共有超过250种相互兼容的M内核产品的型号。新推出的F4系列产品基于最新的ARM Cortex-M4内核,在现有STM32微控制器产品组合中新增了信号处理功能,并提高了运行速度。新产品继续沿用STM32的蝴蝶logo,昭示着新的F4系列的产品将继续在STM32 Cortex-
[单片机]