精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

LL庫中常見關鍵字__STATIC_INLINE

冬至子 ? 來源:ITRelief ? 作者:Sachefgh Xu ? 2023-07-24 11:30 ? 次閱讀

LL庫中常見關鍵字__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

關于一些宏定義:

#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.引腳初始化結構體 LL_GPIO_InitTypeDef

typedef struct
{
  uint32_t Pin; /*
  指定引腳 ,Pin =  LL_GPIO_PIN_x   x為引腳號或ALL;
  可以進行位操作
  例: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  復用功能模式
  */
  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;

相關函數(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);/*
恢復默認引腳配置(整組引腳);成功返回ErrorStatus.SUCCESS*/
void LL_GPIO_StructInit(LL_GPIO_InitTypeDef *GPIO_InitStruct);/*
重設選擇的LL_GPIO_InitTypeDef類型結構*/

/*********返回值ErrorStatus*********/
typedef enum
{
  SUCCESS = 0U,
  ERROR = !SUCCESS
} ErrorStatus;

相關函數(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);/*
配置輸出模式  ※可以位或設置多個引腳
*/
__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);/*
設置上拉/下拉 ※只能指定一個引腳
*/
__STATIC_INLINE uint32_t LL_GPIO_GetPinPull(GPIO_TypeDef *GPIOx, uint32_t Pin);/*
獲取上/下拉狀況 ※只能指定一個引腳
*/

鎖定引腳:鎖定模式配置,鎖定的引腳經重啟后方能更改。此功能不常用。

__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);/*
多個引腳。當任一選中引腳鎖定時返回 1
*/
__STATIC_INLINE uint32_t LL_GPIO_IsAnyPinLocked(GPIO_TypeDef *GPIOx);/*
與 LL_GPIO_IsPinLocked(GPIO_TypeDef *GPIOx, LL_GPIO_PIN_ALL)等效
*/

函數(shù)3:

//輸出&輸入關鍵函數(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);/*
  將選中的一個/多個引腳電平反轉
*/

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 上拉電阻
    +關注

    關注

    5

    文章

    359

    瀏覽量

    30573
  • 寄存器
    +關注

    關注

    31

    文章

    5318

    瀏覽量

    120015
  • 變換器
    +關注

    關注

    17

    文章

    2087

    瀏覽量

    109140
  • GPIO
    +關注

    關注

    16

    文章

    1196

    瀏覽量

    51919
  • STM32單片機
    +關注

    關注

    59

    文章

    549

    瀏覽量

    58647
收藏 人收藏

    評論

    相關推薦

    inline關鍵字被優(yōu)化導致此類函數(shù)被布局在flash內,怎么處理?

    問題解決。 但是,希望樂鑫官方把idf內源碼中的inline關鍵詞都替換為__attribute((always_inline)),因為inline
    發(fā)表于 06-21 12:03

    static 關鍵字

    static 關鍵字 淺析
    發(fā)表于 01-16 16:55

    C語言關鍵字static,volatile,const,extern,return含義及作用?

    C語言關鍵字static,volatile,const,extern,return含義及作用?static 函數(shù)分為內部函數(shù)和外部函數(shù)當一個源程序由多個源文件組成時,C語言根據函數(shù)能否被其它源文件
    發(fā)表于 09-15 20:18

    請求指教關于MDK5中unknow type name “__STATIC_INLINE”的解決方法

    消除這個錯誤。不知道如何解決,跪求各路高手指教。而且,奇怪的是每次打開這個CMSIS_ARMCC.H文件都會出現(xiàn)不一樣的錯誤。但是所有錯誤都和“__STATIC_INLINE”相關。具體報錯提示
    發(fā)表于 11-27 21:18

    關鍵字static的作用是什么

    嵌入式面經1.關鍵字static的作用是什么2.關鍵字const是什么含意?3.const和宏定義的區(qū)別4.關鍵字volatile有什么含意 并給出三個不同的例子。5.引用和指針有什么
    發(fā)表于 11-09 07:23

    嵌入式程序員常見的const、static、volatile關鍵字

    開發(fā)中,const、static、volatile都是很常見的,我們嵌入式程序員需要熟知這三個關鍵字的恰當用法。下面是我參照網路上的大咖,大牛的博文,然后做一些代碼測試,撰寫一下自己的體會。歡迎大家一...
    發(fā)表于 12-21 06:08

    在C語言中關鍵字static的作用是什么

    在C語言中關鍵字static的作用是什么?用預處理指令#define 聲明一個函數(shù),輸入天數(shù)得到有多少秒?
    發(fā)表于 12-24 06:53

    關于LL的”LL_AHB1_GRP1_EnableClock”函數(shù)問題求解

    關于 LL_AHB1_GRP1_EnableClock,在函數(shù)中設置位后,將其讀取為“tmprg”并轉換為 void 類型。讀書的理由是什么? __STATIC_INLINE void
    發(fā)表于 12-27 06:01

    單片機C語言中常用到的關鍵字及數(shù)據類型

    單片機C語言中常用到的關鍵字及數(shù)據類型。
    發(fā)表于 11-03 10:57 ?13次下載

    java中static的作用及常見的誤區(qū)

    一.static關鍵字的用途 二.static關鍵字的誤區(qū) 三。常見的筆試面試題 一.static
    發(fā)表于 09-27 10:44 ?0次下載
    java中<b class='flag-5'>static</b>的作用及<b class='flag-5'>常見</b>的誤區(qū)

    java中static關鍵字的作用

    列舉了一些面試筆試中常見的關于static的考題。 以下是本文的目錄大綱: 一.static關鍵字的用途 二.static
    發(fā)表于 09-27 17:12 ?0次下載

    嵌入式C語言必須要用的4個關鍵字和它的詳細資料概述

    1.static關鍵字 這個關鍵字前面也有提到,它的作用是強大的。 要對static關鍵字深入了解,首先需要掌握標準C程序的組成。
    的頭像 發(fā)表于 07-05 10:20 ?7052次閱讀

    C語言關鍵字static有哪些絕妙用途

    為什么要說static妙,它確實是妙,在軟件開發(fā)或者單片機開發(fā)過程中,大家總以為static就是一個靜態(tài)變量,在變量類型的前面加上就自動清0了,還有就是加上static關鍵字的,不管是
    發(fā)表于 07-18 17:38 ?1次下載
    C語言<b class='flag-5'>關鍵字</b><b class='flag-5'>static</b>有哪些絕妙用途

    JAVA語言中Static關鍵字使用

    注:為解決安卓開發(fā)中服務器IP隨機變化導致客戶端找不到服務器的問題,通過關鍵字Static修飾成員變量User_url,通過客戶端主函數(shù)代碼獲取輸入的服務器IP值賦值給User_url,然后其它Activity即可使用該靜態(tài)變量值,從而正確找到服務器。
    的頭像 發(fā)表于 06-04 16:45 ?459次閱讀
    JAVA語言中<b class='flag-5'>Static</b><b class='flag-5'>關鍵字</b>使用

    static關鍵字的三種用法

    變量(StaticVariables):在C語言中,使用`static`關鍵字來聲明靜態(tài)變量是一種常見的用法,它具有以下主要作用:1.生存期延長:靜態(tài)變量的生存期在程序的整個運行期間,而不僅僅是在聲明它的函數(shù)調用期間。這意味著靜
    的頭像 發(fā)表于 11-10 08:00 ?494次閱讀
    <b class='flag-5'>static</b><b class='flag-5'>關鍵字</b>的三種用法