APM32E030的GPIO驱动
APM32E030有PA/PB/PC/PD/PF等多组GPIO,可以配置为输入、输出、复用、模拟等多种功能。
本次代码基于开发板:APM32E030R Micro-EVB
现象LED:LED1(PB6)
驱动代码如下:
#define GPIO_PORT (GPIOB)
#define GPIO_PIN (GPIO_PIN_6)/*
* @brief GPIO初始化
*
* @param None
*
* @retval None
*
*/
void bsp_gpio_init(void)
{
GPIO_Config_T gpioConfig;
RCM_EnableAHBPeriphClock(RCM_AHB_PERIPH_GPIOB);
GPIO_ConfigStructInit(&gpioConfig);
gpioConfig.pin = GPIO_PIN;
gpioConfig.mode = GPIO_MODE_OUT;
gpioConfig.outtype = GPIO_OUT_TYPE_PP;
gpioConfig.speed = GPIO_SPEED_50MHz;
gpioConfig.pupd = GPIO_PUPD_NO;
GPIO_Config(GPIO_PORT, &gpioConfig);
}/*
* @brief GPIO翻转
*
* @param None
*
* @retval None
*
*/
void bsp_gpio_toggle(void)
{
if (GPIO_ReadOutputBit(GPIO_PORT, GPIO_PIN) == BIT_SET) {
GPIO_ClearBit(GPIO_PORT, GPIO_PIN);
} else {
GPIO_SetBit(GPIO_PORT, GPIO_PIN);
}
}
测试代码如下:
void delay(void)
{
volatile int n = 0xFFFFF;
while(n--);
}// 应用初始化
void app_init(void)
{
bsp_gpio_init();
}
// 应用任务
void app_task(void)
{
bsp_gpio_toggle();
delay();
}
详细代码,请查看附件:
GPIO的操作,我觉得官方的库函数里面的操作就够了。这再来了一层封装,倒是觉得有些过了 黎明热忱 发表于 2025-9-7 23:28
GPIO的操作,我觉得官方的库函数里面的操作就够了。这再来了一层封装,倒是觉得有些过了 ...
做底层与应用层分离时,需要这样封装。在更换MCU时,可以方便只动底层代码而不用管应用层。 咱们做嵌入式项目,有几次会更换MCU的。 代码结构很清晰,不过记得在实际应用中,根据你的硬件设计,可能需要调整GPIO的配置参数。
页:
[1]