写出一段stm32f103c8t6的点灯程序
时间: 2023-08-23 07:04:35 浏览: 96
以下是一个基本的 STM32F103C8T6 点灯程序,使用了 GPIO 库和 SysTick 库实现了简单的 LED 点亮和闪烁效果。
```
#include "stm32f10x.h"
void delay_ms(uint32_t ms) {
SysTick->LOAD = (ms * SystemCoreClock / 1000) - 1;
SysTick->VAL = 0;
SysTick->CTRL = SysTick_CTRL_ENABLE_Msk;
while (!(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk));
}
int main(void) {
RCC->APB2ENR |= RCC_APB2ENR_IOPCEN;
GPIOC->CRH |= GPIO_CRH_MODE13_0;
while(1) {
GPIOC->BSRR = GPIO_BSRR_BS13;
delay_ms(500);
GPIOC->BSRR = GPIO_BSRR_BR13;
delay_ms(500);
}
}
```
程序首先定义了一个 `delay_ms` 函数,用于延时一定的毫秒数。这个函数使用了 STM32 的 SysTick 定时器,设置了定时器的加载值、清空计数器、使能控制位,等待计数完成。
主函数中先使能了 GPIOC 的时钟,然后将 PC13 引脚配置为输出模式(通过修改 GPIOC 的 CRH 寄存器实现)。然后进入一个无限循环,先将 PC13 置高电平,延时 500 毫秒,然后将 PC13 置低电平,再延时 500 毫秒,如此反复循环,实现了 LED 的闪烁效果。
需要注意的是,这个程序中的延时函数并不是非常精确和稳定,实际使用中可能需要根据具体的硬件和应用场景进行调整和优化。同时,如果要实现更多的 LED 点亮和闪烁模式,可以通过修改 GPIO 输出口的状态和延时时间来实现。
阅读全文