stm32f103us延时程序
时间: 2025-06-13 13:06:47 浏览: 10
### STM32F103延时函数实现
对于STM32F103系列微控制器而言,可以通过多种方式实现延时功能。一种简单的方法是利用循环计数来创建软件延时[^1]:
```c
void delay_ms(uint32_t ms) {
uint32_t i, j;
for (i = 0; i < ms; i++) {
for (j = 0; j < 1130; j++);
}
}
```
然而,这种方法不够精确且占用CPU资源较多。更推荐的做法是采用硬件定时器如SysTick定时器来完成高精度的延时操作[^2]。
以下是基于SysTick定时器编写的延时函数实例代码:
```c
#include "stm32f1xx.h"
// 初始化 SysTick 定时器用于产生固定频率的时间中断
static void systick_init(void){
if (SysTick_Config(SystemCoreClock / 1000)){ // 配置每毫秒触发一次中断
while(1); // 如果配置失败,则进入死循环
}
}
volatile static uint32_t TimingDelay;
// 插入一段延迟时间(单位:ms)
void Delay(__IO uint32_t nTime){
TimingDelay = nTime;
while(TimingDelay != 0);
}
// 减少剩余等待时间
void TimingDelay_Decrement(void){
if (TimingDelay != 0x00){
TimingDelay--;
}
}
int main(){
systick_init(); // 初始化systick
// 主程序逻辑...
Delay(1000); // 调用延时函数,这里设置为1秒的延时
}
```
此段代码展示了如何初始化并使用SysTick定时器来进行精准延时控制。需要注意的是,在实际应用中还需确保在启动文件或向量表里正确设置了`TimingDelay_Decrement()`作为SysTick中断服务例程的一部分。
阅读全文
相关推荐

















