stm32f103c8t6 写个delay ms的程序
时间: 2024-06-02 19:06:06 浏览: 119
stm32f103 库函数版本 delay.c
STM32F103C8T6是一款基于ARM Cortex-M3内核的微控制器,由STMicroelectronics公司生产。该芯片具有72MHz的主频、64KB的Flash存储器和20KB的RAM存储器,同时还拥有丰富的外设,如定时器、串口、I2C、SPI等。
以下是一个简单的延时程序,以毫秒为单位。它使用了STM32F103C8T6的SysTick定时器:
```
#include "stm32f10x.h"
void delay_ms(uint32_t ms)
{
uint32_t ticks = ms * (SystemCoreClock / 1000);
SysTick->LOAD = ticks;
SysTick->VAL = 0;
SysTick->CTRL = SysTick_CTRL_ENABLE_Msk;
while (!(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk));
SysTick->CTRL = 0;
}
int main(void)
{
// 初始化系统时钟等相关设置
SystemInit();
// 延时1秒
delay_ms(1000);
return 0;
}
```
这个延时函数需要一个参数,即要延时的毫秒数。它首先计算了延时所需的SysTick定时器滴答数,并将其加载到LOAD寄存器中。然后,它将VAL寄存器清零,并启用SysTick定时器。接着进入一个循环,等待SysTick定时器滴答次数达到指定的ticks值。当滴答次数达到指定值时,循环结束,SysTick定时器被禁用。
阅读全文