楼主用的是
STM32f102C8这块芯片,根据手册上说最大工作频率为48MHz 楼主的板子外接高速晶振为16MHz,所以进行PLL的3倍频处理到48MHzvoid rcc_cfg(void)
{
//开启外部高速时钟
RCC_HSEConfig(RCC_HSE_ON);
HSEstatus = RCC_WaitForHSEStartUp();
if(HSEstatus == SUCCESS)//外部高速时钟开启成功
{
//配置先进时钟源为系统时钟
RCC_HCLKConfig(RCC_SYSCLK_Div1);
//配置APB2为HCLK
RCC_PCLK2Config(RCC_HCLK_Div1);
//配置APB1为HCLK/2
RCC_PCLK1Config(RCC_HCLK_Div2);
//配置FLASH延时
FLASH_SetLatency(FLASH_Latency_1);
//配置FLASH使能缓冲
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
//配置PLL时钟源为外部HSE,倍频3
RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_3);
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) != SET);
//配置系统时钟源为PLL输出时钟
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
//等待系统时钟源是PLL时钟
while(RCC_GetSYSCLKSource() != 0x08);
}
//开启端口时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
}
然后配置Sys
tick的时钟源
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);//设置滴答定时器的时钟为系统时钟频率48MHz
设置重装数值1us
if (SysTick_Config(48))//配置滴答定时器,延时一微秒
{
while (1);
}
然后再程序中使用Delay(650),想要延时理论650us,但是通过示波器测得只有330us
请问打什么这是为啥啊
0