| 本帖最后由 jinglixixi 于 2025-2-4 00:13 编辑 
 为了能使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 点亮状态
 
 开发板原理图:
 
 
 
 |