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

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

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

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

SysTick與HAL_Delay的關(guān)系與注意事項(xiàng)

CHANBAEK ? 來源:頭條號(hào)秋天滴風(fēng) ? 作者:頭條號(hào)秋天滴風(fēng) ? 2023-04-21 11:32 ? 次閱讀

SysTick與HAL_Delay的關(guān)系與注意事項(xiàng)

本文將介紹SysTick與HAL_Delay()函數(shù)之間的關(guān)系,以及使用HAL_Delay()函數(shù)的注意事項(xiàng);

一.HAL_Delay()函數(shù)實(shí)現(xiàn)的原理、與SysTick的關(guān)系

下面我們先看一下HAL_Delay函數(shù)的源碼

__weak void HAL_Delay(uint32_t Delay)
{
  uint32_t tickstart = HAL_GetTick();
  uint32_t wait = Delay;

  /* Add a freq to guarantee minimum wait */
  if (wait < HAL_MAX_DELAY)
  {
    wait += (uint32_t)(uwTickFreq);
  }

  while((HAL_GetTick() - tickstart) < wait)
  {
  }
}

從源碼可以看出該函數(shù)將我們傳入的參數(shù)與HAL_GetTick()-tickstart比較,若不滿足條件則退出while、若滿足

接下來我們追一下HAL_GetTick()的源代碼:

__weak uint32_t HAL_GetTick(void)
{
return uwTick;
}

接著追一下uwTick ,發(fā)現(xiàn)在下面這個(gè)函數(shù)中對(duì)它的值進(jìn)行了操作:

__weak void HAL_IncTick(void)
{
uwTick += uwTickFreq;
}

接著追一下uwTickFreq 發(fā)現(xiàn)uwTickFreq = 1,接著追一下HAL_IncTick(void)函數(shù):

發(fā)現(xiàn)HAL_IncTick(void)函數(shù)是在SysTick的中斷回調(diào)函數(shù)內(nèi)調(diào)用的;

綜上可知HAL_Delay與SysTick的關(guān)系:HAL_Delay函數(shù)的執(zhí)行、最終是依賴于SysTick的每觸發(fā)一次SysTick的中斷耗時(shí)1ms,HAL_GetTick()-tickstart會(huì)增大1、知道差值等于HAL_Delay的傳入?yún)?shù)。

二、由SysTick與HAL_Delay之間的關(guān)系可知,我們?cè)谑褂肏AL_Delay的時(shí)候需要注意:當(dāng)在中斷中使用了HAL_Delay函數(shù),則該中斷的搶占優(yōu)先級(jí)必須低于SysTick中斷的優(yōu)先級(jí),否則會(huì)導(dǎo)致SysTick中斷不能搶占該中斷函數(shù)、最終導(dǎo)致HAL_GetTick()-tickstart的值不會(huì)變,從而陷入死循環(huán)中。

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

    關(guān)注

    5

    文章

    895

    瀏覽量

    41391
  • 源碼
    +關(guān)注

    關(guān)注

    8

    文章

    633

    瀏覽量

    29138
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4304

    瀏覽量

    62427
  • Systick
    +關(guān)注

    關(guān)注

    0

    文章

    62

    瀏覽量

    13043
  • HAL
    HAL
    +關(guān)注

    關(guān)注

    2

    文章

    70

    瀏覽量

    12593
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    繞線電感定制的注意事項(xiàng)

    電子發(fā)燒友網(wǎng)站提供《繞線電感定制的注意事項(xiàng).docx》資料免費(fèi)下載
    發(fā)表于 09-20 11:24 ?0次下載

    共模電感定制的注意事項(xiàng)

    電子發(fā)燒友網(wǎng)站提供《共模電感定制的注意事項(xiàng).docx》資料免費(fèi)下載
    發(fā)表于 09-04 11:47 ?0次下載

    LiFePO4設(shè)計(jì)注意事項(xiàng)

    電子發(fā)燒友網(wǎng)站提供《LiFePO4設(shè)計(jì)注意事項(xiàng).pdf》資料免費(fèi)下載
    發(fā)表于 09-03 09:24 ?0次下載
    LiFePO4設(shè)計(jì)<b class='flag-5'>注意事項(xiàng)</b>

    cubeide中使用Hal_Delay()時(shí),每次調(diào)試總會(huì)跳轉(zhuǎn)到異常狀態(tài),如何解決?

    cubeide 中使用Hal_Delay()時(shí),每次調(diào)試總會(huì)跳轉(zhuǎn)到異常狀態(tài)。 Break at address \"0xaf5cf47e\" with no debug
    發(fā)表于 07-23 07:52

    stm32cubemx的HAL_Delay()函數(shù),當(dāng)HAL_GetTick()的計(jì)數(shù)正好要溢出時(shí),是不是延時(shí)就不準(zhǔn)了?

    ; } __weak void HAL_Delay(__IO uint32_t Delay) { uint32_t tickstart = 0; tickstart = HAL
    發(fā)表于 05-09 06:20

    FMD LINK 使用注意事項(xiàng)

    電子發(fā)燒友網(wǎng)站提供《FMD LINK 使用注意事項(xiàng).pdf》資料免費(fèi)下載
    發(fā)表于 05-06 10:11 ?0次下載

    STM32F7 IAP跳轉(zhuǎn)后HAL_Delay沒有執(zhí)行的原因?

    on variable incremented in SysTick ISR. This implies that if HAL_Delay() is called from a peripheral
    發(fā)表于 04-09 06:53

    浪涌抑制器的應(yīng)用及注意事項(xiàng)

    浪涌抑制器的應(yīng)用及注意事項(xiàng)?|深圳比創(chuàng)達(dá)電子
    的頭像 發(fā)表于 01-19 09:55 ?686次閱讀
    浪涌抑制器的應(yīng)用及<b class='flag-5'>注意事項(xiàng)</b>?

    測(cè)速電機(jī): 常見6大注意事項(xiàng)

    測(cè)速電機(jī): 常見6大注意事項(xiàng)!測(cè)速電機(jī)是一種用于測(cè)量物體運(yùn)動(dòng)速度的設(shè)備,廣泛應(yīng)用于工業(yè)生產(chǎn)和科學(xué)研究中。測(cè)速電機(jī)常見的6大注意事項(xiàng)以確保安全和準(zhǔn)確性。
    的頭像 發(fā)表于 01-11 10:53 ?429次閱讀
    測(cè)速電機(jī): 常見6大<b class='flag-5'>注意事項(xiàng)</b>

    霍爾元件使用的注意事項(xiàng)

    霍爾元件使用的注意事項(xiàng)? 霍爾元件是一種常見的電子元件,主要用于測(cè)量和檢測(cè)磁場(chǎng)的變化。它具有靈敏度高、響應(yīng)速度快、耐磁場(chǎng)干擾等優(yōu)點(diǎn),在各種應(yīng)用中得到廣泛使用。然而,為了確保霍爾元件的正常工作和延長(zhǎng)其
    的頭像 發(fā)表于 12-18 14:56 ?1223次閱讀

    電流互感器的使用注意事項(xiàng)

    當(dāng)談到電流互感器的使用時(shí),有一些重要的注意事項(xiàng)需要我們牢記。在本文中,我們將探討這些注意事項(xiàng),為您提供詳細(xì)和全面的信息。
    的頭像 發(fā)表于 12-15 10:34 ?1373次閱讀
    電流互感器的使用<b class='flag-5'>注意事項(xiàng)</b>

    輕負(fù)載時(shí)開關(guān)元件工作相關(guān)的注意事項(xiàng)

    輕負(fù)載時(shí)開關(guān)元件工作相關(guān)的注意事項(xiàng)
    的頭像 發(fā)表于 12-14 15:43 ?419次閱讀
    輕負(fù)載時(shí)開關(guān)元件工作相關(guān)的<b class='flag-5'>注意事項(xiàng)</b>

    STM32使用__disable_irq()后就無法使用HAL_Delay(xx),這是為什么?

    __enable_irq();//打開所有中斷但實(shí)際應(yīng)用中發(fā)現(xiàn),當(dāng)使用__disable_irq(); 關(guān)閉所有中斷后,再用__enable_irq();打開所有中斷,就會(huì)出現(xiàn)HAL_Delay(xx)不能再使用,所以直接用上述方式也不可取。那么,究竟該如何正確地的關(guān)閉和開啟Sy
    發(fā)表于 12-03 09:09

    HAL庫常用函數(shù)匯總

    1,系統(tǒng)函數(shù)HAL_Delay原型:voidHAL_Delay(uint32_tDelay);作用:利用滴答定時(shí)器生成的系統(tǒng)延遲函數(shù)參數(shù):Delay:延遲時(shí)間,單位是ms返回值:無示例代碼
    的頭像 發(fā)表于 11-29 08:00 ?3164次閱讀
    <b class='flag-5'>HAL</b>庫常用函數(shù)匯總

    伺服電機(jī)常見故障維修及注意事項(xiàng)

    伺服電機(jī)常見故障維修及注意事項(xiàng)
    的頭像 發(fā)表于 11-28 13:29 ?2145次閱讀