STM32--系统时钟定时器(精确定时程序)

 

一、 本课内容概述

这一课的主要内容是STM32系统时钟定时器systick的配置以及如何产生精确延时。 

 

通常实现Delay(N)函数的方法为:

for(i = 0; i <= x; i ++); 

 x  ---  对应于 对应于毫秒的循环值

对于STM32系列微处理器来说,执行一条指令只有几十个ns,进行for循环时,要实现N毫秒的x值非常大,而且由于系统频率的宽广,很难计算出延时N毫 秒的精确值。针对STM32微处理器,需要重新设计一个新的方法去实现该功能,以实现在程序中使用Delay(N)

对于STM32系列微处理器来说,执行一条指令只有几十个ns,进行for循环时,要实现N毫秒的x值非常大,而且由于系统频率的宽广,很难计算出延时N毫 秒的精确值。针对STM32微处理器,需要重新设计一个新的方法去实现该功能,以实现在程序中使用Delay(N)

 

注: 全局变量TimingDelay    必须定义为volatile

 

二、 SysTick的配置使用方法

外部晶振为8MHz9倍频,系统时钟为72MHzSysTick的最高频率为9MHz(最大为HCLK/8),在这个条件下,把SysTick 效验值设置成9,将SysTick 时钟设置为9MHz, 就能够产生1us的时间基值,即SysTick产生1us的中断。

使用ST的函数库使用systick的方法

1、调用SysTick_CounterCmd() 失能SysTick计数器

2、调用SysTick_ITConfig () 失能SysTick中断 

3、调用SysTick_CLKSourceConfig() 设置SysTick时钟源。

4、调用SysTick_SetReload() 设置SysTick重装载值。

5、调用SysTick_ITConfig ()     使能SysTick中断

6、调用SysTick_CounterCmd() 开启SysTick计数器

7、去掉stem32f10x_conf.c文件里面关于SysTick的注释,包含编译相关文件

8、在FWLIB里面加入stm32f10x_systick.c

9、修改工程设置,把中断向量表指向FLASH空间:project-option-C/C++ Complier-Processor-Defined symbols改为VECT_TAB_FLASH

三、 相关程序

 


 


至此,全部的修改与配置结束,enjoy it

 

 

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值