打印
[活动]

【APM32M3514开发板测评】+让灯闪亮起来

[复制链接]
38|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

为了能使LED灯闪烁起来,通过查看原理图可知D7所连接的引脚为PA12,见图1闪烁。


图1 使用引脚

经修改,使D7闪烁起来的主程序为:
int main(void)
{
    APM_MINI_Init();
    GPIO_Config_T gpioConfig;
    RCM_EnableAHBPeriphClock(RCM_AHB_PERIPH_GPIOA);
    gpioConfig.pin = GPIO_PIN_12;
    gpioConfig.mode = GPIO_MODE_OUT;
    gpioConfig.outtype = GPIO_OUT_TYPE_PP;
    gpioConfig.speed = GPIO_SPEED_50MHz;
    gpioConfig.pupd = GPIO_PUPD_NO;
    GPIO_Config(GPIOA, &gpioConfig);   
    while (1)
    {
        GPIO_ClearBit(GPIOA, GPIO_PIN_12);
        APM_DelayMs(200);
        GPIO_SetBit(GPIOA, GPIO_PIN_12);
        APM_DelayMs(200);
    }
}
经程序的编译和下载,D7终于闪烁起来。
如果点亮LED灯代表GPIO口输出的成功,那以按键来控制LED灯的亮灭就代表输入、输出功能的完美结合。
那从哪儿来获得按键的引脚呢?
那就是利用这2个开关,见图2所示。

图2 开关电路

由图3可知,其所占用的引脚为PC13和PB12。

图3 所用引脚

以所用Direction开关控制D7指示灯为例,将PC12设置为输入口的函数为:
void SW_Init(void)
{
GPIO_Config_T gpioConfig;
//PC13 & PB12
RCM_EnableAHBPeriphClock(RCM_AHB_PERIPH_GPIOC);
gpioConfig.pin = GPIO_PIN_13;
gpioConfig.mode = GPIO_MODE_IN;
gpioConfig.speed = GPIO_SPEED_50MHz;
gpioConfig.pupd = GPIO_PUPD_PU;
GPIO_Config(GPIOC, &gpioConfig);
RCM_EnableAHBPeriphClock(RCM_AHB_PERIPH_GPIOB);
gpioConfig.pin = GPIO_PIN_12;
GPIO_Config(GPIOB, &gpioConfig);
}

对LED的初始化函数为:
void LED_Init(void)
{
GPIO_Config_T gpioConfig;
gpioConfig.mode = GPIO_MODE_OUT;
gpioConfig.outtype = GPIO_OUT_TYPE_PP;
gpioConfig.speed = GPIO_SPEED_50MHz;
gpioConfig.pupd = GPIO_PUPD_NO;
RCM_EnableAHBPeriphClock(RCM_AHB_PERIPH_GPIOA);
gpioConfig.pin = GPIO_PIN_12;
GPIO_Config(GPIOA, &gpioConfig);
}

相应的系统最小初始化函数为:
void APM_MINI_Init(void)
{
/* Init delay function */
APM_DelayInit();
LED_Init();
SW_Init();
}

实现按键控制LED灯的主程序为:
int main(void)
{
APM_MINI_Init();
while (1)
{
if(GPIO_ReadInputBit(GPIOC, GPIO_PIN_13)==1)
{
GPIO_ClearBit(GPIOA, GPIO_PIN_12);
}
else
{
GPIO_SetBit(GPIOA, GPIO_PIN_12);
}
}
}

经程序的编译和下载,其执行效果如图4和图5所示。

图4 熄灭状态


图5 点亮状态


使用特权

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

本版积分规则

467

主题

2793

帖子

38

粉丝