如何在代码中简单的替换GPIO引脚

代码需要适应不同板子的PCB布局,不同板子同一功能使用的GPIO引脚也不一样。


为了方便替换,一般会把GPIO引脚进行defined宏定义,然后在代码中使用。


但SDK提供的函数名字自身包含GPIOA和GPIOB。这意味着仅仅替换GPIO引脚名是不够的,还需要逐一修改所用到的函数名。


这个问题有啥好办法吗?


将需要用到的GPIO,自己再重新封装一层,然后调用。比如说GPIOA_SetBits( GPIO_Pin_9 ),封装成一个函数。


// 电源指示灯

#define LED_1_PIN    GPIO_Pin_7

#define LED_1(x)       GPIO_WriteBit(GPIOB, LED_1_PIN, x)



我之前用过标志位+pin offset的方法,结构体里有一个uint8_t 是配置,有各种其他配置,拿出一位用作识别AB组,然后uint32_t用作pin。

使用的时候只需要


if( ( data->config & GPIO_GROUP_A )  == GPIO_GROUP_A ) GPIOA_... else GPIOB_... 这样就行了


这样速度就是慢一点,配置大概多需要消耗3个时钟周期,翻转需要多需要1到3个时钟周期。


只有登录才能回复,可以选择微信账号登录