国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

SysTick與HAL_Delay的關系與注意事項

CHANBAEK ? 來源:頭條號秋天滴風 ? 作者:頭條號秋天滴風 ? 2023-04-21 11:32 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

SysTick與HAL_Delay的關系與注意事項

本文將介紹SysTick與HAL_Delay()函數之間的關系,以及使用HAL_Delay()函數的注意事項;

一.HAL_Delay()函數實現的原理、與SysTick的關系

下面我們先看一下HAL_Delay函數的源碼

__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)
  {
  }
}

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

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

__weak uint32_t HAL_GetTick(void)
{
return uwTick;
}

接著追一下uwTick ,發現在下面這個函數中對它的值進行了操作:

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

接著追一下uwTickFreq 發現uwTickFreq = 1,接著追一下HAL_IncTick(void)函數:

發現HAL_IncTick(void)函數是在SysTick的中斷回調函數內調用的;

綜上可知HAL_Delay與SysTick的關系:HAL_Delay函數的執行、最終是依賴于SysTick的每觸發一次SysTick的中斷耗時1ms,HAL_GetTick()-tickstart會增大1、知道差值等于HAL_Delay的傳入參數。

二、由SysTick與HAL_Delay之間的關系可知,我們在使用HAL_Delay的時候需要注意:當在中斷中使用了HAL_Delay函數,則該中斷的搶占優先級必須低于SysTick中斷的優先級,否則會導致SysTick中斷不能搶占該中斷函數、最終導致HAL_GetTick()-tickstart的值不會變,從而陷入死循環中。

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

    關注

    5

    文章

    913

    瀏覽量

    43598
  • 源碼
    +關注

    關注

    8

    文章

    682

    瀏覽量

    31141
  • 函數
    +關注

    關注

    3

    文章

    4409

    瀏覽量

    66975
  • Systick
    +關注

    關注

    0

    文章

    67

    瀏覽量

    13894
  • HAL
    HAL
    +關注

    關注

    2

    文章

    73

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    迅為RK3588開發板Android系統燒寫及注意事項

    迅為RK3588開發板Android系統燒寫及注意事項
    的頭像 發表于 12-03 15:17 ?6716次閱讀
    迅為RK3588開發板Android系統燒寫及<b class='flag-5'>注意事項</b>

    驅動板PCB布線的注意事項

    PCB Layout 注意事項 1)布局注意事項: ●● 整體布局遵循功率回路與小信號控制回路分開布局原則,功率部分和控制部分的 GND 分開回流到輸入 GND。 ●● 芯片的放置方向優先考慮驅動
    發表于 12-02 07:40

    CW32F030在使用中的注意事項有哪些?

    CW32F030在使用中的注意事項有哪些?
    發表于 11-18 06:20

    在rtthread的main函數里用HAL_Delay函數不起作用是哪里的問題?

    在rtthread的main函數里用HAL_Delay函數無效,我設置延時500ms打印一次,但是實際上,一秒打印了幾百次,很顯然是HAL_Delay出現了問題。用RT_thread_mdelay
    發表于 09-15 07:53

    emWin AppWizard 開發注意事項有哪些?

    emWin AppWizard 開發注意事項
    發表于 09-04 06:18

    美國Odyssey奧德賽電池充電注意事項全解析

    Odyssey奧德賽電池充電注意事項全解析 奧德賽電池作為高性能的深循環鉛酸電池,廣泛應用于汽車啟動、摩托車、船舶以及備用電源系統中。正確的充電方法不僅能夠延長電池壽命,還能保障其性能穩定發揮
    的頭像 發表于 05-19 16:31 ?930次閱讀
    美國Odyssey奧德賽電池充電<b class='flag-5'>注意事項</b>全解析

    IGBT器件的防靜電注意事項

    IGBT作為功率半導體器件,對靜電極為敏感。我將從其靜電敏感性原理入手,詳細闡述使用過程中防靜電的具體注意事項與防護措施,確保其安全穩定運行。
    的頭像 發表于 05-15 14:55 ?1311次閱讀

    掃描電鏡的日常維護有哪些注意事項?

    掃描電鏡日常維護的注意事項。
    的頭像 發表于 03-24 11:38 ?954次閱讀
    掃描電鏡的日常維護有哪些<b class='flag-5'>注意事項</b>?

    STM32C031C6在按鍵中斷處理程序中使用HAL_Delay()延時函數,程序則無法運行怎么解決?

    測試STM32C031C6開發板的長短按鍵,在按鍵中斷處理程序中使用HAL_Delay()延時函數,程序則無法運行,類似進入了死循環,于是則添加了延時函數如下: /[i
    發表于 03-07 06:50

    iW1710驅動設計方案與PCB布線注意事項

    iW1710驅動設計方案與PCB布線注意事項
    發表于 02-17 14:19 ?0次下載

    驅動板設計注意事項

    設計驅動板時我們需要考慮電路原理與元器件選擇、PCB設計、熱管理、電磁兼容性(EMC)、其他注意事項。以下是關于相關內容的詳細介紹,讓我們一起來簡單的了解一下吧!
    的頭像 發表于 02-12 13:48 ?1093次閱讀

    GD32單片機GPIO結構及注意事項

    電子發燒友網站提供《GD32單片機GPIO結構及注意事項.pdf》資料免費下載
    發表于 02-07 17:27 ?3次下載
    GD32單片機GPIO結構及<b class='flag-5'>注意事項</b>

    智多晶DDR Controller使用注意事項

    最后一期我們主要介紹智多晶DDR Controller使用時的注意事項
    的頭像 發表于 01-24 11:14 ?1406次閱讀
    智多晶DDR Controller使用<b class='flag-5'>注意事項</b>

    AN20-儀表低通濾波器的應用注意事項

    電子發燒友網站提供《AN20-儀表低通濾波器的應用注意事項.pdf》資料免費下載
    發表于 01-12 11:25 ?0次下載
    AN20-儀表低通濾波器的應用<b class='flag-5'>注意事項</b>

    多層板埋孔設計注意事項

    多層板埋孔設計注意事項
    的頭像 發表于 12-20 16:06 ?1273次閱讀