娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年05月01日(星期四)

2018年05月01日 | stm32.cube(十)——單HAL模塊的結構

發布者:rockstar7 來源: eefocus關鍵字:stm32  cube  單HAL模塊 手機看文章 掃描二維碼
隨時隨地手機看文章

一、接口函數

對于linux驅動來說,基本的操作函數有Open、Close、Read、Write、Ioctrl,這是在OS的驅動層對外設進行操作的一套規范化的接口。對于更底層的硬件抽象層來說,上層的Open和Close意味著對外設的初始化設置和反初始化設置(回復到未被使用前的狀態)。如果外設的作用是實現一個通訊傳輸,那么上層的Read、Write也要同樣對應外設的發送和接收。若外設不是一個傳輸設備,那么就要有對應的I/O control函數來控制它。同時HAL還要提供取得外設狀態的接口,以及外設的中斷處理函數。所以一個HAL模塊的函數結構基本上是這樣的:

這里寫圖片描述 
通訊外設的接口函數

在TRANSFER這里,大部分實現通信協議的外設都可以由普通方式、中斷方式、DMA方式來進行收發。普通方式和中斷方式有相應的callback函數和中斷處理函數,DMA方式也有相應的DMA控制函數。依據不同的通訊協議,不同的通訊外設的傳輸函數也會有許多區別。

  • CAN模塊里有sleep和wakeup函數。

  • I2C模塊分了Master、Slave和Mem三種模式,每種模式都由對應的讀寫函數。

  • SPI模塊里有全雙工模式下用的同時讀寫的函數。

這里寫圖片描述 
非通訊外設的接口函數

非通訊外設的CONTROL部分中,不同的外設有不同的操作函數。比如 對于Rtc來說,需要能夠取得當前的時間的操作函數。對于看門狗來說,要有喂狗的操作函數。

二、數據結構

Init結構體

每個外設都有相應的Init結構體類型,如ADC_InitTypeDef、CAN_InitTypeDef、DMA_InitTypeDef等等,結構體里的每個成員都代表要初始化的外設的屬性。我找一個最簡單的來說明:

/** 

  * @brief  IWDG Init structure definition  

  */

typedef struct

{

  uint32_t Prescaler;  /*!< Select the prescaler of the IWDG.  

                            This parameter can be a value of @ref IWDG_Prescaler */


  uint32_t Reload;     /*!< Specifies the IWDG down-counter reload value. 

                            This parameter must be a number between Min_Data = 0 and Max_Data = 0x0FFF */


}IWDG_InitTypeDef;


IWDG_InitTypeDef里包含看門狗時鐘的預分頻量和喂狗時送的基礎數值。

Handle結構體

之前有說過,Handle結構體相當于一個外設類的實例。

/** 

  * @brief  IWDG Handle Structure definition  

  */

typedef struct

{

  IWDG_TypeDef                 *Instance;  /*!< Register base address    */


  IWDG_InitTypeDef             Init;       /*!< IWDG required parameters */


  HAL_LockTypeDef              Lock;       /*!< IWDG Locking object      */


  __IO HAL_IWDG_StateTypeDef   State;      /*!< IWDG communication state */


}IWDG_HandleTypeDef;


這個結構體通常包含一個Init結構體,指向寄存器地址的指針,一個HAL鎖和一個標記狀態的變量。由于IWDG模塊相對簡單,所以沒有函數指針表,也沒有標記錯誤的變量。


幾乎所有的模塊里的函數都會以指向這個結構體的指針作為參數。


三、小結


stm32cube里的HAL層在接口函數的設計上趨向于簡單和標準化。只要理解外設的工作原理,使用對應模塊的接口函數將不會付出很多學習成本。


當我們使用任意外設的時候,要提前創建一個該外設的Handle結構體,然后將Handle結構體里的Init結構體的成員都按照需要進行賦值。在調用該模塊的Init()函數進行初始化之后,就可以使用控制函數來對外設進行行為級的操作了。

關鍵字:stm32  cube  單HAL模塊 引用地址:stm32.cube(十)——單HAL模塊的結構

上一篇:stm32.cube(九)——HAL.DMA
下一篇:stm32.cube(八)——HAL的配置文件

推薦閱讀

5月1日報道今天下午,中興通訊再次發布公告,公司4月20日發布的公告提及BIS簽發了一項激活拒絕令(“拒絕令”)的命令。公司收到BIS的指引,內容有關美國商務部接受并審議公司提交的補充資料的程序。中興通訊同時稱,預計將按照上述程序向BIS提供資料,并在必要的情況下考慮采取相關美國法律下可采取的行政或法律措施。公司股票繼續停牌。據華爾街日報此前...
據外媒報道,機器人創業公司Anki首席執行官Boris Sofman周一在會議上告知員工公司將于當地時間周三開始進入關門停業模式。“盡管過去我們取得了成功,但我們追求各種融資途徑,為我們未來的產品開發提供資金,并在我們的平臺上進行擴展。”Anki發言人說,“因為我們與戰略投資者無法達成協議,一個重要的金融交易在最后階段失敗。我們正在盡最大努力照顧...
三星于昨日公布了第一季度財報,財報顯示,第一季度營收為55.33萬億韓元(約合452.97億美元),較上年同期的52.39萬億韓元增長5.61%;凈利潤4.88萬億韓元(約合40億美元),較上年同期的5.04萬億韓元下降3.15%,但優于此前財測。韓國分析機構Shinhan Investment的分析師認為,三星Q1財報高于預期得益于一些中國智能手機廠商進行了零部件庫存調整,因此來自...
近年來,數字經濟規模不斷擴張,已成為國民經濟的重要組成部分,美、英、德等國的數字經濟GDP占比超過60%,居主導地位。目前,我國正積極推進數字產業化、產業數字化,引導數字經濟和實體經濟深度融合,推動經濟高質量發展。其中,隨著數字經濟向能源領域加速滲透,能源行業加快數字化、網絡化、智能化轉型。作為一種應運而生的新經濟形態,能源數字經濟...

史海拾趣

問答坊 | AI 解惑

什么是djyos?(連續報道帖)

本帖所述的操作系統源代碼和《都江堰操作系統與嵌入式系統設計》一書,均可以在 www.djyos.com 中免費下載。     都江堰操作系統(簡稱djyos)是一個操作系統,但不是“又一個操作系統”,它是一個全新思路的操作系統。 &nbs ...…

查看全部問答∨

插件

請問論壇里有哪位高人做過自動插件機項目,也就是自動焊接電容電阻那種設備,需要注意的問題是什么,如果熟悉的可以合作一下。…

查看全部問答∨

wince下如何立刻檢測到網絡是否連接

各位:     硬件是通過無線網卡連接到網絡上的,軟件上要求時刻檢測網絡連接狀態,當網絡斷的時候給出提示 可是我發現手動的將無線AP的電源關掉,無線網卡(VT6656)顯示還是連接,而且信號顯示very good,即不能 立刻刷新當前的狀態, ...…

查看全部問答∨

賣一塊二手gec 2440開發板,價錢1100,可砍價.帶觸摸屏.僅限蘇州地區當面交易,可以先試用.資料齊全.聯系請加msn:guyuguang8628391@

GEC2440開發板硬件構成 硬件功能介紹: ◆ 采用三星公司的 S3C2440,系統穩定運行在405MHz,最高可達530MHz; ◆ 64M 字節的 SDRAM,由兩片 K4S561632 組成,工作在 32 位模式下; ◆ 64M 字節 NAND Flash,采用的是 K9F1208,可以兼容 16M,32 ...…

查看全部問答∨

問一個LoadString的問題

看到一段代碼,不明白 PBYTE pRes; pRes = (PBYTE)LoadString (hInst, IDS_DOITEXT , NULL, 0) // Get the length of the string resource int nLen = *(PWORD)(pRes-2) * sizeof (TCHAR); MSDN上面說,字符串資源的字符長度在字符串起始 ...…

查看全部問答∨

燒寫2.6內核后2410通過VIVI啟動失敗

今天想把2.6.22內核替換以前的2.4內核 但是編譯后燒錄上去就在這個地方掛了! vivi> boot Copy linux kernel from 0x00030000 to 0x30008000, size = 0x002d0000 ... done zImage magic = 0x016f2818 Setup linux parameters at 0x3000010 ...…

查看全部問答∨

IAR的編譯器比MDK的差這么多?!

                                 我們搞變頻的,打算用ST的芯片,買了塊STM32評估板,開始挑開發工具,直接從IAR例程中挑了一個,先在IAR下編譯,最 ...…

查看全部問答∨

單片機上電不工作??

我用的是430中的f135單片機。每次掉電后再次上電單片機都不工作,必須復位一次才能正常工作。我不能理解這到底是什么原因。復位電路是完全正確的,而且電容足夠大、晶振是4兆的。我用msp430f1222單片機就不會有這樣的問題。 請斑竹和高手們幫 ...…

查看全部問答∨

TA0和TA1到底什么關系啊

今天幾乎就糾結在這TA0和TA1的設置中了。手冊上對TA1根本就沒有任何提及。可是在仿真的時候,TA1擁有和TA0完全一樣的寄存器,而且頭文件里對它們都有定義。可是這兩個卻總是不能同時運行。同樣的程序,TA0能用,修改成TA1就不行了。下面這個程序就 ...…

查看全部問答∨

好東東!《android應用程序開發與典型案例》完整版PDF!

《android應用程序開發與典型案例》圖書簡介: 共23章,內容包含兩大部分。第一部分是android程序設計基礎,在介紹android環境搭建以及android系統基本控件和組件后,詳細介紹了android系統應用編程中典型的技術,比如,android中的圖形圖像、多媒 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 大同县| 都昌县| 新邵县| 宜都市| 灵台县| 德化县| 衡南县| 玉林市| 灵丘县| 元氏县| 黎城县| 饶阳县| 河曲县| 陈巴尔虎旗| 玉环县| 靖江市| 临澧县| 鱼台县| 南宫市| 永济市| 阿合奇县| 太保市| 大姚县| 内丘县| 定结县| 富源县| 兴山县| 克什克腾旗| 鸡西市| 成安县| 措美县| 合川市| 大埔县| 宁武县| 平乐县| 莲花县| 侯马市| 五华县| 大同市| 汤阴县| 乌拉特后旗|