延迟如何在stm32l152RC上工作?
我刚买了一台stm32l152RC,想知道延迟是如何工作的。 系统时钟为16Mhz 代码:延迟如何在stm32l152RC上工作?,c,stm32,stm32ldiscovery,C,Stm32,Stm32ldiscovery,我刚买了一台stm32l152RC,想知道延迟是如何工作的。 系统时钟为16Mhz 代码: 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
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) {
};
}
当我执行
延迟时(1000)代码>在这种情况下,延迟是1秒,有人能解释一下为什么延迟是1秒吗?在做了一些研究后,这就是我得出的答案。
执行SysTick\u配置(RCC\u Clocks.HCLK\u Frequency/1000)代码>表示您正在设置每秒1000个滴答声。当你做延迟(100)
时,延迟将是100毫秒。在做了一些研究之后,这就是我得出的答案。
执行SysTick\u配置(RCC\u Clocks.HCLK\u Frequency/1000)代码>表示您正在设置每秒1000个滴答声。当您执行延迟(100)
时,延迟将为100毫秒。@Olaf谢谢您的回答,我确实读过了。@Olaf谢谢您的回答,我确实读过了。