码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • STM32F1 RTC 当成 ms 等级计时/延迟使用


    STM32F1 RTC 当成 ms 等级计时 / 延迟使用

    这一天天的, 用 F103C8不好吗? 一定要改 F103C6
    Timer 少一个, 捣鼓了一下, 用 RTC SECIE 来作, 不很准, 够用。
    ( OWIE : CNT Overflow, ALRIE: Alarm IE 这两个不适用)

    概念上是以 STM32 RTC 使用 内部 LSI 40KHz 当 Clock.

    /* 
    *   AsynchPrediv = 38, 39, 40 
    *   这数值依每一个STM32内部 LSI 40KHz 来微调.
    *   以实际系统为准, 在 DEBUG 模式中的数据不准!
    */
    
      hrtc.Instance = RTC;
      hrtc.Init.AsynchPrediv = 39;
      hrtc.Init.OutPut = RTC_OUTPUTSOURCE_NONE;
      HAL_RTC_Init(&hrtc);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    要自己打开 RTC.CRH SECIE 中断

    void HAL_RTC_MspInit(RTC_HandleTypeDef* rtcHandle)
    {
    
      if(rtcHandle->Instance==RTC)
      {
      /* USER CODE BEGIN RTC_MspInit 0 */
    
      /* USER CODE END RTC_MspInit 0 */
        HAL_PWR_EnableBkUpAccess();
        /* Enable BKP CLK enable for backup registers */
        __HAL_RCC_BKP_CLK_ENABLE();
        /* RTC clock enable */
        __HAL_RCC_RTC_ENABLE();
    
        /* RTC interrupt Init */
        HAL_NVIC_SetPriority(RTC_IRQn, 15, 0);
        HAL_NVIC_EnableIRQ(RTC_IRQn);
      /* USER CODE BEGIN RTC_MspInit 1 */
       // Set CNF for program RTC->CRH 
       RTC->CRL |= RTC_CRL_CNF;
       RTC->CRH |= RTC_CRH_SECIE;
      /* USER CODE END RTC_MspInit 1 */
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    在 RTC IRQ中, 加上 Tick++

    uint32_t msRTC_Tick = 0; 
    void RTC_IRQHandler(void)
    {
       // RTOFF must 1 , before change RTC Registers 
       if(RTC_FLAG_RTOFF && RTC->CRL)
       {
         // Make sure IRQ actibe by SECF
         if( RTC->CRL && RTC_FLAG_SEC )
    	   {
    	     // Clear SECF flag 
    	     RTC->CRL  &= (~RTC_FLAG_SEC);
    	 	  ++msRTC_Tick;
    	   }
     	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    STM32F1 RTC 当成 ms 等级计时/延迟使用 @LSI 40KHz
    资料, 仅供参考。
    数据剪辑自原厂规格书, 版权归原所有人拥有。
    档案取自互联网!如有侵权或不适用情形, 请联系移除!
    ** 使用有风险, 请详阅原厂使用说明!
    ** 范例码为自用,请谨慎引用, Ctrl-C, Ctrl-V结果自行承担!

  • 相关阅读:
    我为什么选择这样一份经常出差的工作
    更灵活,拓展性更高:回炉重造的DPDK Packet Framework
    手把手带你体验一场属于Linux的学习之旅
    【Linux】高级IO模型
    08Java算术运算符/除法与取模/隐式转换/强制转换/字符串相加/字符相加
    git学习
    【校招VIP】前端算法考点之动态规划
    全局表、表锁、行锁
    mac flutter pb解析报错:protoc-gen-dart: program not found or is not executable
    Z-Libary最新地址检测,再也不用担心找不到ZLibary了
  • 原文地址:https://blog.csdn.net/weixin_44679008/article/details/126662845
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号