你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32F103:精准延时delay——SysTick使用

[复制链接]
STMCU小助手 发布时间:2022-5-3 22:39
一、SysTick使用详解
1. SysTick简介

SysTick是一个24bit的倒计数定时器,具有自动重载和溢出中断功能,所有基于Cortex_M3处理器的微控制器都有一个SysTick定时器,从而获得一定的时间间隔。

2. SysTick相关寄存器
状态寄存器-CTRL
STCLK外部时钟源:AHB总线时钟的 1/8
FCLK 内部时钟:AHB总线时钟——STM32F103是72MHz

W9~K}MPHQQJSLVFBDPWT3Q8.png

重装载数值寄存器-LOAD

012NMW26[2_~_U1[O%($X[C.png

当前值寄存器-VAL

]2C4LF`W9K[Z`O~I$_)3IOK.png

校准寄存器-CALIB


2CYM~SK%CO7WZQ814Q0O(HN.png

二、编写精准延时——delay

delay.h

  1. #ifndef __DELAY_H
  2. #define __DELAY_H                           
  3. #include "stm32f10x.h"

  4. void delay_us(u16 us);
  5. void delay_ms(u16 ms);
  6. void delay_s(u16 s);

  7. #endif
复制代码

delay.c

  1. #include "delay.h"

  2. #define AHB_INPUT  72  //请按RCC中设置的AHB时钟频率填写到这里(单位MHz)


  3. void delay_us(u16 us)        //uS微秒级延时程序(参考值即是延时数,72MHz时最大值233015)        
  4. {
  5.         u32 temp;
  6.         SysTick->LOAD=AHB_INPUT*us;              //重装计数初值(当主频是72MHz,72次为1微秒)
  7.         SysTick->VAL=0x00;                                //清空定时器的计数器
  8.         SysTick->CTRL=0x00000005;                        //时钟源HCLK,打开定时器
  9.         do
  10.         {
  11.                 temp=SysTick->CTRL;
  12.         }
  13.         while(temp&0x01&&!(temp&(1<<16)));                //等待时间到达  
  14.         SysTick->CTRL=0x00000004;                                //关闭定时器
  15.         SysTick->VAL=0x00;                                        //清空定时器的计数器
  16. }

  17. void delay_ms(u16 ms)        //mS毫秒级延时程序(参考值即是延时数,最大值65535)
  18. {                                      
  19.         while( ms-- != 0)
  20.         {
  21.                 delay_us(1000);        //调用1000微秒的延时
  22.         }
  23. }

  24. void delay_s(u16 s)        //S秒级延时程序(参考值即是延时数,最大值65535)
  25. {                                      
  26.         while( s-- != 0)
  27.         {
  28.                 delay_ms(1000);        //调用1000毫秒的延时
  29.         }
  30. }
复制代码



收藏 评论0 发布时间:2022-5-3 22:39

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版