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

来源:互联网 发布:db2 sql 修改字段长度 编辑:程序博客网 时间:2024/04/27 20:56

 

一、 本课内容概述

这一课的主要内容是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

 

 

 

原创粉丝点击