LL庫中常見關(guān)鍵字__STATIC_INLINE,其定義見cmsis_gcc.h:
#ifndef __ASM
#define __ASM __asm
#endif
#ifndef __INLINE
#define __INLINE inline
#endif
#ifndef __STATIC_INLINE
#define __STATIC_INLINE static inline
#endif
關(guān)于一些宏定義:
#define SET_BIT(REG, BIT) ((REG) |= (BIT))
#define CLEAR_BIT(REG, BIT) ((REG) &= ~(BIT))
#define READ_BIT(REG, BIT) ((REG) & (BIT))
#define CLEAR_REG(REG) ((REG) = (0x0))
#define WRITE_REG(REG, VAL) ((REG) = (VAL))
#define READ_REG(REG) ((REG))
#define MODIFY_REG(REG, CLEARMASK, SETMASK) WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK)))
#define POSITION_VAL(VAL) (__CLZ(__RBIT(VAL)))
(一)GPIO
文件:stm32fxxx_ll_gpio.h ; stm32fxxx_ll_gpio.c
1.引腳初始化結(jié)構(gòu)體 LL_GPIO_InitTypeDef
typedef struct
{
uint32_t Pin; /*
指定引腳 ,Pin = LL_GPIO_PIN_x x為引腳號或ALL;
可以進(jìn)行位操作
例:LL_GPIO_PIN_1 | LL_GPIO_PIN_2
*/
uint32_t Mode;/*
五種模式可選:
LL_GPIO_MODE_ANALOG Analog模式
LL_GPIO_MODE_FLOATING 引腳浮空(Reset_State)模式
LL_GPIO_MODE_INPUT 輸入模式
LL_GPIO_MODE_OUTPUT 輸出模式
LL_GPIO_MODE_ALTERNATE 復(fù)用功能模式
*/
uint32_t Speed; /*
輸出變換速度選擇(輸出模式時):
LL_GPIO_MODE_OUTPUT_10MHz或LL_GPIO_SPEED_FREQ_MEDIUM 10MHz
LL_GPIO_MODE_OUTPUT_2MHz或LL_GPIO_SPEED_FREQ_LOW 2MHz
LL_GPIO_MODE_OUTPUT_50MHz或LL_GPIO_SPEED_FREQ_HIGH 50MHz
*/
uint32_t OutputType;/*
引腳配置為輸出時:
LL_GPIO_OUTPUT_PUSHPULL 推挽輸出
LL_GPIO_OUTPUT_OPENDRAIN 開漏輸出
*/
uint32_t Pull;/*
上/下拉電阻:
LL_GPIO_PULL_DOWN 下拉電阻使能
LL_GPIO_PULL_UP 上拉電阻使能
*/
} LL_GPIO_InitTypeDef;
相關(guān)函數(shù)1:
/*定義USE_FULL_LL_DRIVER后可用*/
ErrorStatus LL_GPIO_Init(GPIO_TypeDef *GPIOx, LL_GPIO_InitTypeDef *GPIO_InitStruct);/*
初始化選中的GPIO; GPIOx=GPIOA,GPIOB...;成功返回ErrorStatus.SUCCESS*/
ErrorStatus LL_GPIO_DeInit(GPIO_TypeDef *GPIOx);/*
恢復(fù)默認(rèn)引腳配置(整組引腳);成功返回ErrorStatus.SUCCESS*/
void LL_GPIO_StructInit(LL_GPIO_InitTypeDef *GPIO_InitStruct);/*
重設(shè)選擇的LL_GPIO_InitTypeDef類型結(jié)構(gòu)*/
/*********返回值ErrorStatus*********/
typedef enum
{
SUCCESS = 0U,
ERROR = !SUCCESS
} ErrorStatus;
相關(guān)函數(shù)2: 這些函數(shù)被static修飾,位于.h文件中。
__STATIC_INLINE void LL_GPIO_SetPinMode(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Mode);/*
配置引腳模式。 ※只能指定一個引腳
*/
__STATIC_INLINE uint32_t LL_GPIO_GetPinMode(GPIO_TypeDef *GPIOx, uint32_t Pin);/*
讀取引腳模式信息,返回值為上面五種模式 ※只能指定一個引腳
*/
__STATIC_INLINE void LL_GPIO_SetPinSpeed(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Speed)/*
配置速度 ※只能指定一個引腳
*/
__STATIC_INLINE uint32_t LL_GPIO_GetPinSpeed(GPIO_TypeDef *GPIOx, uint32_t Pin);/*
讀取引腳速度信息,返回值為三種速度變換模式 ※只能指定一個引腳
*/
__STATIC_INLINE void LL_GPIO_SetPinOutputType(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t OutputType);/*
配置輸出模式 ※可以位或設(shè)置多個引腳
*/
__STATIC_INLINE uint32_t LL_GPIO_GetPinOutputType(GPIO_TypeDef *GPIOx, uint32_t Pin);/*
讀取引腳輸出模式?!荒苤付ㄒ粋€引腳
*/
__STATIC_INLINE void LL_GPIO_SetPinPull(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Pull);/*
設(shè)置上拉/下拉 ※只能指定一個引腳
*/
__STATIC_INLINE uint32_t LL_GPIO_GetPinPull(GPIO_TypeDef *GPIOx, uint32_t Pin);/*
獲取上/下拉狀況 ※只能指定一個引腳
*/
鎖定引腳:鎖定模式配置,鎖定的引腳經(jīng)重啟后方能更改。此功能不常用。
__STATIC_INLINE void LL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint32_t Pin);/*
鎖定選中引腳。可位或同時選擇多個引腳
*/
__STATIC_INLINE uint32_t LL_GPIO_IsPinLocked(GPIO_TypeDef *GPIOx, uint32_t PinMask);/*
多個引腳。當(dāng)任一選中引腳鎖定時返回 1
*/
__STATIC_INLINE uint32_t LL_GPIO_IsAnyPinLocked(GPIO_TypeDef *GPIOx);/*
與 LL_GPIO_IsPinLocked(GPIO_TypeDef *GPIOx, LL_GPIO_PIN_ALL)等效
*/
函數(shù)3:
//輸出&輸入關(guān)鍵函數(shù)
__STATIC_INLINE uint32_t LL_GPIO_ReadInputPort(GPIO_TypeDef *GPIOx);/*
讀取輸入電平信息
讀輸入寄存器IDR
*/
__STATIC_INLINE void LL_GPIO_WriteOutputPort(GPIO_TypeDef *GPIOx,uint32_t PortValue);/*
控制引腳輸出高/低電平
寫輸出寄存器ODR
*/
__STATIC_INLINE uint32_t LL_GPIO_ReadOutputPort(GPIO_TypeDef *GPIOx);/*
讀取輸出電平配置
讀輸出寄存器ODR
*//****************************************/
__STATIC_INLINE void LL_GPIO_SetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask);/*
將選中的一個/多個引腳電平置高
*/
__STATIC_INLINE void LL_GPIO_ResetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask);/*
將選中的一個/多個引腳電平置低
*/
__STATIC_INLINE void LL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint32_t PinMask);/*
將選中的一個/多個引腳電平反轉(zhuǎn)
*/
-
上拉電阻
+關(guān)注
關(guān)注
5文章
360瀏覽量
30621 -
寄存器
+關(guān)注
關(guān)注
31文章
5343瀏覽量
120377 -
變換器
+關(guān)注
關(guān)注
17文章
2099瀏覽量
109307 -
GPIO
+關(guān)注
關(guān)注
16文章
1204瀏覽量
52104 -
STM32單片機
+關(guān)注
關(guān)注
59文章
549瀏覽量
58717
發(fā)布評論請先 登錄
相關(guān)推薦
評論