找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 809|回復: 1
打印 上一主題 下一主題
收起左側

32f407單片機滴答定時器精準延時,延時0ms

[復制鏈接]
跳轉到指定樓層
樓主
ID:1140540 發(fā)表于 2024-12-19 21:48 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
32f407單片機滴答定時器精準延時,延時0ms,寫進去后,芯片一通電就發(fā)熱,熱到一定程度就崩潰了,復位也沒用,

int main()
{
Delay_ms(0);
GPIO_ToggleBits(GPIOF,GPIO_Pin_10);
}

void Delay_ms(uint32_t nTime)
{
       uint_t delay_ms=21000;
       SysTick->LOAD = nTime*delay_ms ;   //重裝載寄存器,最大計數值
        SysTick->VAL = 0x00        ;                                //清空計數值
        SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk ; // 開啟倒數
        
        do
        {
                temp=SysTick->CTRL;
               
        }while((temp&0x01)&& !(temp & (1<<16))); //等待倒數到0為止
        
        SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk ; // 關閉計數器
        SysTick->VAL = 0x00        ;        //清空計數值
        
}



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:583948 發(fā)表于 2024-12-20 09:23 | 只看該作者
int main() {
    // 假設你不需要延時
    GPIO_ToggleBits(GPIOF, GPIO_Pin_10);
    while (1) {
        // 主循環(huán)
    }
}

void Delay_ms(uint32_t nTime) {
    if (nTime == 0) return; // 直接返回,不執(zhí)行任何延時

    uint32_t delay_ms = 21000; // 確保這個值適合你的系統(tǒng)時鐘
    SysTick->LOAD = nTime * delay_ms;   // 重裝載寄存器
    SysTick->VAL = 0x00;               // 清空計數值
    SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; // 開啟倒數

    // 等待SysTick計數器達到零
    while ((SysTick->CTRL & SysTick_CTRL_ENABLE_Msk) && !(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk));

    SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; // 關閉計數器
    SysTick->VAL = 0x00;                       // 清空計數值
}
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表