![]() |
發布時間: 2021-7-23 14:37
正文摘要:很多MCU單片機IO口都需調用一個類似的子函數,但是如果都用不同的子函數代碼又太長了,有什么好的方法解決這個問題,隱約記得可以用結構體或者宏參數,但是沒有用過,不知道怎么用,有沒有大佬指點一 ... |
munuc_w 發表于 2021-7-28 15:00 好的,好的,有思路了,非常感謝 |
開心就好hhhh 發表于 2021-7-28 13:06 很簡單的函數,在原函數里只是增加一個決定片選的形參,由這個參數決定片選信號即可,如: xxx(xxx,xxx,xCS) { if(xCS==1) cs1=0; else if(xCS==2) cs2=0; else if(xCS==3) cs3=0; //下面就是原來的函數,寫入地址,寫入數據 。。。。 } 注意退出函數前各個使用的CS信號要拉高。 |
munuc_w 發表于 2021-7-28 12:43 是的是的,我就是想寫一個這樣的,但是沒有寫過,就不知道該怎么寫,我想參照32的庫函數來著,但是感覺又不一樣,大佬能不能提點一下?謝謝 |
開心就好hhhh 發表于 2021-7-28 11:01 我以前也遇到過你的情況,要寫好多函數,內容一樣,就是IO分配不同。后來整合到一個函數里,函數增加一個形參,由形參決定片選,用于區別不同的驅動芯片。 |
munuc_w 發表于 2021-7-28 08:50 我就是用了三個數碼管驅動芯片,所以才希望將代碼寫的更簡潔一點 |
開心就好hhhh 發表于 2021-7-27 15:52 選用具有片選信號的數碼管驅動器,如TA6932,DIO和CLK共用,數據流向由片選信號控制。 |
typedef struct { uint16_t GPIO_Pin; /*!< Specifies the GPIO pins to be configured. This parameter can be any value of @ref GPIO_pins_define */ GPIOSpeed_TypeDef GPIO_Speed; /*!< Specifies the speed for the selected pins. This parameter can be a value of @ref GPIOSpeed_TypeDef */ GPIOMode_TypeDef GPIO_Mode; /*!< Specifies the operating mode for the selected pins. This parameter can be a value of @ref GPIOMode_TypeDef */ }GPIO_InitTypeDef; |
看st的庫函數封裝API或者NXP的封裝 |
51中的位操作已經做不能再簡單了,不知樓主想如何操作。 |
看一下STM32的庫函數例程就清楚了。 |
gain 發表于 2021-7-23 18:33 這個頭文件里有P1,P2等的地址,但是沒有看到P1^1之類的具體地址,感謝回答 |
開心就好hhhh 發表于 2021-7-23 15:41 地址都在reg51.h這個文件里有聲明 |
yzwzfyz 發表于 2021-7-23 17:19 我知道大概意思,但是不知如何操作,感謝回答 |
就象做乘法一樣,提取公因式。 將公共部門做成子程序,不同部分做成參數變量。 |
黃youhui 發表于 2021-7-23 15:24 可是io口的地址不知道呢怎么辦,比如說P1^1這樣子,我該怎么用呢 |
有啊,結構體內成員可以是函數,就是指針。 |