延迟如何在stm32l152RC上运行?

时间:2017-01-25 20:34:33

标签: c stm32 stm32ldiscovery

我刚买了一台stm32l152RC,想知道延迟是怎么回事。 系统时钟为16Mhz。

代码:

>>> import msgpack
>>> msgpack.loads(msgpack.dumps({'1': 12, False: 3, 2: 8}))
{False: 3, 2: 8, '1': 12}

当我在这种情况下执行static volatile uint32_t TimingDelay; void Delay(__IO uint32_t nCount); int main(void) { Config_Systick(); char *RCCp = (char*) 0x40023800; int *PBp = (int *) 0x40020400; // RCC Config *((int*) (RCCp + 28)) |= 0x3f; *((int*) (RCCp + 32)) |= 1; *PBp = 0x5000; while (1) { GPIO_TOGGLE(GPIOB, LD_GREEN); //toggle green led Delay(1000); // 1 second? } } // end of main RCC_ClocksTypeDef RCC_Clocks; void Config_Systick() { RCC_GetClocksFreq(&RCC_Clocks); SysTick_Config(RCC_Clocks.HCLK_Frequency / 1000); // setting changed to / 1000 } void TimingDelay_Decrement(void) { if (TimingDelay != 0x00) { TimingDelay--; } } void Delay(uint32_t nTime) { TimingDelay = nTime; while (TimingDelay != 0) { }; } 延迟是1秒时,有人可以解释为什么延迟是1秒?

1 个答案:

答案 0 :(得分:2)

在做了一些研究之后,这就是我想出的答案。 做SysTick_Config(RCC_Clocks.HCLK_Frequency / 1000);意味着你每秒设置1000个滴答。当你做Delay(100)时,延迟将是100毫秒。