<strong id="0toem"><dl id="0toem"></dl></strong><b id="0toem"><menuitem id="0toem"></menuitem></b>

      <b id="0toem"><menuitem id="0toem"></menuitem></b>
    1. <code id="0toem"><abbr id="0toem"></abbr></code>
      <strong id="0toem"><dl id="0toem"></dl></strong>
      <kbd id="0toem"></kbd>
              1. <code id="0toem"></code>
                <th id="0toem"><progress id="0toem"></progress></th><strong id="0toem"><form id="0toem"></form></strong>

                <th id="0toem"></th>
              2. 131 1300 0010
                其他
                當(dāng)前位置: 首頁(yè)>> 元件技術(shù)>>其他>>
              3. 導(dǎo)航欄目
              4. 二極管
              5. 整流橋
              6. MOS管
              7. 其他
              8. STM32單片機(jī)使用定時(shí)器中斷方式實(shí)現(xiàn)毫秒級(jí)延時(shí)的
                STM32單片機(jī)使用定時(shí)器中斷方式實(shí)現(xiàn)毫秒級(jí)延時(shí)的
              9. STM32單片機(jī)使用定時(shí)器中斷方式實(shí)現(xiàn)毫秒級(jí)延時(shí)的
              10.   發(fā)布日期: 2019-06-04  瀏覽次數(shù): 2,124

                因?yàn)?u>STM32 HAL庫(kù)中僅有對(duì)HAl_Delay()毫秒級(jí)的延時(shí),為實(shí)現(xiàn)精確的微秒級(jí)延時(shí),就不得不修改Systick,但由于HAL庫(kù)內(nèi)部使用其作為超時(shí)判斷等操作,對(duì)其修改會(huì)發(fā)生不可預(yù)期的錯(cuò)誤,不建議修改。因此,使用通用定時(shí)器進(jìn)行定時(shí)操作。

                STM32單片機(jī)使用定時(shí)器中斷方式實(shí)現(xiàn)毫秒級(jí)延時(shí)的設(shè)計(jì)

                 

                參考網(wǎng)上例程,使用定時(shí)器中斷方式實(shí)現(xiàn)延時(shí),代碼如下:

                TIM3溢出時(shí)間=72MHz/(71+1)/(0+1)=1Mhz=1us

                計(jì)數(shù)模式:向上計(jì)數(shù)模式

                使能TIM3中斷

                */

                __IO staTIc uint32_t usDelay=0;

                void Delayms(uint32_t ms)

                {

                Delayus(ms*1000);

                }

                void Delayus(uint32_t us)

                {

                usDelay=us;

                HAL_TIM_Base_Start_IT(&htim3);

                while(usDelay);

                HAL_TIM_Base_Stop_IT(&htim3);

                }

                //重寫回調(diào)函數(shù)

                void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)

                {

                if(htim-》Instance == TIM3)

                {

                if(usDelay!=0)

                {

                usDelay--;

                }

                }

                }

                雖然說(shuō)以上程序的并沒(méi)什么錯(cuò)誤,但在實(shí)際運(yùn)行中,卻無(wú)法得到正確的運(yùn)行。同時(shí),在進(jìn)行Debug調(diào)試時(shí),單步執(zhí)行又可以正常運(yùn)行。

                主要原因在于:中斷間隔時(shí)間太短,導(dǎo)致中斷函數(shù)還沒(méi)有運(yùn)行完成,其中斷標(biāo)志位卻再次置位,導(dǎo)致在程序卡死。

                因此,關(guān)閉定時(shí)器中斷,采用定時(shí)器輪詢的方式實(shí)現(xiàn)延時(shí),代碼如下:

                /*

                TIM3溢出時(shí)間=72MHz/(71+1)/(0+1)=1Mhz=1us

                計(jì)數(shù)模式:向下計(jì)數(shù)模式

                */

                void Delay_us(uint32_t us){

                uint16_t counter=us&0xffff;

                HAL_TIM_Base_Start(&htim3);

                __HAL_TIM_SetCounter(&htim3,counter);

                while(counter》1)

                {

                counter=__HAL_TIM_GetCounter(&htim3);

                }

                HAL_TIM_Base_Stop(&htim3);

                }

                void Delay_ms(uint32_t ms){

                Delay_us(1000*ms);

                }


              11. ·上一篇:
                ·下一篇:
              12. 其他關(guān)聯(lián)資訊
                深圳市日月辰科技有限公司
                地址:深圳市寶安區(qū)松崗鎮(zhèn)潭頭第二工業(yè)城A區(qū)27棟3樓
                電話:0755-2955 6626
                傳真:0755-2978 1585
                手機(jī):131 1300 0010
                郵箱:[email protected]

                深圳市日月辰科技有限公司 版權(quán)所有:Copyright?2010-2023 www.xydibang.com 電話:13113000010 粵ICP備2021111333號(hào)
                <strong id="0toem"><dl id="0toem"></dl></strong><b id="0toem"><menuitem id="0toem"></menuitem></b>

                    <b id="0toem"><menuitem id="0toem"></menuitem></b>
                  1. <code id="0toem"><abbr id="0toem"></abbr></code>
                    <strong id="0toem"><dl id="0toem"></dl></strong>
                    <kbd id="0toem"></kbd>
                            1. <code id="0toem"></code>
                              <th id="0toem"><progress id="0toem"></progress></th><strong id="0toem"><form id="0toem"></form></strong>

                              <th id="0toem"></th>
                            2. 亚洲A V观看 | 国产免费观看高清完整版亚洲日本 | 天天日天天操天天干青青草超碰av | 日本精品视频在线播放 | 激情无码一区 |