你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32L052时钟问题

[复制链接]
hsyhsy571639119 提问时间:2019-3-27 18:31 /
本人使用STM32L052K8T6时出现采用全速运行时(32M)移植的延时程序无问题,当降低频率时,会出现延时卡死的问题,对比全速和非全速时时钟的配置,经过试验发现全速时生成的配置文件中初始化的是FLASH_LATENCY_1,而非全速时初始化的是FLASH_LATENCY_0, 1.png TIM截图20190327182826.png
当我在非全速运行时(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ʱÖÓÊý   
}

收藏 评论3 发布时间:2019-3-27 18:31

举报

3个回答
五哥1 回答时间:2019-3-27 19:13:04
用的事滴答定时器,有点像HAL_Delay(),具体你要自己写的延时函数,建议参考下正点原子哥写的,

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

hsyhsy571639119 回答时间:2019-3-28 09:05:16
这就是参考的,就是时钟和正点原子的不一样,所以延时函数的初始化我自己改完的,在32M的时候是正常的,在16M的时候就不行了,
废鱼 回答时间:2019-3-28 10:03:02
楼主,为什么要把这两句代码屏蔽掉呢?
// HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);

  /* SysTick_IRQn interrupt configuration */
// HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版