个人对STM32 SysTick的总结(寄存器操作)

发布时间:2024-03-28  

一、概述:

SysTick是一个简单的递减24位计数器。如果你不需要再应用程序中嵌入操作系统,SysTick可以作为简单的延时和产生周期性的中断。

状态控制寄存器的第0位可以使能计数器,当前值寄存器随着时钟一直递减,当他减到0的时候,重装载寄存器就会重新装载这只的值,计数器继续从这个值递减。


二、相关寄存器:

2.1SysTick->CTRL 状态和控制寄存器

a6b115d4-ac26-11ee-aa22-92fbcf53809c.jpg

位16:当前值寄存器递减到0,位16置1

位2:时钟源选择位,0:使用外部参考时钟;1:使用内核时钟

位1:使能SysTick中断,当前值寄存器递减到0时产生中断

位0:SysTick时钟使能


2.2SysTick->LOAD 重装载值寄存器

a6bd978c-ac26-11ee-aa22-92fbcf53809c.jpg

当前值寄存器为0时,自动将重装载值重装到当前值计数器,重装载值的大小需要自己设置。


2.3 SysTick->VAL当前值寄存器

a6c179d8-ac26-11ee-aa22-92fbcf53809c.jpg

可读可写,当计数器使能时,这个寄存器的值开始递减,使用前后注意清零。

三、SysTick逻辑图

a6c58bd6-ac26-11ee-aa22-92fbcf53809c.jpg


a6d2c760-ac26-11ee-aa22-92fbcf53809c.jpg


四、时钟频率与延时

4.1时钟选择采用参考8分频的参考时钟比较准,所以此处SysTick计数器选择21M的时钟。

a6e0a4c0-ac26-11ee-aa22-92fbcf53809c.jpg


4.2如何延时1us时钟频率为21M,也就是1s的时间技术21M次。由此可知计数一次用了 (1/21000000)s ,用了(1/21000)ms, 用了(1/21) us,所以,1us计数21次。
4.3如何延时1ms因为1ms = 1000us,所以综上所述,1ms计数1000*21次计数,1ms也就是21000次计数
4.4最大延时24位计数器能保存的最大值 : 16777215。最大延时时间=16777215 /21=798915us=798.915ms



五、示例代码


#include "delay.h"

#define Value_us 21#define Value_ms 21000

void delay_init(void){ SysTick->CTRL &= (1 << 2); //控制寄存器位2置0,选择8分频时钟 SysTick->CTRL &= ~(1 << 0); //关闭计数器}void delay_us(u32 num){ SysTick->LOAD = num * Value_us; SysTick->VAL = 0; SysTick->CTRL |= (1 << 0); //使能计数器 while (!(SysTick->CTRL & 1<<16)); //判断是否计数完毕 SysTick->VAL = 0; SysTick->CTRL &= ~(1 << 0); //关闭计数器 }void delay_ms(u32 num){ SysTick->LOAD = num * Value_ms; SysTick->VAL = 0; SysTick->CTRL |= (1 << 0); //使能计数器 while (!(SysTick->CTRL & 1<<16)); SysTick->VAL = 0; SysTick->CTRL &= ~(1 << 0); //关闭计数器 }


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    定时器实验(2024-01-18)
    定时器实验;实验  定时器实验 一.实验目的1.学习8051内部定时器/计数器的使用和编程方法2.进一步掌握中断处理程序的编写方法 二.实验说明对内部定时/计数器的编程主要是定时常数的设置和有关控制寄存器......
    灯输出和每个转向指示灯处测量的平均电压和/或电流值得出的。 运行仿真后,您将可以访问相应的实验报告和“结果”部分中的绘图信号,也可以通过双击打开它们。正常运行下应该可以看到如下实验报告图3和信号波形图4。 图3 标称分析实验报告......
    各种波形并保存截图,用于包含在实验报告中。   图7.Scopy屏幕截图。 问题 单个D型锁存器将使输入信号延迟1/2时钟周期。说明时钟相位相反的两个串联D型锁存器如何构成主节点D型触发器,可以......
    狗对时间的要求不是很精确,所以,时钟有些偏差,都是可以接受的。   涉及的寄存器有:键寄存器IWDG_KR、预分频器IWDG_PR、重装载寄存器IWDG_RLR、状态寄存器|IWDG_SR......
    可存储1000组测试数据,掉电不丢失。可随时通过U盘导出,也可调取历史数据进行分析、比对。 ▶ 赠送上位机软件,生成word格式试验报告,实现变参数分析、光标读数、曲线比对等功能。 ▶ 设备轻小便携,面板......
    内存接口概念(2024-07-19)
    内存接口概念;       学习总结。        S3C2440 芯片内包含GPIO控制器,UART,I2C等控制器,CPU操作寄存器用来控制引脚输出或者输入,操作寄存器实......
    到之前的工作模式:     恢复现场     六、核心语句   实验现象:通过按键中断,控制led灯的亮灭。    1、在进入中断模式之前需要进行前一个模式的各个寄存器的保存工作        2、在开......
    当初学习STM32的时候有一些跟风的因素,自以为学的芯片越多就越厉害 =_=、 其实,学习嵌入式重要的是整体的工程思想和项目经验积累,说到底这些芯片,我感觉学习起来都差不多吧,无非就是对内资源(寄存器......
    主要实现STM32时钟树的配置和中断系统的设置功能,是C函数中最重要的一个文件,stmxx.h文件则是最底层的寄存器定义文件,里面定义了STM32芯片内部所有寄存器的地址和结构,通过C语言来调用这里面的寄存器实......
    我们要先设置MPLL的值,然后通过分频(寄存器CLKDIV)来进行对PCLK的设置)             2、设置预分频器(TCFG0)   3、设置分频器(TCFG1)   4、设置MUX电路(默认)   5......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>