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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4708|回復: 17
打印 上一主題 下一主題
收起左側

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

[復制鏈接]
跳轉到指定樓層
樓主
    很多MCU單片機IO口都需調用一個類似的子函數,但是如果都用不同的子函數代碼又太長了,有什么好的方法解決這個問題,隱約記得可以用結構體或者宏參數,但是沒有用過,不知道怎么用,有沒有大佬指點一下,謝謝
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
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 | 只看該作者
就象做乘法一樣,提取公因式。
將公共部門做成子程序,不同部分做成參數變量。
回復

使用道具 舉報

5#
ID:934353 發表于 2021-7-23 17:21 | 只看該作者
yzwzfyz 發表于 2021-7-23 17:19
就象做乘法一樣,提取公因式。
將公共部門做成子程序,不同部分做成參數變量。

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

使用道具 舉報

6#
ID:950257 發表于 2021-7-23 18:33 | 只看該作者
開心就好hhhh 發表于 2021-7-23 15:41
可是io口的地址不知道呢怎么辦,比如說P1^1這樣子,我該怎么用呢

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

使用道具 舉報

7#
ID:934353 發表于 2021-7-27 10:13 | 只看該作者
gain 發表于 2021-7-23 18:33
地址都在reg51.h這個文件里有聲明

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

使用道具 舉報

8#
ID:451718 發表于 2021-7-27 10:18 | 只看該作者
看一下STM32的庫函數例程就清楚了。
回復

使用道具 舉報

9#
ID:752974 發表于 2021-7-27 15:33 | 只看該作者
51中的位操作已經做不能再簡單了,不知樓主想如何操作。
回復

使用道具 舉報

10#
ID:934353 發表于 2021-7-27 15:52 | 只看該作者
munuc_w 發表于 2021-7-27 15:33
51中的位操作已經做不能再簡單了,不知樓主想如何操作。

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

0.png (5.75 KB, 下載次數: 60)

0.png
回復

使用道具 舉報

11#
ID:956553 發表于 2021-7-27 17:09 | 只看該作者
看st的庫函數封裝API或者NXP的封裝
回復

使用道具 舉報

12#
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;
回復

使用道具 舉報

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

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

使用道具 舉報

14#
ID:934353 發表于 2021-7-28 11:01 | 只看該作者
munuc_w 發表于 2021-7-28 08:50
選用具有片選信號的數碼管驅動器,如TA6932,DIO和CLK共用,數據流向由片選信號控制。

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

使用道具 舉報

15#
ID:752974 發表于 2021-7-28 12:43 | 只看該作者
開心就好hhhh 發表于 2021-7-28 11:01
我就是用了三個數碼管驅動芯片,所以才希望將代碼寫的更簡潔一點

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

使用道具 舉報

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

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

使用道具 舉報

17#
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信號要拉高。
回復

使用道具 舉報

18#
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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产一区二区三区欧美 | 福利一区二区在线 | 九九成人 | 97超碰人人草 | 二区亚洲 | 最近中文字幕免费 | 日本黄色一级片视频 | 麻豆一区| 日韩不卡一区二区三区 | 美国a级毛片免费视频 | 在线播放国产视频 | 成人免费三级电影 | 日韩视频一区在线观看 | 欧美激情精品久久久久久变态 | 精品国产乱码久久久久久丨区2区 | 成人妇女免费播放久久久 | 精品一区二区三区在线观看国产 | 91精品国产色综合久久不卡蜜臀 | 亚洲在线一区二区 | 欧美一级二级在线观看 | 青娱乐av | 久久精品视频免费看 | 岛国毛片 | 在线观看成人av | 久久午夜国产精品www忘忧草 | 久草新视频| 国产精品91久久久久久 | 日日夜夜精品 | www日韩欧美 | 视频精品一区二区三区 | 欧美在线看片 | 久久久999国产精品 中文字幕在线精品 | 伊人网站在线 | 欧美一区二区免费电影 | 久久久2o19精品 | 久久33 | 日韩av成人在线观看 | 欧美日韩亚洲一区 | 久久91精品国产一区二区 | 精品亚洲一区二区三区 | 欧美一区二区三区在线观看 |