標(biāo)題: 32f407單片機(jī)滴答定時(shí)器精準(zhǔn)延時(shí),延時(shí)0ms [打印本頁]

作者: luzhenwei    時(shí)間: 2024-12-19 21:48
標(biāo)題: 32f407單片機(jī)滴答定時(shí)器精準(zhǔn)延時(shí),延時(shí)0ms
32f407單片機(jī)滴答定時(shí)器精準(zhǔn)延時(shí),延時(shí)0ms,寫進(jìn)去后,芯片一通電就發(fā)熱,熱到一定程度就崩潰了,復(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 ;   //重裝載寄存器,最大計(jì)數(shù)值
        SysTick->VAL = 0x00        ;                                //清空計(jì)數(shù)值
        SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk ; // 開啟倒數(shù)
        
        do
        {
                temp=SysTick->CTRL;
               
        }while((temp&0x01)&& !(temp & (1<<16))); //等待倒數(shù)到0為止
        
        SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk ; // 關(guān)閉計(jì)數(shù)器
        SysTick->VAL = 0x00        ;        //清空計(jì)數(shù)值
        
}




作者: zpwgf    時(shí)間: 2024-12-20 09:23
int main() {
    // 假設(shè)你不需要延時(shí)
    GPIO_ToggleBits(GPIOF, GPIO_Pin_10);
    while (1) {
        // 主循環(huán)
    }
}

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

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

    // 等待SysTick計(jì)數(shù)器達(dá)到零
    while ((SysTick->CTRL & SysTick_CTRL_ENABLE_Msk) && !(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk));

    SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; // 關(guān)閉計(jì)數(shù)器
    SysTick->VAL = 0x00;                       // 清空計(jì)數(shù)值
}




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1