久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4771|回復: 17
收起左側

MCU IO怎么樣運用C語言結構體?

[復制鏈接]
ID:934353 發表于 2021-7-23 14:37 | 顯示全部樓層 |閱讀模式
    很多MCU單片機IO口都需調用一個類似的子函數,但是如果都用不同的子函數代碼又太長了,有什么好的方法解決這個問題,隱約記得可以用結構體或者宏參數,但是沒有用過,不知道怎么用,有沒有大佬指點一下,謝謝
回復

使用道具 舉報

ID:592807 發表于 2021-7-23 15:24 | 顯示全部樓層
有啊,結構體內成員可以是函數,就是指針。
回復

使用道具 舉報

ID:934353 發表于 2021-7-23 15:41 | 顯示全部樓層
黃youhui 發表于 2021-7-23 15:24
有啊,結構體內成員可以是函數,就是指針。

可是io口的地址不知道呢怎么辦,比如說P1^1這樣子,我該怎么用呢
回復

使用道具 舉報

ID:123289 發表于 2021-7-23 17:19 | 顯示全部樓層
就象做乘法一樣,提取公因式。
將公共部門做成子程序,不同部分做成參數變量。
回復

使用道具 舉報

ID:934353 發表于 2021-7-23 17:21 | 顯示全部樓層
yzwzfyz 發表于 2021-7-23 17:19
就象做乘法一樣,提取公因式。
將公共部門做成子程序,不同部分做成參數變量。

我知道大概意思,但是不知如何操作,感謝回答
回復

使用道具 舉報

ID:950257 發表于 2021-7-23 18:33 | 顯示全部樓層
開心就好hhhh 發表于 2021-7-23 15:41
可是io口的地址不知道呢怎么辦,比如說P1^1這樣子,我該怎么用呢

地址都在reg51.h這個文件里有聲明
回復

使用道具 舉報

ID:934353 發表于 2021-7-27 10:13 | 顯示全部樓層
gain 發表于 2021-7-23 18:33
地址都在reg51.h這個文件里有聲明

這個頭文件里有P1,P2等的地址,但是沒有看到P1^1之類的具體地址,感謝回答
回復

使用道具 舉報

ID:451718 發表于 2021-7-27 10:18 | 顯示全部樓層
看一下STM32的庫函數例程就清楚了。
回復

使用道具 舉報

ID:752974 發表于 2021-7-27 15:33 | 顯示全部樓層
51中的位操作已經做不能再簡單了,不知樓主想如何操作。
回復

使用道具 舉報

ID:934353 發表于 2021-7-27 15:52 | 顯示全部樓層
munuc_w 發表于 2021-7-27 15:33
51中的位操作已經做不能再簡單了,不知樓主想如何操作。

比如說把這三個整合到一起,因為數碼管的一些函數是一樣的,只是不一樣的io口驅動不一樣的數碼管而已
0.png
回復

使用道具 舉報

ID:956553 發表于 2021-7-27 17:09 | 顯示全部樓層
看st的庫函數封裝API或者NXP的封裝
回復

使用道具 舉報

ID:190577 發表于 2021-7-28 07:23 | 顯示全部樓層
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;
回復

使用道具 舉報

ID:752974 發表于 2021-7-28 08:50 | 顯示全部樓層
開心就好hhhh 發表于 2021-7-27 15:52
比如說把這三個整合到一起,因為數碼管的一些函數是一樣的,只是不一樣的io口驅動不一樣的數碼管而已

選用具有片選信號的數碼管驅動器,如TA6932,DIO和CLK共用,數據流向由片選信號控制。
回復

使用道具 舉報

ID:934353 發表于 2021-7-28 11:01 | 顯示全部樓層
munuc_w 發表于 2021-7-28 08:50
選用具有片選信號的數碼管驅動器,如TA6932,DIO和CLK共用,數據流向由片選信號控制。

我就是用了三個數碼管驅動芯片,所以才希望將代碼寫的更簡潔一點
回復

使用道具 舉報

ID:752974 發表于 2021-7-28 12:43 | 顯示全部樓層
開心就好hhhh 發表于 2021-7-28 11:01
我就是用了三個數碼管驅動芯片,所以才希望將代碼寫的更簡潔一點

我以前也遇到過你的情況,要寫好多函數,內容一樣,就是IO分配不同。后來整合到一個函數里,函數增加一個形參,由形參決定片選,用于區別不同的驅動芯片。
回復

使用道具 舉報

ID:934353 發表于 2021-7-28 13:06 | 顯示全部樓層
munuc_w 發表于 2021-7-28 12:43
我以前也遇到過你的情況,要寫好多函數,內容一樣,就是IO分配不同。后來整合到一個函數里,函數增加一個 ...

是的是的,我就是想寫一個這樣的,但是沒有寫過,就不知道該怎么寫,我想參照32的庫函數來著,但是感覺又不一樣,大佬能不能提點一下?謝謝
回復

使用道具 舉報

ID:752974 發表于 2021-7-28 15:00 | 顯示全部樓層
開心就好hhhh 發表于 2021-7-28 13:06
是的是的,我就是想寫一個這樣的,但是沒有寫過,就不知道該怎么寫,我想參照32的庫函數來著,但是感覺又 ...

很簡單的函數,在原函數里只是增加一個決定片選的形參,由這個參數決定片選信號即可,如:

xxx(xxx,xxx,xCS)
{
  if(xCS==1)
     cs1=0;
else if(xCS==2)
     cs2=0;
else if(xCS==3)
      cs3=0;
//下面就是原來的函數,寫入地址,寫入數據
  。。。。

}
注意退出函數前各個使用的CS信號要拉高。
回復

使用道具 舉報

ID:934353 發表于 2021-7-28 17:24 | 顯示全部樓層
munuc_w 發表于 2021-7-28 15:00
很簡單的函數,在原函數里只是增加一個決定片選的形參,由這個參數決定片選信號即可,如:

xxx(xxx, ...

好的,好的,有思路了,非常感謝
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: h片在线免费看 | 亚洲一区免费 | 久久国产亚洲精品 | 精品久久久久久久久久久 | 久久久久久电影 | 国产精品1区2区 | 亚洲精品一区二区三区在线 | 三级免费av | 成在线人视频免费视频 | 日本不卡一区 | 精品少妇一区二区三区在线播放 | 国产精品久久久乱弄 | 欧美性受xxx| 久久精品无码一区二区三区 | 欧美在线观看一区 | 久久乐国产精品 | 日韩欧美天堂 | 成人欧美一区二区三区在线播放 | 久久黄色网 | 免费看国产精品视频 | 欧美美女一区二区 | 日韩免费一级 | av网站免费观看 | 国产精品1区2区3区 中文字幕一区二区三区四区 | 91色啪 | 99福利在线观看 | 91精品国产乱码久久久久久久久 | 午夜三区 | 亚洲精品久久久久久一区二区 | 日韩人体视频 | 日韩在线中文字幕 | 在线观看特色大片免费网站 | aⅴ色国产 欧美 | 中国一级特黄毛片大片 | 国产成人免费视频网站视频社区 | 国产九九九九 | 欧美激情免费在线 | 成人污污视频 | 国产精品久久久久一区二区三区 | 九九热这里只有精品在线观看 | 久久久久九九九女人毛片 |