查看: 3695|回复: 0

40Mhz_RCC_SysClk_Init初始化跑飞

[复制链接]

6

主题

13

帖子

98

积分

中级工程师

Rank: 2

积分
98
发表于 2020-4-2 21:29:18 | 显示全部楼层 |阅读模式
void Init_PLL(void)
{
    RCC_PLL_InitTypeDef PLL_InitStruct;
   
    PLL_InitStruct.PLLDB = 609;    //pll倍频数 = PLLDB + 1
    PLL_InitStruct.PLLINSEL = RCC_PLLCON_PLLINSEL_RCLP;//RCC_PLLCON_PLLINSEL_XTLF;    //PLL时钟源选择XTLF
    PLL_InitStruct.PLLOSEL = RCC_PLLCON_PLLOSEL_MUL2;    //默认选择1倍输出,当超出PLLDB的1023时,可使用2倍输出实现更高的倍频
    PLL_InitStruct.PLLEN = ENABLE;    //默认关闭PLL
   
    RCC_PLL_Init(&PLL_InitStruct);
    RCC_PLLCON_PLLEN_Setable(ENABLE);//关闭PLL
}

//系统时钟配置
//使用RCHF做主时钟,define_all.h 中SYSCLKdef宏控制系统时钟频率
void Init_SysClk(void)
{
    RCC_RCHF_InitTypeDef RCHF_InitStruct;
    RCC_SYSCLK_InitTypeDef SYSCLK_InitStruct;
   
    RCHF_InitStruct.FSEL = SYSCLKdef;//define_all.h 中SYSCLKdef宏控制系统时钟频率
    RCHF_InitStruct.RCHFEN = ENABLE;//打开RCHF
   
    RCC_RCHF_Init(&RCHF_InitStruct);
   
    SYSCLK_InitStruct.SYSCLKSEL = RCC_SYSCLKSEL_SYSCLKSEL_PLL;//RCC_SYSCLKSEL_SYSCLKSEL_RCHF;    //选择RCHF做主时钟
    SYSCLK_InitStruct.AHBPRES = RCC_SYSCLKSEL_AHBPRES_DIV1;        //AHB不分频
    SYSCLK_InitStruct.APBPRES = RCC_SYSCLKSEL_APBPRES_DIV1;        //APB不分频
    SYSCLK_InitStruct.EXTICKSEL = RCC_SYSCLKSEL_EXTICKSEL_AHBCLK;    //EXTI,数字滤波时钟使用AHB时钟
    SYSCLK_InitStruct.SLP_ENEXTI = ENABLE;//休眠模式使能外部中断采样
    SYSCLK_InitStruct.LPM_RCLP_OFF = DISABLE;//休眠模式下开启RCLP   
   
    RCC_SysClk_Init(&SYSCLK_InitStruct);
        
        
      
}
运行到RCC_SysClk_Init时程序跑飞,关键问题是前几天这个程序多次运行一直都很正常,今天再次使用时就跑飞了,请教一下问题出在哪里?


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表