STM32学习笔记(七)---SysTick
STM32学习笔记(七)—SysTick
文章目录
- STM32学习笔记(七)---SysTick
- 一、SysTick简介
- 二、SysTick功能框图
- 三、SysTick寄存器
- 四、SYSTICK使用
- 1.中断方式使用
- 2.轮询方式使用
- 五、参考资料:
- 五、参考资料:
一、SysTick简介
SysTick属于CM4内核中的一个外设,内嵌在NVIC中,有关寄存器的定义和部分库函数都在core_cm4.h头文件中实现。
SysTick(系统滴答定时器)是一个24bit的向下递减的计数器,计数器每计数一次的时间为1/SYSCLK。
当重装载初值寄存器的值减到0的时候,系统定时器就产生一次中断,一次循环往复。
系统定时器一般用于操作系统,用于产生时基,维持操作系统心跳。
二、SysTick功能框图
三、SysTick寄存器
寄存器名称 | 寄存器描述 |
---|---|
CTRL | 控制及状态寄存器 |
LOAD | 重装载数值寄存器 |
VAL | 当前数值寄存器 |
CALIB | 校准数值寄存器 |
SysTick控制和状态寄存器
位 | 名称 | 类型 | 复位值 | 描述 |
---|---|---|---|---|
16 | COUNTFLAG | RO | 0 | 当SysTick定时器计数到0时,该位变为1,读取寄存器或清除计数器当前值会被清零 |
2 | CLKSOURCE | R/W | 0 | 时钟选择位:0=SYSCLK/8, 1=SYSCLK |
1 | TICKINT | R/W | 0 | 1 = SYSTICK定时器计数减至0时产生异常 0 = 不产生异常 |
0 | ENABLE | R/W | 0 | SYSTICK定时器使能 |
SysTick重装载值寄存器
位 | 名称 | 类型 | 复位值 | 描述 |
---|---|---|---|---|
23:0 | RELOAD | R/W | 未定义 | 定时器计数为0时的重装载值 |
SysTick当前值寄存器
位 | 名称 | 类型 | 复位值 | |
---|---|---|---|---|
23:0 | CURRENT | R/Wc | 0 | 读出值为SYSTICK定时器的当前值。写入任何值都会清除寄存器,SYSTICK控制和状态寄存器中的COUNTFLAG也会清零 |
四、SYSTICK使用
1.中断方式使用
可以直接通过库函数SysTick_Config(uint32_t ticks)来配置,该函数位于core_m4.h文件中
__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
{/* 重装载初值超出范围 */if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) { return (1UL); } /* 设置重装载初值 */SysTick->LOAD = (uint32_t)(ticks - 1UL); /* 设置SysTick定时器中断优先级,这里将SysTick的优先级设置位15(0-15),为系统最低 */NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* 设置当前数值寄存器 */SysTick->VAL = 0UL;/* 设置时钟源的选择:SYSCLK=168M * 使能系统定时器中断* 使能定时器*/SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |SysTick_CTRL_TICKINT_Msk |SysTick_CTRL_ENABLE_Msk; return (0UL);
}
/* SystemCoreClock / 1000 1ms中断一次* SystemCoreClock / 1000000 1us中断一次*/
Systick_Config(SystemCoreClock / 1000);
注意:这里的tick值最大为2^24 = 16,777,216,不能超过此值。因此上面函数不能够配置1s中断(1s中断tick值为:168000000>16777216)。
void SysTick_Handler(void)
{/* 根据自己的实际需求来写 */
}
2.轮询方式使用
若要在轮询模式中使用SysTick定时器,则需要通过上述寄存器来配置。可以利用SysTick控制和状态寄存器的(SysTick->CTRL)中的计数标志来确定定时器何时变为0。
Systick->CTRL = 0; //禁止SysTick
SysTick->LOAD = 0xFF; //计数范围255-0(256个周期)
SysTick->VAL = 0; //清除当前值和计数标记
SysTick->CTRL = 5; //使能SysTick定时器并使用处理器时钟
while((SysTick->CRTL & 0x00010000) == 0); //等待计数标志置位
SysTick->CTRL = 0; //禁止SysTick
上面这段代码便实现了延时265个时钟周期的延时功能,具体的延时函数可以参考正点原子的延时函数。
上述两种实现方法都是在裸机条件下的使用方法,在实际应用时可以根据需求做选择。
五、参考资料:
1.《零死角玩转STM32-F407霸天虎》(SysTick)
2.《STM32F4xx标准外设库源码》(core_cm4.h)
五、参考资料:
1.《零死角玩转STM32-F407霸天虎》(SysTick)
2.《STM32F4xx标准外设库源码》(core_cm4.h)
3.《ARM Cortex-M3与Cortex-M4权威指南》(9.5 SysTick定时器)
STM32学习笔记(七)---SysTick相关推荐
- STM32学习笔记(七) ADC模数转换测电平(普通和DMA模式)
嵌入式系统在微控制领域(温度,湿度,压力检测,四轴飞行器)中占据着重要地位,这些功能的实现是由微处理器cpu(如stm32)和传感器以及控制器共同完成的,而连接他们,使它们能够互相正常交流的正是本小节 ...
- 滴答定时器的计数模式_【高手私藏】STM32学习笔记:SysTick滴答时钟
今天我们来说说SysTick定时器.SysTick定时器在从参考手册中根本没有介绍.我费了九牛二虎之力才在一个犄角格拉里找到SysTick定时器的英文版的说明.在Cotex-M3有介绍,为什么要找ST ...
- 【K210】K210学习笔记七——使用K210拍摄照片并在MaixHub上进行训练
[K210]K210学习笔记七--使用K210拍摄照片并在MaixHub上进行训练 前言 K210准备工作 K210如何拍摄照片 准备工作 拍摄相关代码定义 用K210拍摄到的照片在MaixHub平台 ...
- 《STM32学习笔记》4——核心功能电路与编程(下)
接上文,文中的图片,大多数来自视频的截图(来自洋桃电子). 欢迎大家批评指正! STM32学习笔记-专栏 文章目录 一.蜂鸣器驱动 1.蜂鸣器介绍 2.蜂鸣器电路 3.蜂鸣器程序 二. MIDI 音乐 ...
- STM32学习笔记(13)——模数转换ADC
这个月一直忙于准备考试,已经考完一半科目了,偷闲写了这篇文章.因为还没考完试,估计还得咕一段时间了. STM32学习笔记(13)--模数转换ADC 第一部分:ADC功能框图 一.输入电压 二.输入通道 ...
- STM32学习笔记(八)丨ADC模数转换器(ADC单、双通道转换)
本篇文章包含的内容 一.ADC 模数转换器 1.1 ADC简介 1.2 逐次逼近型ADC工作原理 1.3 STM32中的ADC基本结构 1.4 STM32中ADC的输入通道 1.5 STM32中的AD ...
- STM32学习笔记——基于正点原子例程编码器模式小结
STM32学习笔记--基于正点原子例程编码器模式小结 最近一段时间学习了,STM32f4的编码器功能,经过自己探索和他人的热心帮助,对于编码器模式有了一定了解.STM32f4单片机提供编码器模式,以便 ...
- 《STM32学习笔记》2——开发环境的建立
接上文,文中的图片知识,大多数来自视频的截图(来自洋桃电子). 欢迎大家批评指正! STM32学习笔记-专栏 文章目录 一.接口定义 1 芯片引脚整体简介 2 各部分引脚介绍 二.开发板简介 三.IS ...
- 【STM32学习笔记】#002 GPIO设置练习
系列文章目录 -[STM32学习笔记]#001 前期准备 文章目录 系列文章目录 前言 一.目标功能 二.CubeMX设置 1 端口设置1(Port Setting) 2 端口设置2(Port Set ...
最新文章
- 网络推广费用浅析有关导致百度快照倒退的因素是什么?
- 实际程序调用IndexWriter* writer = NULL
- 关于进程和线程以及句柄
- ubuntu apt-get指令和apt指令的区别?
- 在EXCEL中使用SQL语言对工作表进行操作
- 3.8Python数据处理篇之Numpy系列(八)---Numpy的梯度函数
- 「拖放」Mac 的底层能力,也是效率神技
- JAVA实现QQ登录、注册等功能
- 训练集和测试集 (Training and Test Sets):拆分数据
- 2018/9/18单舵轮AGV项目笔记之二
- 4月计算机领域的国际会议,计算机领域国际会议分区表
- 什么是服务器的上行带宽和下行带宽
- Win10--YOLOX训练和测试VOC格式数据
- webpack output.publicPath
- 除了支付宝,微信也能查询账单了!再也不担心钱花哪去了!
- 孙溟㠭先生书画艺术《贵妃》
- Jason Brown的R快速入门方法
- 蓝牙设备改参数教程_修改蓝牙设备的名称
- 2022网络搭建国赛公开题mail服务器搭建
- 一次SSD磁盘寿命耗尽导致的TiDB集群写入变慢问题处理