STM32F103流水灯代码怎么写
时间: 2024-01-22 21:44:55 浏览: 25
以下是一个简单的STM32F103流水灯代码,你可以参考一下:
```
#include "stm32f10x.h"
void delay(uint32_t time) {
while (time--);
}
int main(void) {
GPIO_InitTypeDef GPIO_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13;
GPIO_Init(GPIOC, &GPIO_InitStruct);
while (1) {
for (uint8_t i=0; i<8; i++) {
GPIO_SetBits(GPIOC, GPIO_Pin_13 << i);
delay(200000);
GPIO_ResetBits(GPIOC, GPIO_Pin_13 << i);
}
}
}
```
相关问题
stm32f103流水灯代码
以下是一个基本的STM32F103流水灯代码:
#include "stm32f10x.h"
void Delay(__IO uint32_t nCount) {
while(nCount--) {
}
}
int main(void) {
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //启用GPIOC时钟
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //输出模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度为50MHz
GPIO_Init(GPIOC, &GPIO_InitStructure);
while (1) {
GPIO_SetBits(GPIOC, GPIO_Pin_0); //点亮第一个LED
Delay(0xFFFFF); //延时
GPIO_ResetBits(GPIOC, GPIO_Pin_0); //熄灭第一个LED
GPIO_SetBits(GPIOC, GPIO_Pin_1); //点亮第二个LED
Delay(0xFFFFF); //延时
GPIO_ResetBits(GPIOC, GPIO_Pin_1); //熄灭第二个LED
GPIO_SetBits(GPIOC, GPIO_Pin_2); //点亮第三个LED
Delay(0xFFFFF); //延时
GPIO_ResetBits(GPIOC, GPIO_Pin_2); //熄灭第三个LED
GPIO_SetBits(GPIOC, GPIO_Pin_3); //点亮第四个LED
Delay(0xFFFFF); //延时
GPIO_ResetBits(GPIOC, GPIO_Pin_3); //熄灭第四个LED
}
}
这个代码使用了GPIOC的4个引脚来控制4个LED灯的点亮和熄灭。使用了一个简单的延时函数来控制灯的闪烁速度。
写一个控制STM32F103流水灯代码c语言
以下是一个简单的控制STM32F103流水灯的C语言代码示例:
```c
#include "stm32f10x.h"
// 延时函数
void delay(uint32_t count) {
for (uint32_t i = 0; i < count; i++) {
for (uint32_t j = 0; j < 7200; j++) {
// 空操作,用于增加延时时间
}
}
}
int main(void) {
// 初始化GPIO
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
while (1) {
// 点亮LED1,熄灭LED2和LED3
GPIO_SetBits(GPIOC, GPIO_Pin_13);
GPIO_ResetBits(GPIOC, GPIO_Pin_14 | GPIO_Pin_15);
delay(500000);
// 熄灭LED1,点亮LED2,熄灭LED3
GPIO_ResetBits(GPIOC, GPIO_Pin_13 | GPIO_Pin_15);
GPIO_SetBits(GPIOC, GPIO_Pin_14);
delay(500000);
// 熄灭LED1和LED2,点亮LED3
GPIO_ResetBits(GPIOC, GPIO_Pin_13 | GPIO_Pin_14);
GPIO_SetBits(GPIOC, GPIO_Pin_15);
delay(500000);
}
}
```
这段代码使用了STM32F10x标准库来控制GPIO口,通过循环实现LED灯的流水效果。请注意,具体的引脚定义和时钟配置可能需要根据你的硬件平台进行调整。