0

我无法为 STM32F103C8(蓝色药丸)生成特定时间。显然,AHB 主时钟设置为 72 MHz。但是,无论 SysTick 时钟源是 AHB 还是 AHB/8,时间总是要长 10 倍。 时钟配置

void    delay(){
SysTick->LOAD = 7199999;
SysTick->CTRL = 0x05;
while((SysTick->CTRL&(1<<16)) == 0);
SysTick->CTRL = 0x00;}

此延迟应为 0.1 秒。但它总是在 1 秒内起作用。其他值也高出10倍,不管CLKSOURCE是AHB还是AHB/8。如果有人可以提供帮助,我将不胜感激。

4

1 回答 1

0

以下是我如何使用 Systick 计时器:

    void delaySysTicks(uint32_t msDelay) {
        for(uint32_t c = 0; c < msDelay; c++) {
            SysTick->CTRL = 0x0;            // disable systick
    
            SysTick->LOAD = (SystemCoreClock / 1000U);      // count down reload - 1ms
            SysTick->VAL = 0;
    
            SysTick->CTRL |= SysTick_CTRL_CLKSOURCE_Msk;
            SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
    
            while(!(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk));   // wait for timer rollover
        }
    }

delaySysTicks(1000); // busy wait 1 second
于 2021-08-22T20:24:20.803 回答