写一个基于标准库stm32f103c8t6的呼吸灯代码 不用PWN库
时间: 2024-04-26 09:18:47 浏览: 184
当使用标准库编写基于STM32F103C8T6的呼吸灯代码时,可以通过控制GPIO引脚的高低电平来实现呼吸灯效果。以下是一个简单的示例代码:
```c
#include "stm32f10x.h"
void delay_ms(uint32_t ms) {
for (volatile uint32_t i = 0; i < ms * 1000; i++);
}
int main(void) {
// 初始化GPIO引脚
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
while (1) {
// 呼吸灯逐渐变亮
for (uint8_t brightness = 0; brightness < 255; brightness++) {
GPIO_SetBits(GPIOC, GPIO_Pin_13);
delay_ms(brightness);
GPIO_ResetBits(GPIOC, GPIO_Pin_13);
delay_ms(255 - brightness);
}
// 呼吸灯逐渐变暗
for (uint8_t brightness = 255; brightness > 0; brightness--) {
GPIO_SetBits(GPIOC, GPIO_Pin_13);
delay_ms(brightness);
GPIO_ResetBits(GPIOC, GPIO_Pin_13);
delay_ms(255 - brightness);
}
}
}
```
这段代码使用了GPIOC的Pin 13引脚作为控制呼吸灯的引脚。通过循环控制引脚的高低电平和延时来实现呼吸灯的效果。
阅读全文