0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

无外部高速时钟时HSE_RDY被意外置位问题

STM32单片机 作者:佚名 2017-08-29 17:17 次阅读

前言

问题由客户提出,用户发现在STM32F103器件上。用户在产品中使能了IWDG,在使用过程中发现当MCU被复位后,有时程序跑不下去;跟踪代码发现程序死在轮询PLL_RDY处。用户反馈说用的就是ST库中的范例代码,怀疑STM32F103有设计问题 。

调研

排查硬件供电无问题,用示波器测量NRST发现复位信号正常,用STM32CubeMX生成最小系统代码(时钟配置+IWDG)反复验证,未发现此问题,开始怀疑用户代码。

客户声称开发是基于ST提供的SPL库中自带的demo,使用SPL中的范例代码加上IWDG复位,确实可以复现此问题:通过调试器跟踪代码发现问题发生时HSE_RDY位被异常置位(用户平台无外挂高速时钟源)。

通过分析代码,发现SPL库【标准外设固件库】在配置时钟时先会直接使能HSE,并对HSE_RDY位进行检测。在复位MCU若干次后HSE_RDY可能位会被置位,从而导致时钟配置程序按照基于HSE的状态来进行接下来的配置。而SPL中的demo是跑在STM32F1评估板上,而评估板外带高速时钟源,故没有此问题。

结论

在MCU复位后,HSE_ON虽默认无效,但反复对其进行使能操作会导致MCU内部的噪声积累,造成时钟检测电路误判,并从寄存器反映出来。

- 对STM32F103来说,一旦HSE_RDY被置位,只要不断电,无论怎样复位MCU,HSE_RDY都不会被清除(即使失能HSE_ON) 。

- 对STM32F030单片机进行类似操作,也会发现同样问题。不同之处在于在HSE_RDY被置位后复位MCU,HSE_RDY位会被清除,但是一旦HSE_ON被置位,HSE_RDY同样可能会出现被置位问题 。

处理

由于用户不使用外部HSE,即并不需要对是否有外接高速晶振进行判断,故修改用户代码不再使能HSE。反复测试后问题不复现 。

建议

1 、要了解HSE_RDY位是用来检测是否有外部时钟存在的必要条件,而非充分条件。

2、使用STM32时,尽量按照实际设计对软件做出相应修改,切勿图省事而带来问题。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6032

    文章

    44522

    浏览量

    633171

原文标题:无外部高速时钟时HSE_RDY被意外置位

文章出处:【微信号:STM32_STM8_MCU,微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    刷直流电机......》3.3 时钟配置 3.3.1 STM8S时钟

    HSE时钟信号将不会生效直至此标志硬件置HSE晶体可通过设置
    发表于 01-20 16:04

    STM32F4 HSE时钟频率HSE

    我正在使用没有外部HSE时钟的STM32F446ZE Nucleo板。从CubeMX开始,我设置了HSE时钟输入,在
    发表于 09-13 15:06

    为什么不用外部HSE时钟

    Stm32_Clock_Init()函数中有一句RCC->CFGR=0x00000400;我查了RCC->CFGR寄存器说明,用的是HSI作为系统时钟,但为什么不用外部HSE时钟呢?之
    发表于 06-27 04:35

    外部晶体/陶瓷谐振器(HSE晶体)模式

    ,直到这一硬件置’1’,时钟释放出来。HSE晶体可以通过设置时钟控制寄存器里RCC_CR
    发表于 08-10 08:18

    外部高速时钟HSE)以及外部低速时钟(LSE)

    1.新建stm32工程用mx图形界面配置好将要用的串口,内部外部时钟,本例使用了外部高速时钟HSE
    发表于 08-10 07:18

    STM32F103外部时钟HSE

    1)外部时钟HSE:通常的配置是: HSE=8M, PLL 的倍频因子为: 9,系统时钟就设置成:SYSCLK = 8M * 9 = 72M
    发表于 08-11 07:34

    STM32 F103 RCC 使用HSE配置时钟 精选资料分享

    STM32F10x中文参考手册 RCC设置寄存器H锁相环PLL使能、就绪标志外部高速时钟HSE使能、就绪标志
    发表于 08-12 07:16

    STM32时钟HSE时钟

    的指南者使用8M的源晶振作为HSE时钟的输入。HSIHigh Speed Internal Clock signal 高速内部时钟
    发表于 08-12 06:10

    主系统时钟介绍

    External Clock signal)时钟高速外部时钟产生:源晶振加两个电容辅助起振(4~16M),一般选用8M作用:一般选用都
    发表于 08-12 07:17

    HSE时钟

    HSE时钟高速外部时钟在STM32103一般使用8MHzRRC_CR时钟控制寄存器LSE
    发表于 08-12 06:11

    HSE时钟概述

    HSE外部高速)振荡器时钟、PLL(锁相环)时钟。另外:40kHz低速内部RC,可以用于驱动独立看门狗和通过程序选择驱动RTC。RTC用
    发表于 08-18 07:47

    STM32f103的时钟有四个来源高速外部时钟信号

    STM32f103的时钟有四个来源高速外部时钟信号(HSE)、低速外部
    发表于 08-18 06:01

    使用HSE配置系统时钟的过程

    使用HSE配置系统时钟的过程开启HSE,并等待HSE稳定__IO uint32_t HSEStartUpStatus = 0;// 使能HSE
    发表于 12-10 06:55

    CH32V103基础教程103-RCC—HSE/HSI时钟配置

    RC 振荡器能够在不需要任何外部器件的条件下提供系统时钟。它的启动时间很短但时钟频率精度较差。HSI 通过设置 RCC_CTLR 寄存器中的 HSION
    发表于 05-15 16:43

    如何微调MCU的HSE晶体振荡器频率?

    时钟是MCU的运行基调,也是MCU的一个重要指标。MCU一般有四种时钟高速外部时钟HSE)、
    发表于 11-18 14:07 1649次阅读
    如何微调MCU的<b class='flag-5'>HSE</b>晶体振荡器频率?