chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

HAL庫中do{...} while(0U) 宏定義的作用和意義

黃工的嵌入式技術(shù)圈 ? 來源:黃工的嵌入式技術(shù)圈 ? 2020-03-03 14:07 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

應(yīng)部分老鐵的要求,講一些細(xì)節(jié)知識點(diǎn)。一來,我不用花費(fèi)大量精力去寫文章;二來,大家也不會因看文章覺得累。

1寫在前面

很多初學(xué)者,以及有一定工作經(jīng)驗(yàn)的朋友都不知道這個“do{...} while(0U)”作用和意義,甚至覺得這樣寫的代碼復(fù)雜且沒意義。

相信使用過STM32Cube HAL庫的朋友都知道,源碼里面有許多do{...} while(0U)的宏定義語句。

今天講的主要知識點(diǎn)是:HAL庫中do{...} while(0U)作用和意義。

當(dāng)然,do{...} while(0U)不限于HAL庫中,適用于很多地方。

2

HAL庫中do{} while(0U)宏定義

在HAL庫中,很多.h文件都有do{...} while(0U)這樣的宏定義,比如:在stm32f1xx_hal_rcc.h中,使能GPIO時鐘

對比在LL庫中時鐘使能代碼,如下:

很多人只會覺得LL庫這種函數(shù)比較合理,而想不明白為什么HAL會使用這種“do{...} while(0U)”宏定義的語句。

下一章節(jié)重點(diǎn)講述一下這種“do{...} while(0U)”宏定義的作用和意義。

3

do{...} while(0U)宏定義的作用和意義

使用do{...} while(0U)這種方式其實(shí)有幾種重要作用,下面簡單說幾條:

1.編譯出錯

不使用do{}while:

使用大括號,多一個分號:

使用do{...} while(0U):

大家對比以上幾種,你覺得哪一種合理?

2.避免goto跳轉(zhuǎn)語句帶來問題

不使用do{}hwile(0):

使用do{}hwile(0):

大家再對比以上兩種,發(fā)現(xiàn)了什么問題?

我這里也不再繼續(xù)舉例說明了,大家可以上網(wǎng)了解,其實(shí)還有很多重要意義和作用。

怎么說呢,點(diǎn)到為止,希望對你有啟發(fā)。

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

    關(guān)注

    0

    文章

    51

    瀏覽量

    9446
  • stm32cubemx
    +關(guān)注

    關(guān)注

    5

    文章

    290

    瀏覽量

    17468
  • HAL庫
    +關(guān)注

    關(guān)注

    1

    文章

    121

    瀏覽量

    7733
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    C語言中實(shí)現(xiàn)函數(shù)的三種方式

    的第一個分號后便結(jié)束。即 a = b 和 b = tmp 均不受控制語句所作用。 因此,在工程,一般使用三種方式來對函數(shù)進(jìn)行封裝,分別為 {}、
    發(fā)表于 12-29 07:34

    C語言的編程技巧

    1、定義使用do{...}while(0)?:當(dāng)定義
    發(fā)表于 11-27 06:46

    立即在GitHub上搶先體驗(yàn)面向STM32U5的最新STM32Cube HAL更新

    其滿足您的需求。 如何獲取預(yù)覽版本 面向STM32U5系列的STM32Cube HAL2預(yù)覽版已在GitHub代碼STM32CubeU5-V2-Preview開放。 更新后的
    的頭像 發(fā)表于 10-20 17:12 ?1221次閱讀

    RT_USING_TIMER_SOFT定義是否一定要開啟?

    定義 :RT_USING_TIMER_SOFT 請問:如果沒有使能軟件定時器的定義,只在創(chuàng)建定時器時,通過RT_TIMER_FLAG_SOFT_TIMER是否可以創(chuàng)建一個軟件定
    發(fā)表于 09-29 07:11

    SConscript結(jié)果與rtconfig.h定義相反,是什么原因呢?

    當(dāng)我在rtconfig.h定義注釋時,添加了構(gòu)建 當(dāng)我取消定義注釋時,反而排除了構(gòu)建 SConscript結(jié)果與rtconfig
    發(fā)表于 09-23 06:01

    【NCS隨筆】NCS使用CJSON

    【NCS隨筆】NCS使用CJSON 這個文章講一下在NCS上面如何使用JSON,我使用Hello_world例程添加 的配置 CONFIG_LOG =y
    的頭像 發(fā)表于 08-13 15:12 ?737次閱讀
    【NCS隨筆】NCS使用CJSON<b class='flag-5'>庫</b>

    IEC 62353常用的術(shù)語和定義

    本文詳細(xì)解讀IEC 62353標(biāo)準(zhǔn)的關(guān)鍵術(shù)語,包括被測設(shè)備(DUT/EUT)、應(yīng)用部分(B/BF/CF型)、泄漏電流、微電擊與電擊等定義,幫助理解醫(yī)療電氣設(shè)備安全測試要求。
    的頭像 發(fā)表于 07-29 17:27 ?847次閱讀

    SPI+DMA一直發(fā)會進(jìn)入HAL_BUSY無法跳出是怎么回事?

    HAL_SPI_STATE_BUSY_TX_RX狀態(tài)。 通過查看HAL,可以找到State在HAL_SPI_IRQHandler可被設(shè)
    發(fā)表于 07-18 06:38

    wiced_hal_sflash_write在CYW20721B2上不起作用是怎么回事?

    時,寫入不起作用。 邏輯分析儀上沒有保存命令。 我記得在 CYW20706 必須通過 *((unsigned char*)(0x00201a14)) = 1 解鎖寫入能力;
    發(fā)表于 06-30 06:22

    如何使用HAL ADCREAD讀取VDDIO?

    main(void) { cy_rslt_t result; #如果定義(CY_DEVICE_SECURE)&& 定義(CY_USING_HAL) cyhal_wdt_t
    發(fā)表于 06-27 06:30

    基于STM32 HAL與標(biāo)準(zhǔn)的esp8266接入機(jī)智云方案(二)

    在《基于STM32HAL與標(biāo)準(zhǔn)的esp8266接入機(jī)智云方案(一)》,我們詳細(xì)介紹了硬件連接和機(jī)智云客戶端的創(chuàng)建。本篇將重點(diǎn)講解如何下載代碼、分析下載的代碼,并直接使用這些代碼連
    的頭像 發(fā)表于 05-28 18:02 ?1605次閱讀
    基于STM32 <b class='flag-5'>HAL</b><b class='flag-5'>庫</b>與標(biāo)準(zhǔn)<b class='flag-5'>庫</b>的esp8266接入機(jī)智云方案(二)

    HAL15xy_SOT23

    HAL1501SU-A,HAL1502SU-A,HAL1503SU-A,HAL1504SU-A,HAL1505SU-A,
    發(fā)表于 05-14 15:03 ?0次下載

    STM32U5 IWDG的提前喚醒中斷無法在STOP模式下觸發(fā)怎么解決?

    was resumed from stop 2 */ if(__HAL_PWR_GET_FLAG(PWR_FLAG_STOPF) == 0U) {} /* Clear stop flag
    發(fā)表于 04-27 08:05

    STM32U5 IWDG的提前喚醒中斷無法在STOP模式下觸發(fā)怎么解決?

    was resumed from stop 2 */ if(__HAL_PWR_GET_FLAG(PWR_FLAG_STOPF) == 0U) {} /* Clear stop flag
    發(fā)表于 04-24 07:50

    STM32U5 IWDG的提前喚醒中斷無法在STOP模式下觸發(fā)怎么解決?

    was resumed from stop 2 */ if(__HAL_PWR_GET_FLAG(PWR_FLAG_STOPF) == 0U) {} /* Clear stop flag
    發(fā)表于 04-22 08:14