点个灯
#include "hc32f10x.h"void delay(u16 n);
void RCC_Configuration(void);
void GPIO_Configuration(void);
int main()
{
RCC_Configuration();
GPIO_Configuration();
while (1)
{
GPIO_WriteBit(GPIOB, GPIO_Pin_5, Bit_RESET);
delay(1500);
GPIO_WriteBit(GPIOB, GPIO_Pin_5, Bit_SET);
delay(1500);
}
}
void delay(u16 n)
{
u16 i,j;
for(i = 0; i < n; i++)
for(j = 0; j < n; j++);
}
void RCC_Configuration(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);
}
void GPIO_Configuration(void)
{
GPIO_InitTypeDefGPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
// GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
}
如果增加几个就是流水灯
增加 GPIO 引脚配置:将 8 个 LED 连接到 GPIOB 的 8 个引脚(例如 GPIO_Pin_0 到 GPIO_Pin_7)。
修改主循环逻辑:实现流水灯效果,即依次点亮和熄灭每个 LED。
优化延时函数:确保流水灯效果流畅。 #include "hc32f10x.h"
void delay(u16 n);
void RCC_Configuration(void);
void GPIO_Configuration(void);
int main()
{
RCC_Configuration(); // 配置系统时钟
GPIO_Configuration(); // 配置 GPIO
while (1)
{
// 流水灯效果:依次点亮和熄灭 8 个 LED
for (int i = 0; i < 8; i++)
{
GPIO_WriteBit(GPIOB, GPIO_Pin_0 << i, Bit_RESET); // 点亮 LED
delay(500); // 延时
GPIO_WriteBit(GPIOB, GPIO_Pin_0 << i, Bit_SET); // 熄灭 LED
}
}
}
// 简单的延时函数
void delay(u16 n)
{
u16 i, j;
for (i = 0; i < n; i++)
for (j = 0; j < n; j++);
}
// 配置系统时钟
void RCC_Configuration(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);
}
// 配置 GPIO
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
// 配置 GPIOB 的 Pin_0 到 Pin_7 为推挽输出
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 |
GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;// 推挽输出模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 输出速度 50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure);
// 初始化时将所有 LED 熄灭
GPIO_Write(GPIOB, 0xFF); // 0xFF 表示所有引脚输出高电平(熄灭)
} 话说,芯圣的MCU有没有用位操作的,直接操作一个位实现点灯这种 很简单的一个应用 学习一下 要点就点呼吸灯 建议使用 SysTick 定时器 进行精准延时,而不是 for 循环。
页:
[1]