STM32f4学习之路--嘀嗒定时器
来源:互联网 发布:mac iphoto能删除 编辑:程序博客网 时间:2024/04/28 03:27
嘀嗒定时器,作为stm32特有的系统定时器,它的出现,旨在为用户在使用OS以及延时的时候提供一个精确的定时。
SysTick 是 MDK 定义了的一个结构体(在 core_m4.h 里面),里面包含 CTRL、LOAD、VAL、CALIB 等 4 个寄存器;
CTRL寄存器:顾名思义就是SYSTick的控制寄存器。它的几个常用位如下图,其中CLKSOURCE位为1的时候,嘀嗒计时器将选择系统时钟8分频后的时钟(即168/8=21),我们一般采用这个。
LOAD:重装载的值(0-23位)
VAl:返回当前倒计数的值(0-23)
根据以上,我们可以编写一小段程序作为延时程序:
//nus应小于2^24/21=798915void _Delay_us(u32 nus){ SysTick->CTRL&=~(1<<2);//选择时钟源为21MHz SysTick->CTRL&=~(1<<1);//SYsTick数到0时无动作 SysTick->LOAD=21*nus;//装载的值,此值每减1,需要1/21us,故用21*nus SysTick->CTRL|=(1<<0);//使能SySTick while(!(SysTick->CTRL&(1<<16)));//等待倒计数数到0}
void _Delay_ms(u32 nms){ SysTick->CTRL&=~(1<<2);//选择时钟源为21MHz SysTick->CTRL&=~(1<<1);//SYsTick数到0时无动作 SysTick->LOAD=21000*nms;//装载的值,此值每减1,需要1/21us,故用21*nus SysTick->CTRL|=(1<<0);//使能SySTick while(!(SysTick->CTRL&(1<<16)));//等待倒计数数到0}
Systick 的时钟来自系统时钟 8 分频, 正因为如此,系统时钟如果不是 8 的倍数(不能被 8 整除),则会导致延时函数不准确,所以STM32的外部晶振一般采用8MHz的。
阅读全文
0 0
- STM32f4学习之路--嘀嗒定时器
- STM32之SysTick嘀嗒定时器
- STM32f4学习之路--时钟
- STM32F407学习记录2:SysTick嘀嗒定时器学习
- eCos嘀嗒定时器
- 050嘀嗒定时器
- eCos嘀嗒定时器
- 嘀嗒~
- STM32F4学习笔记5——SysTick定时器
- 【STM32F4探索套件】序列之5:滴答定时器
- STM32F4 定时器比较
- STM32F4定时器 -- 定时中断
- stm32f4定时器基本应用
- STM32F4学习笔记之GPIO(使用固件库)
- STM32F4学习笔记之GPIO(使用固件库)
- STM32F4学习
- STM32F4 定时器TIM1输出七路PWM信号【使用库函数】
- STM32F4 定时器TIM1输出七路PWM信号【使用库函数
- Android Studio之跳转到手机系统的各个界面
- Windows下静态链接库的使用
- 【剑指Offer】面试题14:调整数组顺序使基数位于偶数的前面
- 提高Android开发效率的9个Web工具
- python 函数
- STM32f4学习之路--嘀嗒定时器
- 二叉树
- C++关于类成员函数在参数列表后加const的作用,以及使用条件
- 设计模式之模板方法模式
- Centos6.5安装与配置JDK-8
- PHP-Configure常见错误
- Spring AOP 实现原理与 CGLIB 应用
- struct usb_driver
- 数据库事务的四大特性以及事务的隔离级别