STM32Cube_FW_F4?RTC??????BUG

Similar documents
STM32F3??ADC??????????ADC

ST template WORD

ST template WORD

RTC

Microsoft Word - 三峽鎮衛生所_3_-張家宸.李永繁.doc

Microsoft Word - 武漢大學交流營心得_黃莉云_.doc

bingdian001.com

!"# $% & $%%% ( ")*+,-./00-(11.-. $%! $ " # $ % & ( - ) +%23!"# $%%% %,.%,!" $%.! 1.% & /$ 3(,. ( /0% $%%% ( $%%% ( 3 5 /6%%%! ")*+,-./00-(11

!! "!! "! "!! "! "! "!!#$% & ()*+, -./!000$ 1-2$##0! 3

商 业 城 大 华 标 准 70 万 70 万 驰 宏 锌 锗 瑞 华 标 准 140 万 150 万 亚 星 锚 链 江 苏 公 证 天 业 标 准 80 万 80

欢迎辞

金 陵 饭 店 中 兴 华 已 报 备 按 照 国 资 委 要 求 定 期 轮 换 天 衡 已 报 备 按 照 国 资 委 要 求 定 期 轮 换 *ST 中 富 中 喜 已 报 备 业 务 约 定 书 到 期 普

辉 丰 股 份 重 大 事 项, 特 停 南 方 轴 承 临 时 停 牌 德 力 股 份 临 时 停 牌 瑞 丰 光 电 临 时 停 牌 联 建 光 电 临 时 停 牌 卡 奴 迪 路 临 时 停 牌

日 涨 幅 偏 离 值 达 到 7% 的 前 五 只 证 券 : 温 氏 股 份 ( 代 码 ) 涨 幅 偏 离 值 :11.68% 成 交 量 :1752 万 股 成 交 金 额 : 万 元 机 构 专 用 机 构 专 用

上市公司股东大会投票信息公告( )

昆 明 机 床 瑞 华 已 报 备 前 任 服 务 年 限 较 长 毕 马 威 华 振 已 报 备 未 与 客 户 未 就 2015 年 审 计 收 费 达 成 一 致 意 见 中 国 核 电 天 健 已 报 备 定

金 利 科 技 临 时 停 牌 凤 凰 光 学 重 要 事 项 未 公 告, 连 续 停 牌 安 源 煤 业 重 要 事 项 未 公 告, 连 续 停 牌 万 泽 股 份 临 时 停 牌 爱 康 科 技 重 大 事 项, 特 停

郑 州 煤 电 重 要 事 项 未 公 告, 连 续 停 牌 金 圆 股 份 重 大 事 项, 特 停 永 鼎 股 份 重 要 事 项 未 公 告, 连 续 停 牌 长 城 影 视 临 时 停 牌 天 兴 仪 表 临 时 停 牌

卧 龙 地 产 重 要 事 项 未 公 告, 连 续 停 牌 春 兴 精 工 临 时 停 牌 *ST 沧 大 重 要 事 项 未 公 告, 连 续 停 牌 天 地 源 重 要 事 项 未 公 告, 连 续 停 牌 汇 冠 股 份

金 圆 股 份 重 大 事 项, 特 停 长 城 影 视 临 时 停 牌 天 兴 仪 表 临 时 停 牌 商 赢 环 球 重 要 事 项 未 公 告, 连 续 停 牌 荣 安 地 产 临 时 停 牌 中 南 文 化

Untitled Document

股票代码: 股票简称:*ST新梅 编号:临

东 华 能 源 江 苏 苏 亚 金 诚 已 报 备 因 地 域 及 审 计 时 间 安 排 等 原 因 中 兴 华 已 报 备 客 户 重 新 选 聘 会 计 师 事 务 所 亿 帆 鑫 富 立 信 已 报 备 客

光 一 科 技 重 大 事 项, 特 停 茂 业 商 业 重 要 事 项 未 公 告, 连 续 停 牌 浙 富 控 股 重 大 事 项, 特 停 键 桥 通 讯 重 大 事 项, 特 停 黑 牛 食 品 重 大 事 项, 特 停

证券代码:000776   股票简称:延边公路   编号:2003-00

<4D F736F F D A67EA4E9A5BBB1D0A87CAEC8A6E6B0D1B358B3F8A7692D2DA468AA4CB0AAB0D3>

目录

P4i45GL_GV-R50-CN.p65

第 一 节 认 识 自 我 的 意 义 一 个 人 只 有 认 识 自 我, 才 能 够 正 确 地 认 识 到 自 己 的 优 劣 势, 找 出 自 己 的 职 业 亮 点, 为 自 己 的 顺 利 求 职 推 波 助 澜 ; 一 个 人 只 有 认 识 自 我, 才 能 在 求 职 中 保 持

目 录 第 一 部 分 档 案 局 概 况 一 主 要 职 责 二 部 门 决 算 单 位 构 成 第 二 部 分 档 案 局 2016 年 度 部 门 预 算 表 一 2016 年 度 市 级 部 门 收 支 预 算 总 表 二 2016 年 度 市 级 部 门 支 出 预 算 表 三 2016

2015 年 度 收 入 支 出 决 算 总 表 单 位 名 称 : 北 京 市 朝 阳 区 卫 生 局 单 位 : 万 元 收 入 支 出 项 目 决 算 数 项 目 ( 按 功 能 分 类 ) 决 算 数 一 财 政 拨 款 一 一 般 公 共 服 务 支 出 二

江 西 : 失 信 被 执 行 人 曝 光 台 写 入 两 会 报 告 摘 要 1 月 27 日, 江 西 省 十 二 届 人 大 五 次 会 议 举 行 第 二 次 全 体 会 议, 江 西 省 高 级 人 民 法 院 院 长 张 忠 厚 向 大 会 作 江 西 省 高 级 人 民 法 院 工 作

形 式 审 查 不 通 过, 将 说 明 原 因 并 予 退 回, 不 予 重 新 修 改 提 交 ( 形 式 审 查 常 见 主 要 问 题 参 考 附 件 3) ( 三 ) 申 请 人 下 载 打 印 网 上 状 态 为 请 交 纸 质 材 料 至 窗 口 受 理 的 申 报 书, 报 送 项

撤 离 你 听 到 了 吗? 它 们 已 经 进 了 墙 里 边 了 那 些 金 属 的 撞 击 声 在 狂 风 之 中 很 难 听 清, 但 断 然 不 会 有 错 围 坐 在 桌 边 的 四 人 靠 得 更 紧 了 些, 并 不 是 因 为 害 怕, 而 是 为 了 取 暖 你 们 觉 得 呢?

<4D F736F F F696E74202D DA578C657B27BA6E6ABD8BF76B5B2BA63A475B57BAABABADEB27AA8EEABD7BB50A7EFB669ABD8C4B32DBDB2A7D3B4AD2E BACDBAE65BCD2A6A15D>

江门甘蔗化工厂(集团)股份有限公司2013年第三季度报告全文

untitled

ICD ICD ICD ICD ICD

P3C2000 JumperFree TM Camino

untitled

Tel: Fax: TTP-344M/246M /

ST template WORD

Microsoft Word - MAN2011A_CH_RTT.doc

第 二 章 古 代 慢 慢 睁 开 眼 睛, 我 的 面 前 出 现 一 个 女 孩 子, 大 约 十 六 七 岁, 身 穿 淡 绿 色 布 裙, 头 上 两 个 小 圆 髻 特 别 娇 俏 可 爱 医 院 什 么 时 候 出 现 这 么 一 个 可 爱 的 古 装 护 士 啊! 这 医 院 真 有

AN INTRODUCTION TO PHYSICAL COMPUTING USING ARDUINO, GRASSHOPPER, AND FIREFLY (CHINESE EDITION ) INTERACTIVE PROTOTYPING

中 国 证 券 监 督 管 理 委 员 会 : 2016 年 3 月 24 日, 海 南 海 航 基 础 设 施 投 资 集 团 股 份 有 限 公 司 ( 以 下 简 称 海 航 基 础 公 司 本 公 司 或 上 市 公 司 ) 收 到 中 国 证 券 监 督 管 理 委 员 会 ( 以 下 简

K7M SLOT 1

a b c d e f g C2 C1 2

ST template WORD

12232A LED LED LED EL EL CCFL EL CCF

EG-中文说明书 cdr

1.1 ML_ONOFF = 1 Q 3 Q 8 C 0.3V M 2 L 1 ML_ONOFF = 0 Q 3 Q 8 C 1. + R31 VCC R21 10K ML_ONOFF R15 0:off 1:on 1K Green Light VCC=5V L1 Q VDD=12V C

2. initial always initial always 0 always initial always fork module initial always 2 module clk_gen_demo(clock1,clock2); output clock1,clock2; reg cl

ARM Cortex-M3 (STM32F) STMicroelectronics ( ST) STM32F103 Core: ARM 32-bit Cortex -M3 CPU 72 MHz, 90 DMIPS with 1.25 DMIPS/MHz Single-cycle multiplica

MICROCHIP EVM Board : APP APP001 PICmicro Microchip APP001 40pin PDIP PICmicro Design Tips Character LCM Temperature Sensor Application I/O Pi

< Essential LEDtube > | < Philips >

JLX


中文手册

PTS7_Manual.PDF

HD ( ) 18 HD ( ) 18 PC 19 PC 19 PC 20 Leica MC170 HD Leica MC190 HD 22 Leica MC170 HD Leica MC190 HD Leica MC170 HD

Microsoft Word - MSP430 Launchpad 指导书.docx

P4Dual-915GL_BIOS_CN.p65

Leica IC90 E Leica IC90 E: USB 20 HDMI 22 SD () CLR ( ) 30 CLR ( ) 31 EXPSURE () 32 RESLUTIN ( ) 33 SETUP CAMER

P4V88+_BIOS_CN.p65

775i65PE_BIOS_CN.p65

内幕交易警示教育展

Model P53 pH-ORP Analyzer CH.doc

Tel:

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

各位法師各位居士大德阿彌陀佛

STM32 USART

CE UL LLHA5 / 7 ( LLGT22 ) ( LLHA9 ) ( LLGT22 ) ( LLHA9 ) 3 ( LLHA5 / 7 ) ( LLGT22 ) ( LLHA5 / 6 )

Progress Report of BESIII Slow Control Software Development

A.1 B.2 C.3 D.4 解 析 : 依 据 已 学 知 识 可 知 吐 蕃 是 藏 族 祖 先 建 立 的 一 个 王 朝 7 世 纪 前 期, 松 赞 干 布 做 了 吐 蕃 的 赞 普, 统 一 了 青 藏 高 原, 定 都 逻 些, 由 此 分 析 可 知 吐 蕃 在 地 理 位 置

ST template WORD

AN579

untitled

证券期货市场之主要诚信规范

6寸PDF生成工具

员工签到录

B 6 A A N A S A +V B B B +V 2

2 Keil µ vision 2.1 1) Keil µ vision2 V2.34 µ vision3 2) Sino_Keil.exe Keil c:\keil\ 3) JET51 USB PC C:\Keil\ USB PC 4) S-L

audiogram3 Owners Manual

General Description: Preliminary TTP916 Consumer IC VCD/DVD LCD Green mode Stand-by mode( 1W ) Features: 2.2V-5.5V LCD RAM read condition 2.6V-5.5V RC

P4VM800_BIOS_CN.p65

CAUTION RISK OF ELECTRIC SHOCK DO NOT OPEN 2

低 估 值 蓝 筹 有 大 机 会 除 了 上 述 两 个 板 块 以 外, 低 估 值 蓝 筹 仍 然 被 一 些 基 金 团 队 青 睐 某 些 投 资 团 队 认 为, 目 前 市 场 震 荡 格 局 确 立 向 上 趋 势 没 有 改 变 某 基 金 公 司 认 为, 从 板 块 运 行 来

USB解决方案.ppt

操作指导手册

关于做好2010年优秀运动员免试进入


1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F B. 1(VCC/GND) SH79F6431 C. VDDIO SH79F6431 P4 P5 P0.6 P0.7 VDDIO VDDIO=5V D. 2 V 1.0

25.( 0 在 進 行 水 溫 與 溶 解 量 的 實 驗 時, 每 一 匙 糖 都 要 刮 平 的 主 要 目 的 為 何? 1 避 免 一 次 溶 解 太 多 糖 2 可 以 增 加 溶 解 糖 的 次 數 3 控 制 加 入 的 每 一 匙 糖 都 一 樣 多 4 可 以 減 少 溶 解 量

User ID 150 Password - User ID 150 Password Mon- Cam-- Invalid Terminal Mode No User Terminal Mode No User Mon- Cam-- 2

201(1-22) CDR

川 仪 股 份 重 要 事 项 未 公 告, 连 续 停 牌 *ST 江 化 临 时 停 牌 珠 海 中 富 盘 中 停 牌 广 东 甘 化 重 大 事 项, 特 停 大 豪 科 技 拟 筹 划 重 大 资 产 重 组, 连 续

世 纪 游 轮 重 大 事 项, 特 停 全 信 股 份 临 时 停 牌 金 利 科 技 临 时 停 牌 凤 凰 光 学 重 要 事 项 未 公 告, 连 续 停 牌 安 源 煤 业 重 要 事 项 未 公 告, 连 续 停 牌

世 纪 游 轮 重 大 事 项, 特 停 全 信 股 份 临 时 停 牌 金 利 科 技 临 时 停 牌 凤 凰 光 学 重 要 事 项 未 公 告, 连 续 停 牌 安 源 煤 业 重 要 事 项 未 公 告, 连 续 停 牌

Transcription:

STM32Cube_FW_F4 中 RTC_Calendar 例程的 BUG 前言 实时时钟 (RTC) 是一个独立的 BCD 定时器 / 计数器, 用来提供准确的日历和时间信息 准确性是其重要的指标 问题 某客户在其产品的设计中, 使用了 STM32F429IIT6 客户在使用过程发现一个问题, 虽然已经有使用电池对 VBAT 进行供电, 但是在经常频繁的 VDD 上下电之后, 发现时钟会比准确的时间慢几秒钟 调研 1. 了解问题向客户了解其使用的固件库, 得知他的程序是参考 STM32Cube_FW_F4_V1.3.0\Projects\STM324x9I_EVAL\Examples\RTC 中的 RTC_Calendar 例程 于是找来 STM32439I-EVAL2 来进行验证, 测试发现, STM32Cube_FW_F4_V1.3.0\Projects\STM324x9I_EVAL\Examples\RTC 中的 RTC_Calendar 例程确实存在频繁上下电会导致时间变慢的情况 ; 而对标准外设库 STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Project\STM32F4xx_StdPeriph_Examples\RTC 中的 RTC_Calendar 例程进行测试, 则不存在此问题 所以, 怀疑 STM32Cube_FW_F4_V1.3.0\Projects\STM324x9I_EVAL\Examples\RTC 中的 RTC_Calendar 例程存在 Bug 2. 问题分析仔细阅读 STM32Cube_FW_F4_V1.3.0\Projects\STM324x9I_EVAL\Examples\RTC 中的 RTC_Calendar 例程, 分析一下 main.c 主程序, if(hal_rtcex_bkupread(&rtchandle, RTC_BKP_DR0)!= 0x32F2) 是用来判断 RTC 是否是已经被配置过的, 所以怀疑的重点可放在这之前的 if(hal_rtc_init(&rtchandle)!= HAL_OK) 中的 HAL_RTC_Init() 函数 进入位于 stm32f4xx_hal_rtc.c 中的 HAL_RTC_Init() 函数, 再进入其调用的位于 stm32f4xx_hal_msp.c 中的 HAL_RTC_MspInit() 函数, 在这个函数中, 可以看到以下代码 : /*##-1- Configue LSE as RTC clock soucre ###################################*/ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI RCC_OSCILLATORTYPE_LSE; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; RCC_OscInitStruct.LSEState = RCC_LSE_ON; RCC_OscInitStruct.LSIState = RCC_LSI_OFF; if(hal_rcc_oscconfig(&rcc_oscinitstruct)!= HAL_OK)

PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RTC; PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE; if(hal_rccex_periphclkconfig(&periphclkinitstruct)!= HAL_OK) 这段代码中由于选中了 LSE, 在其所调用的 HAL_RCC_OscConfig() 中对 LSE 进行了重新配置 在 stm32f4xx_hal_rcc.c 中找 到 HAL_RCC_OscConfig() 函数, 发现其对 LSE 重新配置的时候, 对 LSE 进行关闭, 然后再配置 到此, 回来再看 main.c, 由于 if(hal_rtc_init(&rtchandle)!= HAL_OK) 位于 if(hal_rtcex_bkupread(&rtchandle, RTC_BKP_DR0)!= 0x32F2) 之前, 从程序流程来看, 每次 VDD 上电, 都会进行一次 HAL_RTC_Init(), 也就是说, 每次上电都会有一个关闭 LSE 再打开的动作, 这个动作多了, 时间变慢的现象就变得很明显了 3. 问题解决 问题原因很明显了, 那么解决办法也很简单, 只需要将 HAL_RTC_Init() 这个初始化函数挪到判断 RTC 是否是已经被配置过的 if else 语句里边就行了 如果是 RTC 已经被配置过的, 就不需要再重新初始化一次了 如下 : /*##-1- Configure the RTC peripheral #######################################*/ RtcHandle.Instance = RTC; /*##-2- Check if Data stored in BackUp register0: No Need to reconfigure RTC#*/ /* Read the BackUp Register 0 Data */ if(hal_rtcex_bkupread(&rtchandle, RTC_BKP_DR0)!= 0x32F2) /* Configure RTC prescaler and RTC data registers */ /* RTC configured as follow: - Hour Format = Format 24 - Asynch Prediv = Value according to source clock - Synch Prediv = Value according to source clock - OutPut = Output Disable - OutPutPolarity = High Polarity - OutPutType = Open Drain */ RtcHandle.Init.HourFormat = RTC_HOURFORMAT_24; RtcHandle.Init.AsynchPrediv = RTC_ASYNCH_PREDIV; RtcHandle.Init.SynchPrediv = RTC_SYNCH_PREDIV; RtcHandle.Init.OutPut = RTC_OUTPUT_DISABLE; RtcHandle.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH; RtcHandle.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN; if(hal_rtc_init(&rtchandle)!= HAL_OK) /* Initialization Error */ /* Configure RTC Calendar */

RTC_CalendarConfig(); else /* Check if the Power On Reset flag is set */ if( HAL_RCC_GET_FLAG(RCC_FLAG_PORRST)!= RESET) /* Power on reset occured: Turn LED2 on */ BSP_LED_On(LED2); /* Check if Pin Reset flag is set */ if( HAL_RCC_GET_FLAG(RCC_FLAG_PINRST)!= RESET) /* External reset occured: Turn LED4 on */ BSP_LED_On(LED4); /* Enable the PWR clock */ PWR_CLK_ENABLE(); /* Allow access to RTC */ HAL_PWR_EnableBkUpAccess(); /* Wait for RTC APB registers synchronisation */ if(hal_rtc_waitforsynchro(&rtchandle)!= HAL_OK) /* synchronisation Error */ /* Clear the RTC Alarm Flag */ HAL_RTC_ALARM_CLEAR_FLAG(&RtcHandle,RTC_FLAG_ALRAF); /* Clear the EXTI Line 17 Pending bit (Connected internally to RTC Alarm) */ HAL_RTC_EXTI_CLEAR_FLAG(RTC_EXTI_LINE_ALARM_EVENT); /* Clear Reset Flag */ HAL_RCC_CLEAR_RESET_FLAGS(); 结论 由于 STM32Cube_FW_F4_V1.3.0\Projects\STM324x9I_EVAL\Examples\RTC 中的 RTC_Calendar 例程没有注意到 HAL_RTC_Init() 函数里边会有关闭 LSE 的动作, 而每次上电都会运行这个函数, 每次上电都会导致时间变慢, 上电的次数多了, 变慢就很明显了 所以, 例程上是有 Bug 的, 需要进行修复

处理 需要将 HAL_RTC_Init() 这个初始化函数的位置做个修改 如果 RTC 未被配置过, 则进行配置 ; 如果是已经被配置过的, 就不需要再重新初始化一次了 标准外设库 STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Project\STM32F4xx_StdPeriph_Examples\RTC 中的 RTC_Calendar 例程是没有问题的, 参考此例程, 修改得一基于 STM32Cube_FW_F4 的 RTC_Calendar 例程, 见附件 建议 上电时对 LSE 进行重新初始化可能会导致 RTC 计时不准确, 所以在实际应用过程中应该对此注意一下

重要通知 - 请仔细阅读 意法半导体公司及其子公司 ( ST ) 保留随时对 ST 产品和 / 或本文档进行变更 更正 增强 修改和改进的权利, 恕不另行通知 买方在订货之前应获取关于 ST 产品的最新信息 ST 产品的销售依照订单确认时的相关 ST 销售条款 买方自行负责对 ST 产品的选择和使用, ST 概不承担与应用协助或买方产品设计相关的任何责任 ST 不对任何知识产权进行任何明示或默示的授权或许可 转售的 ST 产品如有不同于此处提供的信息的规定, 将导致 ST 针对该产品授予的任何保证失效 ST 和 ST 徽标是 ST 的商标 所有其他产品或服务名称均为其各自所有者的财产 本文档中的信息取代本文档所有早期版本中提供的信息 2015 STMicroelectronics - 保留所有权利