这个闪灯例程在GPIO的子目录下,也是开发板板载例程。
从原理图上可见,LED接在PE5,PE6上,那么打开例程,看一下管脚定义:
#define LEDn 2
#define LED2_PIN GPIO_PIN_6
#define LED2_GPIO_PORT GPIOE
#define LED2_GPIO_CLK RCM_AHB1_PERIPH_GPIOE
#define LED3_PIN GPIO_PIN_5
#define LED3_GPIO_PORT GPIOE
#define LED3_GPIO_CLK RCM_AHB1_PERIPH_GPIOE
而其初使化函数如下:
void APM_MINI_LEDInit(Led_TypeDef Led)
{
GPIO_Config_T configStruct;
/** Enable the GPIO_LED Clock */
RCM_EnableAHB1PeriphClock(GPIO_CLK[Led]);
/** Configure the GPIO_LED pin */
GPIO_ConfigStructInit(&configStruct);
configStruct.pin = GPIO_PIN[Led];
configStruct.mode = GPIO_MODE_OUT;
configStruct.speed = GPIO_SPEED_50MHz;
GPIO_Config(GPIO_PORT[Led], &configStruct);
GPIO_PORT[Led]->BSCL = GPIO_PIN[Led];
}
而GPIO_PORT是指针数组,GPIO_PIN和GPIO_CLOCK只是个数组。
可见,除了定义的类型同STM32标准库有点不一样,其余都差不多。
以下是编译运行的截图:
引用: 火辣西米秀 发表于 2023-5-25 21:24 跟着楼主学习闪灯测试 楼主用的是GPIO_PORT是指针数组,这个一般初学者都不会
现在的国产例程一般都是这种指针数组,修改起来方便,不过我都喜欢给打散了