標題: HC32F460單片機 嘀嗒延時問題 [打印本頁]

作者: zeroL    時間: 2024-5-8 14:31
標題: HC32F460單片機 嘀嗒延時問題
使用庫3.2.0時,自己的延時函數(shù)會造成芯片跑飛,串口漏打印。我測試以前庫1.21時,發(fā)現(xiàn)沒問題,具體原因不知道為什么。庫2.2.0也會造成這樣的問題。下面給出了嘀嗒延時初始化和毫秒延時函數(shù),我在STM32F1的HAL庫使用也沒問題。
void delay_init(void)

{

    SysTick->LOAD = (uint32_t)(SystemCoreClock / 1000); // 設置重裝載值1ms

    NVIC_SetPriority(SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); // 設置中斷

    SysTick->VAL = 0UL; // 計數(shù)值清零

    SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |

                    SysTick_CTRL_TICKINT_Msk |

                    SysTick_CTRL_ENABLE_Msk; // 選擇系統(tǒng)時鐘,使能中斷、時鐘
}

void delay_ms(uint32_t u32Cnt)
{
    uint32_t ticks;
    uint32_t told, tnow, tcnt = 0;
    uint32_t reload = SysTick->LOAD; // 讀取重裝載值

    ticks = u32Cnt * (SystemCoreClock / 1000); // 轉(zhuǎn)換成1ms基本單位的節(jié)拍
    told = SysTick->VAL;
    while (1)
    {
        tnow = SysTick->VAL;
        if (tnow != told)
        {

            if (tnow < told)
                tcnt += told - tnow;
            else
                tcnt += reload - tnow + told;
            told = tnow;
            if(tcnt >1000000)
              {
                continue;
              }
            if (tcnt >= ticks)
                break;
        }
    }
}

作者: lkc8210    時間: 2024-5-8 15:50
阻塞式延時,能少用就不用
作者: Hephaestus    時間: 2024-5-8 20:51
問題出在別的地方,這里沒問題。
作者: zeroL    時間: 2024-5-9 17:06
Hephaestus 發(fā)表于 2024-5-8 20:51
問題出在別的地方,這里沒問題。

那應該是官方庫哪里影響了,我用官方的延時函數(shù)DDL_DelayMS這個就沒問題。
作者: zeroL    時間: 2024-5-9 17:06
lkc8210 發(fā)表于 2024-5-8 15:50
阻塞式延時,能少用就不用

想學習這樣的案例,老哥有沒有例子讓我參考參考呀!




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