wordpress首页调用指定分类,seo渠道是什么意思,酷狗音乐网站开发语言,谷歌商店下载官方正版1.SysTick简介 SysTick是一种系统定时器#xff0c;可以用于实现操作系统、任务调度、时钟管理等功能。它通常集成在微控制器中#xff0c;并且是硬件实现的#xff0c;具有高精度和可靠性。
在ARM Cortex-M处理器中#xff0c;SysTick定时器可以配置为计数器模式或外部时…1.SysTick简介 SysTick是一种系统定时器可以用于实现操作系统、任务调度、时钟管理等功能。它通常集成在微控制器中并且是硬件实现的具有高精度和可靠性。
在ARM Cortex-M处理器中SysTick定时器可以配置为计数器模式或外部时钟模式。在计数器模式下SysTick定时器使用内部时钟作为时基可以产生中断以实现系统的定时功能和任务调度。在外部时钟模式下SysTick定时器使用外部时钟信号作为时基可以用于协调外部设备的时序和同步。
SysTick定时器通常具有以下特点
1. 高精度SysTick定时器通常可以提供高精度的计时功能以满足实时应用的要求。
2. 灵活性SysTick定时器可以通过软件配置来适应不同的应用场景和需求。
3. 可编程性SysTick定时器可以通过编程来实现各种定时功能例如系统节拍、超时检测、延时等。
2.SysTick使用方法
STM32系列微控制器中的SysTick定时器可以用于实现系统的定时功能和任务调度。以下是使用SysTick的基本步骤
1. 启用SysTick定时器
首先需要启用SysTick定时器通过设置SysTick控制和状态寄存器STK_CTRL的ENABLE位为1来完成。可以使用以下代码片段实现
SysTick-CTRL | SysTick_CTRL_ENABLE_Msk;2. 配置SysTick时钟源
SysTick定时器可以使用内部时钟CPU时钟或外部时钟作为时基。通过设置SysTick控制和状态寄存器的CLKSOURCE位来选择时钟源。例如要使用CPU时钟作为时基可以使用以下代码片段
SysTick-CTRL | SysTick_CTRL_CLKSOURCE_Msk;3. 配置定时周期
SysTick定时器以一个固定的频率递减计数当计数达到零时会触发中断。可以通过设置SysTick重载值寄存器STK_LOAD来配置定时周期。例如要设置定时周期为1毫秒可以使用以下代码片段假设使用的时钟频率为72MHz
SysTick-LOAD 72000-1; // 72MHz / 1000Hz - 14. 启用中断
如果需要在定时周期结束时触发中断可以设置SysTick控制和状态寄存器的TICKINT位为1。例如要启用中断可以使用以下代码片段
SysTick-CTRL | SysTick_CTRL_TICKINT_Msk;5. 中断处理
在定时周期结束时SysTick定时器会触发中断。可以编写中断处理函数来执行相应的操作。例如在Cortex-M系列处理器中可以使用以下方式定义SysTick中断处理函数
void SysTick_Handler(void)
{// 在这里执行需要定时的任务
}6. 启动定时器
最后通过设置SysTick控制和状态寄存器的ENABLE位为1来启动定时器。例如可以使用以下代码片段
SysTick-CTRL | SysTick_CTRL_ENABLE_Msk;通过以上步骤就可以使用SysTick定时器实现系统的定时功能和任务调度了。需要根据具体的需求进行配置和使用例如调整定时周期、启用/禁用中断等。请注意具体的寄存器名称和位定义可能因STM32系列型号而有所差异请查阅相关的参考手册获取准确的信息。
3.SysTick定时器实例 由于SysTick定时器是内核里面的外设所以需要包含头文件“core_cm3.h”。
1. SysTick_Config
static __INLINE uint32_t SysTick_Config(uint32_t ticks)
{ //reload寄存器位24bit最大值为2^24if (ticks SysTick_LOAD_RELOAD_Msk) return (1); //配置reload寄存器的初始值 SysTick-LOAD (ticks SysTick_LOAD_RELOAD_Msk) - 1; //配置中断优先级为14-1 15优先级为最低 NVIC_SetPriority (SysTick_IRQn, (1__NVIC_PRIO_BITS) - 1); //配置counter计数器的值SysTick-VAL 0; //分别配置systick的时钟为72M使能中断使能systick SysTick-CTRL SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk; return (0);
} SysTick_Config()需要传进去一个形参这个形参是要被写入重装载寄存器LOAD里面。
2.SysTick定时是时间计算
t reload * (1/clk)
clk 72M时 t (72)*(1/72M) 1us
clk 72M时 t (72000)*(1/72M) 1ms
3. 编写延时函数
首先调用 SysTick_Config()函数传入参数72就是1us,72000就是1ms。
SysTick_Config(72);
然后使用一个for循环计数执行一次for循环就代表1usfor循环里面再用一个while循环通过CTRL是否置1来 判断是都计时1us。
for(i 0;i us; i){while( ! ((SysTick-CTRL) (1 16)) );}
延时完成后需要关闭定时器
SysTick-CTRL ~SysTick_CTRL_ENABLE_Msk;
最后在main函数中调用这个延时函数并传递 一个形参即可。