stm32延时us寄存器_STM32之延时功能

本文详细介绍了如何利用STM32的SysTick系统定时器来创建微秒和毫秒级别的延时函数。通过设置计数器重装载值并循环检查COUNTFLAG标志位,实现了精确的延时效果。在main函数中,通过调用这两个延时函数,实现在模拟环境中验证了延时功能的准确性。
摘要由CSDN通过智能技术生成

本文介绍如何使用STM32 SysTick系统定时器实现延时功能。

本文适合对单片机及C语言有一定基础的开发人员阅读,MCU使用STM32F103VE系列。

1.1.    介绍

SysTick—系统定时器是CM3内核中的一个24bit 的向下递减的计数器,计数器每计数一次的时间为 1/SYSCLK,当计数器值递减到0的时候,将自动重装载计数初值,开始新一轮计数系统,可以用SysTick实现简单的延时函数。

1.2.    说明

SysTick_Config()函数设置计数器重装载值,将当前值设置为0,并使能定时器。

1.3.    操作

直接调用delay_us()和delay_ms()函数即可。

1 voiddelay_us(__IO uint32_t us)2 {3 uint32_t i;4

5 //将一次计数器时间设置为1us

6 SysTick_Config(SystemCoreClock / 1000000);7

8 for(i = 0; i < us; i++)9 {10 //当计数器的值减小到0的时候,CTRL寄存器COUNTFLAG会置1

11 while( !((SysTick->CTRL) &SysTick_CTRL_COUNTFLAG_Msk) );12 }13 //CTRL寄存器ENABLE寄存器置零,关闭SysTick定时器

14 SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;15

16 }17

18 voiddelay_ms(__IO uint32_t ms)19 {20 uint32_t i;21

22 //将一次计数器时间设置为

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值