Corrtex-M3/M4 SysTick定时器解析

Corrtex-M3/M4 SysTick定时器解析

SysTick定时器(系统节拍定时器)是一个24位向下计数器,可以周期性的产生SysTick异常.
Corrtex-M3/M4 SysTick定时器解析_第1张图片
Corrtex-M3/M4 SysTick定时器解析_第2张图片
Corrtex-M3/M4 SysTick定时器解析_第3张图片
在RTOS中,需要一个周期性的中断来定期的触发OS内核,如用于任务管理和上下文切换,延时,时间片轮转等.

为什么会在cortex-M处理器中有这么一个定时器呢,这是为了提供软件的可移植性.因为cortex-M处理器中都有这么一个计时器,为一种M3/M4微控制器实现的OS,也能适用于其他的M3/M4处理器.

若在裸机中使用SYSTICK,可以当作简单的定时器外设,产生周期中断,延时和时间测量.
Sys Ticky定时器包含4个寄存器.
Corrtex-M3/M4 SysTick定时器解析_第4张图片
systick计时器的组成:
Corrtex-M3/M4 SysTick定时器解析_第5张图片
在STM32F4中,参考时钟是AHB/8.在设置控制状态寄存器使能位后,在时钟的上升沿计数器都会减小,若计数减至0,会从加载寄存器中加载数值并继续运行.校准寄存器为软件提供校准信息.

Corrtex-M3/M4 SysTick定时器解析_第6张图片
COUNTFLAG在读取寄存器值或清除计数器当前值时会被清零.
如果不想产生systick中断,就不要将TICKINT置位,这个中断使能位不是M4内核中system handles管理的systick中断使能位,内核的那个使能位永远都是"使能"的,是关不掉的.
Corrtex-M3/M4 SysTick定时器解析_第7张图片
RELOAD值在设置上将需要的时钟数-1
Corrtex-M3/M4 SysTick定时器解析_第8张图片
写入任何值都会清零该寄存器,同时也会清零STK_CTRL寄存器的COUNTFLAG位.

SYStick寄存器使用的是处理器时钟,当工作在low power模式下时钟停止SYStick寄存器也停止.
SYStick的正确初始化顺序如下:
1.编程reload的数值
2.清除当前计数值
3.编程控制状态寄存器
这是因为在reset后,reload和current的值都是不确定的.

SysTick的挂起标志和中断优先级配置如下:
ICSR寄存器(Interrupt control and state register)
Corrtex-M3/M4 SysTick定时器解析_第9张图片
Corrtex-M3/M4 SysTick定时器解析_第10张图片
systick的中断优先级设置:
System handler priority registers (SHPRx)
每个field中高4位有效
Corrtex-M3/M4 SysTick定时器解析_第11张图片
Corrtex-M3/M4 SysTick定时器解析_第12张图片
如果正在响应systick中断,查询System handler control and state register (SHCSR)
Corrtex-M3/M4 SysTick定时器解析_第13张图片
在这里插入图片描述

你可能感兴趣的:(stm32)