STM32L052时钟问题
本人使用STM32L052K8T6时出现采用全速运行时(32M)移植的延时程序无问题,当降低频率时,会出现延时卡死的问题,对比全速和非全速时时钟的配置,经过试验发现全速时生成的配置文件中初始化的是FLASH_LATENCY_1,而非全速时初始化的是FLASH_LATENCY_0,当我在非全速运行时(16M)将FLASH_LATENCY_0改为FLASH_LATENCY_1时,程序刚开始能运行,快运行1分钟时,单片机死机,不明白FLASH_LATENCY_1是配置的啥,如何改才能使非全速时也能用延时,延时函数肯定没问题的
延时函数的初始化代码如下
void delay_init()
{
/**Configure the Systick interrupt time
*/
// HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);
/**Configure the Systick
*/
HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK_DIV8);//ÄÚ²¿Ê±ÖÓ
/* SysTick_IRQn interrupt configuration */
// HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
fac_us=2; //ΪϵͳʱÖÓµÄ
fac_ms=(uint16_t)fac_us*1000; //·ÇOSÏÂ,´ú±íÿ¸ömsÐèÒªµÄsystickʱÖÓÊý
}
用的事滴答定时器,有点像HAL_Delay(),具体你要自己写的延时函数,建议参考下正点原子哥写的, 这就是参考的,就是时钟和正点原子的不一样,所以延时函数的初始化我自己改完的,在32M的时候是正常的,在16M的时候就不行了, 楼主,为什么要把这两句代码屏蔽掉呢?
// HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);
/* SysTick_IRQn interrupt configuration */
// HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
页:
[1]