STM32吧,没见到你初始化时钟函数,加上试试,除了COPY代码,认真看下编程手册,了解工作机制。MCU三要素,电源,复位,时钟。
void RCC_Configuration(void)
{
ErrorStatus HSEStartUpStatus; /* 定义枚举类型变量 */
RCC_DeInit(); /* 复位系统时钟设置*/
RCC_HSEConfig(RCC_HSE_ON); /* 开启HSE*/
HSEStartUpStatus = RCC_WaitForHSEStartUp(); /* 等待HSE起振并稳定*/
if(HSEStartUpStatus == SUCCESS) /* 判断HSE起是否振成功,是则进入if()内部 */
{
RCC_HCLKConfig(RCC_SYSCLK_Div1); /* 选择HCLK(AHB)时钟源为SYSCLK 1分频 */
RCC_PCLK2Config(RCC_HCLK_Div1); /* 选择PCLK2时钟源为 HCLK(AHB) 1分频 */
RCC_PCLK1Config(RCC_HCLK_Div2); /* 选择PCLK1时钟源为 HCLK(AHB) 2分频 */
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); /* 使能FLASH预取缓存 */
FLASH_SetLatency(FLASH_Latency_2); /* 设置FLASH延时周期数为2 */
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); /* 选择锁相环(PLL)时钟源为HSE 1分频,倍频数为9,则PLL输出频率为 8MHz * 9 = 72MHz */
RCC_PLLCmd(ENABLE); /* 使能PLL */
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) /* 等待PLL输出稳定 */
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); /* 选择SYSCLK时钟源为PLL */
while(RCC_GetSYSCLKSource() != 0x08); /* 等待PLL成为SYSCLK时钟源 */
}
/**************************************************************************************************
* 打开外设时钟 GPIOA,B,C,D,E
***************************************************************************************************/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA
| RCC_APB2Periph_GPIOB
| RCC_APB2Periph_GPIOC
| RCC_APB2Periph_GPIOD
| RCC_APB2Periph_GPIOE
| RCC_APB2Periph_AFIO, ENABLE);
}