閱界資訊

重新認識結構體:爲什麼 STM32 庫函數喜歡接收一大包參數

閱閱界編輯部1閱讀6分鐘

《重新認識結構體:爲什麼 STM32 庫函數喜歡接收一大包參數》這篇在博客園熱度很高,講的正是大家天天碰到的事。下面幫你把要點捋出來,結尾有能直接抄的結論。

經典三問 Q: C 語言結構體是什麼? A: 它是把多個有名稱的成員組合成一個數據對象的類型,可以同時保存一組相關配置。 Q: 爲什麼庫函數需要接收結構體? A: 外設配置往往有多個彼此相關的字段,結構體能讓調用接口保持穩定,也讓參數含義更清楚。 Q: 結構體常見使用場景? A: GPIO、定時器、串口等外設初始化,以及保存傳感器數據、菜單項和控制器參數。 上一篇裏,我把 GPIO_InitTypeDef 留在了這裏: [代碼示例略] 我第一次看到這幾行,先冒出來的是一串問題:爲什麼會有這麼多參數?每個參數到底管什麼?它們應該放在哪裏?爲什麼最後還要把 &gpio 交給另一個函數? 這次先不急着背 GPIO_InitTypeDef 。

經典三問 Q: C 語言結構體是什麼? A: 它是把多個有名稱的成員組合成一個數據對象的類型,可以同時保存一組相關配置。 Q: 爲什麼庫函數需要接收結構體? A: 外設配置往往有多個彼此相關的字段,結構體能讓調用接口保持穩定,也讓參數含義更清楚。 Q: 結構體常見使用場景? A: GPIO、定時器、串口等外設初始化,以及保存傳感器數據、菜單項和控制器參數。 上一篇裏,我把 GPIO_InitTypeDef 留在了這裏: [代碼示例略] 我第一次看到這幾行,先冒出來的是一串問題:爲什麼會有這麼多參數?每個參數到底管什麼?它們應該放在哪裏?爲什麼最後還要把 &gpio 交給另一個函數? 這次先不急着背 GPIO_InitTypeDef 。我們退回普通 C,看看結構體到底在解決什麼麻煩。

經典三問 Q: C 語言結構體是什麼? A: 它是把多個有名稱的成員組合成一個數據對象的類型,可以同時保存一組相關配置。 Q: 爲什麼庫函數需要接收結構體? A: 外設配置往往有多個彼此相關的字段,結構體能讓調用接口保持穩定,也讓參數含義更清楚。 Q: 結構體常見使用場景? A: GPIO、定時器、串口等外設初始化,以及保存傳感器數據、菜單項和控制器參數。 上一篇裏,我把 GPIO_InitTypeDef 留在了這裏: [代碼示例略] 我第一次看到這幾行,先冒出來的是一串問題:爲什麼會有這麼多參數?每個參數到底管什麼?它們應該放在哪裏?爲什麼最後還要把 &gpio 交給另一個函數? 這次先不急着背 GPIO_InitTypeDef 。我們退回普通 C,看看結構體到底在解決什麼麻煩。 參數開始變多以後 假設要寫一個函數,給一輛車設置速度、方向和剎車狀態: [代碼示例略] 參數少時還能看懂。

經典三問 Q: C 語言結構體是什麼? A: 它是把多個有名稱的成員組合成一個數據對象的類型,可以同時保存一組相關配置。 Q: 爲什麼庫函數需要接收結構體? A: 外設配置往往有多個彼此相關的字段,結構體能讓調用接口保持穩定,也讓參數含義更清楚。 Q: 結構體常見使用場景? A: GPIO、定時器、串口等外設初始化,以及保存傳感器數據、菜單項和控制器參數。 上一篇裏,我把 GPIO_InitTypeDef 留在了這裏: [代碼示例略] 我第一次看到這幾行,先冒出來的是一串問題:爲什麼會有這麼多參數?每個參數到底管什麼?它們應該放在哪裏?爲什麼最後還要把 &gpio 交給另一個函數? 這次先不急着背 GPIO_InitTypeDef 。我們退回普通 C,看看結構體到底在解決什麼麻煩。 參數開始變多以後 假設要寫一個函數,給一輛車設置速度、方向和剎車狀態: [代碼示例略] 參數少時還能看懂。調用時,三個數字分別對應速度、方向和剎車: [代碼示例略] 但如果後來又加上加速度限制、電機編號、是否允許反轉,函數可能變成這樣: [代碼示例略] 調用就會變成一串不容易讀懂的數字: [代碼示例略] 只看這一行,很難立刻確認 50 是加速度,還是電機編號;最後兩個 1 、 2 交換位置,編譯器也不會提醒你,因爲它們的類型都是 uint8_t 。

經典三問 Q: C 語言結構體是什麼? A: 它是把多個有名稱的成員組合成一個數據對象的類型,可以同時保存一組相關配置。 Q: 爲什麼庫函數需要接收結構體? A: 外設配置往往有多個彼此相關的字段,結構體能讓調用接口保持穩定,也讓參數含義更清楚。 Q: 結構體常見使用場景? A: GPIO、定時器、串口等外設初始化,以及保存傳感器數據、菜單項和控制器參數。 上一篇裏,我把 GPIO_InitTypeDef 留在了這裏: [代碼示例略] 我第一次看到這幾行,先冒出來的是一串問題:爲什麼會有這麼多參數?每個參數到底管什麼?它們應該放在哪裏?爲什麼最後還要把 &gpio 交給另一個函數? 這次先不急着背 GPIO_InitTypeDef 。我們退回普通 C,看看結構體到底在解決什麼麻煩。 參數開始變多以後 假設要寫一個函數,給一輛車設置速度、方向和剎車狀態: [代碼示例略] 參數少時還能看懂。調用時,三個數字分別對應速度、方向和剎車: [代碼示例略] 但如果後來又加上加速度限制、電機編號、是否允許反轉,函數可能變成這樣: [代碼示例略] 調用就會變成一串不容易讀懂的數字: [代碼示例略] 只看這一行,很難立刻確認 50 是加速度,還是電機編號;最後兩個 1 、 2 交換位置,編譯器也不會提醒你,因爲它們的類型都是 uint8_t 。參數越多,函數調用就越像一張沒有列名的表。

讀完別停:把最觸動你的一條記下來,這周就用上。能落地的閱讀纔算數,歡迎回來聊聊你的實踐結果。 來源|博客園《重新認識結構體:爲什麼 STM32 庫函數喜歡接收一大包參數》,https://www.cnblogs.com/zw-awa/p/22972644.html

程式員技術場技术后端

評論(0)

暫無評論,來搶第一條。