st32 标准库 简易版实时系统定时器代码
时间: 2023-08-05 17:14:59 浏览: 57
以下是基于st32标准库的简易版实时系统定时器代码:
```c
#include "stm32f10x.h"
static uint32_t tick_counter = 0;
void SysTick_Handler(void)
{
tick_counter++;
}
void SysTick_Init(uint32_t ticks)
{
SystemCoreClockUpdate();
SysTick_Config(SystemCoreClock / ticks);
}
uint32_t get_tick_count(void)
{
return tick_counter;
}
void delay_ms(uint32_t ms)
{
uint32_t start_tick = get_tick_count();
while ((get_tick_count() - start_tick) < ms);
}
```
在这个代码中,我们定义了一个名为`tick_counter`的静态变量,用于记录系统启动以来的滴答数。`SysTick_Handler()`函数是一个中断处理函数,每次滴答计数器溢出时都会被调用。我们在其中将`tick_counter`增加1。
`SysTick_Init()`函数用于初始化系统定时器,可以指定滴答周期,即系统每隔多少时间进行一次滴答。在这个函数中,我们首先更新系统时钟,然后调用`SysTick_Config()`函数来配置系统定时器。
`get_tick_count()`函数用于获取当前滴答计数器的值,即从系统启动到现在经过的滴答数。
最后,`delay_ms()`函数用于延时一定的时间,它使用了`get_tick_count()`函数来计算延时时间。在该函数中,我们首先获取延时开始时的滴答计数器值,然后循环等待,直到经过的时间达到指定的延时时间。
这些函数组合起来可以实现一个简单的实时系统定时器。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)