STM32单片机对Systick心跳定时器的设计

发布者:SparkStar22最新更新时间:2024-04-22 来源: elecfans关键字:STM32  单片机  Systick 手机看文章 扫描二维码
随时随地手机看文章

Systick :系统心跳定时器,提供系统节拍

裸机程序中可作为独立的延时定时器


用途:

1.产生操作系统的时钟节拍

2.便于不同处理器之间程序移植

SysTick定时器被捆绑在NVIC中,异常号15

3.作为一个闹铃测量时间用于测量时间,

但当处理器在调试期间被喊停(halt)时,则SysTick定时器亦将暂停运作。


它有四个寄存器

STK_CSR, 0xE000E010 -- 控制寄存器

STK_LOAD, 0xE000E014 -- 重载寄存器

STK_VAL, 0xE000E018 -- 当前值寄存器

STK_CALRB, 0xE000E01C -- 校准值寄存器

STM32的时钟源

选择外部时钟源时,则Systick时钟为HCLK /8

选择内核时钟源时,则Systick时钟为HCLK

延时编程原理

systick定时器是24位的递减计数器,设定初值并使能它后,它会每个系统时钟周期计数器减1,

计数到0 时,将从RELOAD 寄存器中自动重装载定时初值。只要不把它在SysTick控制及状态寄存器中的使能位清除,就永不停息。

延时编程步骤

1.计算出产生1us 需要多少个时钟周期 fac_us;

2.计算出RELOAD寄存器的值

也就是产生相应延时所需要的时钟周期数

RELOAD=fac_us * nus

3.开启计数

4.循环检测计数到0的标志位;

5.清空计数器,关闭定时器

=======================================

SysTick异常配置步骤

1对CTRL//LOAD/VAL三个寄存器进行了配置,

2初始化SysTick使用的时钟,

3清除系统当前值,装入重装值,

4使能SysTick,使SysTick能响应中断

=======================

当SysTick定时器计到0时,将把COUNTFLAG位置位;而下述方法可以对其清零:

1.读取SysTick 控制及状态寄存器(STCSR)

2.往SysTick 当前值寄存器(STCVR)中写任何数据

只有当VAL 值为0 时,计数器自动重载RELOAD

======================

库函数

使用ST的函数库使用systick的方法,严格按照以下顺序:

1、调用SysTick_CounterCmd() -- 失能SysTick计数器

2、调用SysTick_ITConfig () -- 失能SysTick中断

3、调用SysTick_CLKSourceConfig() -- 设置SysTick时钟源。

4、调用SysTick_SetReload() -- 设置SysTick重装载值。

5、调用SysTick_ITConfig () -- 使能SysTick中断

6、调用SysTick_CounterCmd() -- 开启SysTick计数器

Systick中断服务函数

void SysTick_Handler(void);

==========================

寄存器版代码注解

使用外部8M时钟,锁相环里出来的频率是72M,AHB预分频后是72M,

systick固定HCLK时钟的1/8,即9M,那么延时1us是9个时钟

C代码

voiddelay_init(u8SYSCLK)//系统时钟是72MHz,SYSCLK=72

{

SysTick-》CTRL&=0xfffffffb;//bit2清0,也就是配置选择外部时钟

fac_us=SYSCLK/8;//硬件8分频,fac_us得出的值是要给下面的时钟函数用的

fac_ms=(u16)fac_us*1000;

}

voiddelay_us(u32nus)//nus假如为10us

{

u32temp;

SysTick-》LOAD=nus*fac_us;//延时10us的话就是10*9=90,装到load寄存器中

SysTick-》VAL=0x00;//计数器清0,因为currrent字段被手动清零时,load将自动重装到VAL中

SysTick-》CTRL=0x01;//配置使异常生效,也就是计数器倒数到0时将发出异常通知

do

{

temp=SysTick-》CTRL;//时间到了之后,该位将被硬件置1,但被查询后自动清0

}

while(temp&0x01&&!(tmep&(1《《16)));//查询

SysTick-》CTRL=0x00;//关闭计数器

SysTick-》VAL=0x00;//清空val

}

//这个while循环,判断如果Systick还在Enable的状态,并且计数器还没数到0,

就不停的循环把当前的SysTick-》CTRL寄存器值写入变量temp,继续下一次判断。

当Systick被Disable或者计数器数到0了,就停止循环

还有一个注意点:

LOAD寄存器是24位的 最大值0xffffff

那么延时最大值计算公式为

nms《=0xffffff*8*1000/SYSCLK (SYSCLK单位Hz)

则nms的最大值为1864.135ms ,即1864毫秒


关键字:STM32  单片机  Systick 引用地址:STM32单片机对Systick心跳定时器的设计

上一篇:STM32单片机Systick函数的使用方法
下一篇:如何采用STM32单片机实现SPI的驱动

推荐阅读最新更新时间:2024-11-09 14:35

8051单片机架构类型有哪些
8051单片机使用8位数据总线,因此它们最多可以支持64K的外部数据存储器和64k的外部程序存储器。总的来说,8051单片机可以寻址128k的外部存储器。 当数据和代码位于不同的内存块时,这种架构被称为哈佛架构。如果数据和代码位于同一内存块中,则该架构称为冯诺依曼架构。 冯诺依曼架构 冯诺依曼架构最早由计算机科学家约翰冯诺依曼提出。在这种架构中,指令和数据都存在一个数据路径或总线。因此,CPU一次执行一项操作。它要么从内存中获取指令,要么对数据执行读/写操作。因此取指令和数据操作不能同时发生,共享公共总线。 冯诺依曼架构支持简单的硬件,它允许使用单个顺序存储器。今天的处理速度大大超过了内存访问时间,只使用了非常快且数量
[单片机]
8051<font color='red'>单片机</font>架构类型有哪些
STM32串口USART配置、发送与接收
一、配置时钟:GPIO时钟、串口时钟、复用引脚时钟 二、配置GPIO结构体 三、配置串口结构体 //串口初始化示例 void usart_init(void) { //创建结构体 GPIO_InitTypeDef gpioinitStructure; USART_InitTypeDef usartinitStructure; NVIC_InitTypeDef NVICinitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); //设置时钟 RCC_APB2PeriphClockCmd(RCC_APB2Pe
[单片机]
<font color='red'>STM32</font>串口USART配置、发送与接收
意法半导体STM32U5系列MCU上新 提高物联网和嵌入式应用性能和能效
意法半导体STM32U5系列MCU上新 提高物联网和嵌入式应用性能和能效 • Ajax Systems已使用 新STM32U5 MCU开发下一代无线安保和智能家居解决方案 • 新STM32U5系列MCU是首款获得NIST嵌入式随机数熵源认证的通用MCU 2023年3月3日,中国 - 服务多重电子应用领域、全球排名前列的半导体公司意法半导体(STMicroelectronics,简称ST;)意法半导体近日宣布,其市场前沿的STM32 微控制器(MCU)产品家族再扩阵容,推出新款STM32U5芯片,在降低功耗的同时提高了性能,并延长了续航时间,提升了能效。 STM32U5产品已获得NIST嵌入式随机数熵源认证,
[单片机]
意法半导体STM32U5系列<font color='red'>MCU</font>上新  提高物联网和嵌入式应用性能和能效
51单片机学习——8.3--串口通信
串口通信原理 计算机串口通信基础 随着多微机系统的广泛应用和计算机网络技术的普及,计算机的通信功能愈来愈显得重要。计算机通信是指计算机与外部设备或计算机与计算机之间的信息交换。 通信有并行通信和串行通信两种方式。在多微机系统以及现代测控系统中信息的交换多采用串行通信方式。 计算机通信 计算机通信是将计算机技术和通信技术的相结合,完成计算机与外部设备或计算机与计算机之间的信息交换 。可以分为两大类:并行通信与串行通信。 串行通信 串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送。 串行通信的特点:传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。 并行通信 并行通信
[单片机]
51<font color='red'>单片机</font>学习——8.3--串口通信
51单片机特殊功能寄存器有哪些_功能是什么
  51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。   51单片机特殊功能寄存器   1、21个寄存器介绍   51系列单片机内部主要有四大功能模块,分别是I/O口模块、中断模块、定时器模块和串口通信模块(串行I/O口
[单片机]
51<font color='red'>单片机</font>特殊功能寄存器有哪些_功能是什么
STM32的ADC用法你都知道吗?
AD采样在电路中是一种比较常见的功能,可以用于电池电压检测、传感器值读取、信号采集等。STM32的ADC,由于引入了DMA,以及多种触发源,功能自然强大,用法也多种多样。这里简单说下单通道情况下,AD采样的几种用法。 1、AD单次转换+软件启动 最基本的用法,通过程序启动AD,AD采集一次,我们就去读一次。这种情况,建议开启AD转换完成中断,在中断中读出AD值并做处理。 这种方式的优点是配置简单,缺点么,太T么简单~ 初始化的时候,启动一次。然后在主循环里,每隔一秒启动一次。 在中断回调函数里,进行相关处理: 电脑输出如下: 2、连续转换+软件启动 在方法1的基础上做调整,从单次转换,变成连续转换。也就是说,只需要
[单片机]
<font color='red'>STM32</font>的ADC用法你都知道吗?
介绍一种关于STM32 ADC 多通道16路电压采集技术
下面介绍一种利用STM32单片机制作的16路多通道ADC采集电路图和源程序。采用USB接口与电脑连接,实则USB转串口方式,所以上位机可以用串口作为接口。电路图中利用LM324作为电压跟随器,起到保护单片机引脚的作用。直接在电脑USB取点,省去外接电源麻烦,实测耗电电流不到20ma. 1.主控电路图: 2. USB转串口电路图 3.LM324电压跟随器电路图 4.滤波电路图 5.16路接口电路图 6.电源电路图 7.16路ADC初始化程序: voidAdc_Init(void) { //先初始化IO口 RCC-》APB2ENR|=0X7《《2;//使能PORTAPORABPORTC口时钟 GPIOA-》CR
[单片机]
介绍一种关于<font color='red'>STM32</font> ADC 多通道16路电压采集技术
意法半导体和Sensory 开展合作,赋能大众市场嵌入式声控技术应用
意法半导体和Sensory 开展合作,通过STM32Cube 软件生态系统赋能大众市场嵌入式声控技术应用 STM32 MCU搭配 Sensory 的 VoiceHub 技术,简化穿戴设备、物联网和智能家居产品声控用户界面开发 2022 年 6 月 20 日,中国——服务多重电子应用领域、全球排名前列的半导体公司意法半导体(STMicroelectronics,简称ST),与世界排名前列的嵌入式语音识别技术供应商、意法半导体授权合作伙伴 Sensory Inc公司 宣布了一项合作协议,赋能STM32 微控制器 (MCU)用户社区为各种智能嵌入式产品开发直观的语音识别用户界面及产品原型。 该合作项目整合了意法半导体S
[模拟电子]
意法半导体和Sensory 开展合作,赋能大众市场嵌入式声控技术应用
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved