打印
[通用ARM系列]

点个灯

[复制链接]
41|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
heisexingqisi|  楼主 | 2025-2-27 11:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#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_InitTypeDef  GPIO_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);
       
       
}


使用特权

评论回复
沙发
heisexingqisi|  楼主 | 2025-2-27 11:53 | 只看该作者
如果增加几个就是流水灯

增加 GPIO 引脚配置:将 8 个 LED 连接到 GPIOB 的 8 个引脚(例如 GPIO_Pin_0 到 GPIO_Pin_7)。

修改主循环逻辑:实现流水灯效果,即依次点亮和熄灭每个 LED。

优化延时函数:确保流水灯效果流畅。

使用特权

评论回复
板凳
heisexingqisi|  楼主 | 2025-2-27 11:53 | 只看该作者
#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 表示所有引脚输出高电平(熄灭)
}

使用特权

评论回复
地板
yangjiaxu| | 2025-2-27 13:12 | 只看该作者
话说,芯圣的MCU有没有用位操作的,直接操作一个位实现点灯这种

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

142

主题

2690

帖子

2

粉丝