我想在程序里添加一个延时函数进行时序的调整,但是,一运行到delay就死掉了,就运行到: while(TimingDelay != 0); 就不动了,我看了看其他的程序,也是这样写的。 如果要用这个函数还要初始化哪些? 在初始化时我没有用PLL,直接用的8M晶振。 请教高手。 谢谢。 以下是delay函数。 void Delay(u32 nCount) { TimingDelay = nCount;
/* Enable the SysTick Counter */ SysTick_CounterCmd(SysTick_Counter_Enable); while(TimingDelay != 0) { }
/* Disable the SysTick Counter */ SysTick_CounterCmd(SysTick_Counter_Disable);
/* Clear the SysTick Counter */ SysTick_CounterCmd(SysTick_Counter_Clear); }
以下是我RCC初始化函数。
void RCC_Configuration(void) { /* RCC system reset(for debug purpose) */ RCC_DeInit();
/* Enable HSE */ RCC_HSEConfig(RCC_HSE_ON);
/* Wait till HSE is ready */ HSEStartUpStatus = RCC_WaitForHSEStartUp();
if(HSEStartUpStatus == SUCCESS) { /* HCLK = SYSCLK */ RCC_HCLKConfig(RCC_SYSCLK_Div1); /* PCLK2 = HCLK */ RCC_PCLK2Config(RCC_HCLK_Div1);
/* PCLK1 = HCLK */ RCC_PCLK1Config(RCC_HCLK_Div1);
/* Flash 2 wait state */ FLASH_SetLatency(FLASH_Latency_2); /* Enable Prefetch Buffer */ FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); /* Select HSE as system clock source */ RCC_SYSCLKConfig(RCC_SYSCLKSource_HSE);
/* Wait till HSE is used as system clock source */ while(RCC_GetSYSCLKSource() != 0x04) { } } /* Enable USART1 and GPIOB clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
} |