如何在代碼中簡單的替換GPIO引腳

代碼需要適應(yīng)不同板子的PCB布局,不同板子同一功能使用的GPIO引腳也不一樣。


為了方便替換,一般會(huì)把GPIO引腳進(jìn)行defined宏定義,然后在代碼中使用。


但SDK提供的函數(shù)名字自身包含GPIOA和GPIOB。這意味著僅僅替換GPIO引腳名是不夠的,還需要逐一修改所用到的函數(shù)名。


這個(gè)問題有啥好辦法嗎?


將需要用到的GPIO,自己再重新封裝一層,然后調(diào)用。比如說GPIOA_SetBits( GPIO_Pin_9 ),封裝成一個(gè)函數(shù)。


// 電源指示燈

#define LED_1_PIN? ? GPIO_Pin_7

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



我之前用過標(biāo)志位+pin offset的方法,結(jié)構(gòu)體里有一個(gè)uint8_t 是配置,有各種其他配置,拿出一位用作識(shí)別AB組,然后uint32_t用作pin。

使用的時(shí)候只需要


if( ( data->config & GPIO_GROUP_A )? ==?GPIO_GROUP_A ) GPIOA_... else GPIOB_... 這樣就行了


這樣速度就是慢一點(diǎn),配置大概多需要消耗3個(gè)時(shí)鐘周期,翻轉(zhuǎn)需要多需要1到3個(gè)時(shí)鐘周期。


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频