stm32中的系统滴答定时器作用------延时(函数)

统滴答定时器对于stm32的初学者来说还是非常重要的,因为随着你学习的深入编程过程中肯定会调用延时函数,比如我之前的一些gpio相关的实验中。那么延时函数的编写也是几种方法的,一般开始接触都是让系统循环等待,利用stm32处理程序所用的机器时间去延时。这种延时函数如下图所示:

很显然这是一个弊端很明显的做法,因为在延时函数进行时系统无法进行其它操作,这样大大降低了系统的效率。所以我们一般在编程中都会去利用定时器去定时

https://blog.csdn.net/qq_42660303/article/details/81274146?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163461529816780357238231%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=163461529816780357238231&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-2-81274146.pc_search_es_clickV2&utm_term=%E6%BB%B4%E7%AD%94%E5%AE%9A%E6%97%B6%E5%99%A8%E7%9A%84%E4%BD%9C%E7%94%A8&spm=1018.2226.3001.4187

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我可以为您解关于STM32系统定时器(systick)应用的问题。 系统定时器(systick)是STM32一个非常重要的计器,它是一个24位的递减计数器,每当计数器减为0,会触发一个断。它通常用于操作系统间片轮转、函数的实现等。 在STM32,我们可以通过如下代码使能系统定时器: ```c // 使能系统定时器 SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; ``` 然后,我们可以通过如下代码设置系统定时器钟源和计数器值: ```c // 设置系统定时器钟源和计数器值 SysTick->CTRL &= ~SysTick_CTRL_CLKSOURCE_Msk; // 使用处理器钟作为钟源 SysTick->LOAD = SystemCoreClock / 1000 - 1; // 设置计数器值为1ms ``` 在这段代码,我们将系统定时器钟源设置为处理器钟,每次计数器减1代表1个处理器钟周期的间。然后我们将计数器的初值设置为`SystemCoreClock / 1000 - 1`,这里的`1000`代表我们希望系统定时器每1ms断一次。 最后,我们需要在断服务函数处理系统定时器断: ```c void SysTick_Handler(void) { // 处理系统定时器断 } ``` 在断服务函数,我们可以编写自己的代码来处理系统定时器断。例如,可以实现一个简单的函数: ```c void delay_ms(uint32_t ms) { uint32_t i; for (i = 0; i < ms; i++) { while (!(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk)); // 等待计数器减为0 } } ``` 这个函数可以让程序在执行到它的候暂停一段间,等待系统定时器断触发一定次数后再继续执行。 希望这些代码可以帮助您更好地理解STM32系统定时器的应用。如果您还有其他问题,请随提出。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学无止境2022

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值