STM32F103 之Systick

/*******************如内容有错,或有其他见解欢迎评论交流*****************/

/****************************START****************************************/

1. Systick是什么?在哪里?有什么用?
Systick是一个24位向下计数的定时器;
Systick在处理器内部,而不是stm32的片上外设(使用时无需开启中断号);
三大作用:OS的心跳(只要作用)、延时和测量时间。
2. Systick包含哪些寄存器?
 

 

bit[2] = 1的内核时钟是SYSCLOCK   bit[2] = 0 时为SYSCLOCK/8

用来递减计数的初值     最大为0xffffff = 16 777 215

主要用于初始化和测量时间

3. Systick怎么用?
(1) 不使用异常Systick->CTRL的bit[1] = 0
如延时:
/*利用SysTick计数器实现1us/1ms精确延时*/
 

直接调用填入参数即可。
如时间测量:

注意funtion的时间
为了提高可移植性,还可以用一个函数指针修饰做参数
(2) 使用异常 Systick->CTRL的bit[1] = 1
做延时:(系统滴答暂且不讨论)
在main中:

在"stm32f10x_it.h"中写异常服务函数:
 
简单的说就是:
 
SysTick_Config(SystemCoreClock/1000); CTRL的bit[2:0]=0b111
则为使用系统时钟、计数到0产生异常、开启SysTick
SystemCoreClock = 72M  所以SysTick_Config(72K);
所以:周期 = (1/72M)*72k = 1ms


另外:根据ARM Cortex-M3与Cortex-M4权威手册第217页:

若要将SysTick中断作用在一定时间后触发的单发操作,则可以将重载值减少12个周期,以补偿中断等待时间。如要使SysTick在300个时钟周期后执行:

SysTick->LOAD = (300-12);

/************************END************************************/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值