STMCU小助手
发布时间:2022-12-26 15:00
|
概述 Systick是一个定时器,Cortex M3,M4的芯片中都有 Systick定时器通常用于实现延时函数,节约MCU资源 Systick定时器就是系统滴答定时器,是一个24位的倒计时定时器,计到0为止 从RELOAD寄存器中自动装载定时初始值 只要不把它在Systick控制及状态寄存器中的使能位清除,就永不停息,即使在睡眠模式下也能工作 Systick定时器被捆绑在NVIC中,用于产生SYSTICK异常 Systick中断的优先级可以设置 Systick的寄存器
CTRL
ENABLE 使能 TICKINT 是否产生中断 CLKSOURCE 时钟源,外部时钟源是HCLK的1/8,内核时钟是HCLK COUNTFLAG 一个FLAG LOAD
VAL
CALIB 不常用 相关函数 Systick_CLKSourceConfig 在固件库中的misc.c文件中(misc.c主要是用于中断管理) 函数实现如下
SysTick定义如下 core_cm3.h
同一个文件中,查看其结构体类型
查看Systick_CLKSourceConfig函数入口参数的可选项,点击断言
可以看到,可选性分别是 SysTick_CLKSource_HCLK_Div8 SysTick_CLKSource_HCLK 因此:
内核级别的SysTick_Config SysTick_Config core_cm3.h(用于内核级别的函数)
入口参数是两个中断之间的时间间隔
判断有效性
设定装载值
设定优先级,且初值为0
设置时钟源,开启中断,使能定时器 设定了两个Systick中断之间的间隔,也就是说每过这么多的时间,systick的中断服务函数就要运行一次 一种实现方法
这样子,每次Systick定时器减1,都需要进入一次中断服务函数,这样会对CPU造成很大的浪费 另一种实现方法 SYSTEM文件下的 delay.c delay.h
若使用操作系统,则使能该宏
delay_init函数
delay_us 注意:nus或nms不能大于LOAD的最大值,即2的24次方-1
———————————————— 版权声明:CodeForCoffee |
经验分享 | 利用STM32 TIMER实现同频跟随输出示例
经验分享 | 一个基于TIMER事件的中断响应话题_续
经验分享 | 一个基于TIMER事件的中断响应话题
11张图学会STM32定时器!
经验分享 | STM32U5系列TIMER+DMA+DAC应用演示
经验分享 | STM32G4 UART+TIMER+DMA应用示例
经验分享 | STM32定时器同步启动示例及应用提醒
经验分享 | STM32 TIMER+DMA输出PWM异常二案例
经验分享 | 更改STM32定时器周期后的输出疑问分析
基于定时器捕获测量脉宽的应用示例
微信公众号
手机版