我的程序庫(kù)01_HAL庫(kù)文件的頭文件結(jié)構(gòu)


title: 我的程序庫(kù)01_HAL庫(kù)文件的頭文件結(jié)構(gòu)
tags: 編程,STM32,函數(shù)庫(kù),程序庫(kù)
grammar_cjkRuby: true


防重復(fù)編譯和C++沖突申明

其中#ifndef 是為了防止重復(fù)編譯,cplusplus 是為了防止編譯沖突
#ifndef __STM32F4xx_HAL_USART_H  //如果沒有包含過(guò)頭文件,則包含進(jìn)去
#define __STM32F4xx_HAL_USART_H 

#ifdef __cplusplus  //如果編譯器是C++闭树,則下面的語(yǔ)句以C語(yǔ)言進(jìn)行編譯移迫,這里是為了兼容C++調(diào)用
extern "C" { 
#endif

包含頭文件

其中HAL_DEF文件包含了一些HAL要用到的標(biāo)志數(shù)據(jù)結(jié)構(gòu)枚舉等

#include "stm32f4xx_hal_def.h"  
 HAL_OK       = 0x00U,
  HAL_ERROR    = 0x01U,
  HAL_BUSY     = 0x02U,
  HAL_TIMEOUT  = 0x03U

結(jié)構(gòu)體的定義恼蓬,包括如下幾個(gè)結(jié)構(gòu)體

 1. USART_InitTypeDef
 //   通信的初始化一般有定欧,模式設(shè)置淀零,數(shù)據(jù)速度,數(shù)據(jù)格式和時(shí)鐘
 2. HAL_USART_StateTypeDef
   狀態(tài)包括了:是否初始化過(guò)伞广,發(fā)送和接收忙,以及錯(cuò)誤和超時(shí)

模塊的虛擬化結(jié)構(gòu)體USART_HandleTypeDef

typedef struct
{
  USART_TypeDef                 *Instance;     //所有模塊寄存器的地址都在這里定義
  USART_InitTypeDef             Init;             //初始化結(jié)構(gòu)體
  
  uint8_t                       *pTxBuffPtr;      //發(fā)送的數(shù)據(jù)從哪里取
  uint16_t                      TxXferSize;       //發(fā)送數(shù)據(jù)的長(zhǎng)度
  __IO uint16_t                 TxXferCount;     //發(fā)送數(shù)據(jù)計(jì)數(shù)
  
  uint8_t                       *pRxBuffPtr;      /./接收的數(shù)據(jù)從哪里取
  uint16_t                      RxXferSize;       /接收數(shù)據(jù)的長(zhǎng)度
  __IO uint16_t                 RxXferCount;   //接收數(shù)據(jù)計(jì)數(shù)
  
  DMA_HandleTypeDef             *hdmatx;        //發(fā)送數(shù)據(jù)的DMA模塊
  DMA_HandleTypeDef             *hdmarx;        //接收數(shù)據(jù)的DMA模塊
  
  HAL_LockTypeDef                Lock;            //模塊鎖存疼电,在進(jìn)行初始化的時(shí)候不再使用
  __IO HAL_USART_StateTypeDef    State;     //通信狀態(tài)嚼锄,在上面的枚舉體中
  __IO uint32_t                  ErrorCode;     //錯(cuò)誤碼

}USART_HandleTypeDef;

定義數(shù)據(jù)結(jié)構(gòu)體要用的模塊常量

其中錯(cuò)誤碼,標(biāo)志澜沟,中斷和標(biāo)志灾票,時(shí)鐘使能這五個(gè)常量大部分的模塊都會(huì)有,其他為特殊功能性的茫虽。
// 1. 錯(cuò)誤碼:
 //2. 數(shù)據(jù)長(zhǎng)度:
// 3. 停止位
 //4. 校驗(yàn)
 //5. 模式:
 //6. 時(shí)鐘使能:
 //7. 極性
 //8. 相位
 //9. 停止位
 //10. 響應(yīng)
 //11. 標(biāo)志位
 //12. 中斷

定義一些簡(jiǎn)單的宏定義函數(shù)

  __HAL_USART_RESET_HANDLE_STATE //復(fù)位USART模塊
 __HAL_USART_GET_FLAG //獲取標(biāo)志
 __HAL_USART_CLEAR_FLAG //清標(biāo)志位
__HAL_USART_CLEAR_PEFLAG //清模塊掛起
 __HAL_USART_CLEAR_FEFLAG//FE //清快速使能標(biāo)志
 __HAL_USART_CLEAR_NEFLAG //清互補(bǔ)輸出
 __HAL_USART_CLEAR_OREFLAG//清OVER溢出
 //中斷相關(guān)函數(shù)
 __HAL_USART_ENABLE_IT // 中斷使能
 __HAL_USART_DISABLE_IT //中斷去使能
 __HAL_USART_GET_IT_SOURCE
 
 __HAL_USART_ONE_BIT_SAMPLE_ENABLE //一位采樣模式使能和失能
 __HAL_USART_ENABLE //UART模塊使能和失能

初始化和去初始化的函數(shù)

HAL_StatusTypeDef HAL_USART_Init(USART_HandleTypeDef *husart);
HAL_StatusTypeDef HAL_USART_DeInit(USART_HandleTypeDef *husart);
void HAL_USART_MspInit(USART_HandleTypeDef *husart);
void HAL_USART_MspDeInit(USART_HandleTypeDef *husart);
其中MspInit是用于HAL_USART_Init的調(diào)用刊苍,其中此函數(shù)為weak函數(shù),如果需要進(jìn)行修改濒析,我們也可以自己定義正什。

模塊的IO功能函數(shù)組

//發(fā)送和接收
HAL_USART_Transmit //發(fā)送
HAL_USART_Receive //接收
HAL_USART_TransmitReceive // 全雙工下的數(shù)據(jù)通信

//中斷
HAL_USART_Transmit_IT //發(fā)送中斷
HAL_USART_Receive_IT // 接收中斷
HAL_USART_TransmitReceive_IT //收發(fā)中斷

//DMA相關(guān)
HAL_USART_Transmit_DMA
HAL_USART_Receive_DMA
HAL_USART_TransmitReceive_DMA //
HAL_USART_DMAPause //暫停
HAL_USART_DMAResume //重啟
HAL_USART_DMAStop //停止

//終止函數(shù)
HAL_USART_Abort
HAL_USART_Abort_IT //終止和終止中斷

//中斷和回調(diào)函數(shù),回調(diào)函數(shù)全是弱定義“ __weak”
HAL_USART_IRQHandler  //中斷入口
HAL_USART_TxCpltCallback  //發(fā)送完成回調(diào)
HAL_USART_TxHalfCpltCallback //發(fā)送一半
HAL_USART_RxCpltCallback  //
HAL_USART_RxHalfCpltCallback
HAL_USART_TxRxCpltCallback   //雙工發(fā)送接收完成
HAL_USART_ErrorCallback   //錯(cuò)誤
HAL_USART_AbortCpltCallback //終止

//獲取狀態(tài)和錯(cuò)誤狀態(tài)標(biāo)識(shí)
HAL_USART_GetState
HAL_USART_GetError

私有類型号杏,私有變量和私有常量

這個(gè)是上面的IO函數(shù)要用到的私有參數(shù)婴氮,可以不關(guān)注
// Private types
//Private variables 
// Private constants 
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市盾致,隨后出現(xiàn)的幾起案子主经,更是在濱河造成了極大的恐慌,老刑警劉巖庭惜,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件罩驻,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡护赊,警方通過(guò)查閱死者的電腦和手機(jī)惠遏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門砾跃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人节吮,你說(shuō)我怎么就攤上這事抽高。” “怎么了透绩?”我有些...
    開封第一講書人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵翘骂,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我帚豪,道長(zhǎng)雏胃,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任志鞍,我火速辦了婚禮瞭亮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘固棚。我一直安慰自己统翩,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開白布此洲。 她就那樣靜靜地躺著厂汗,像睡著了一般。 火紅的嫁衣襯著肌膚如雪呜师。 梳的紋絲不亂的頭發(fā)上娶桦,一...
    開封第一講書人閱讀 52,328評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音汁汗,去河邊找鬼衷畦。 笑死,一個(gè)胖子當(dāng)著我的面吹牛知牌,可吹牛的內(nèi)容都是我干的祈争。 我是一名探鬼主播,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼角寸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼菩混!你這毒婦竟也來(lái)了神僵?” 一聲冷哼從身側(cè)響起哼转,我...
    開封第一講書人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎生宛,沒想到半個(gè)月后亿柑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體邢疙,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了秘症。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡式矫,死狀恐怖乡摹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情采转,我是刑警寧澤聪廉,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站故慈,受9級(jí)特大地震影響板熊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜察绷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一干签、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧拆撼,春花似錦容劳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至莺禁,卻和暖如春留量,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背哟冬。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工楼熄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人浩峡。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓孝赫,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親红符。 傳聞我的和親對(duì)象是個(gè)殘疾皇子青柄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容