当前位置:网站首页 > 编程语言 > 正文

时钟配置代码(时钟配置命令)



    目前硬件核心板存在一个问题,外部32.768KHz的晶振经常无法起振,硬件工程师将晶振两端的1MΩ电阻去掉,电容从10pF换成6pF后大部分能起振了,个别的还是不行。目前是外部LSE无法起振的情况下直接死机,为了让上位机知道核心板是否在正常工作,要保证外部晶振无法起振的情况下切换到内部晶振,系统其他功能还能正常工作。

    先配置下外部时钟:

1、RCC选择外部晶振

2、Timers的RTC栏里,勾选 Activate两个,RTC OUT 选择 Disable

3、参数设置,日期格式采用二进制方式:Binary data format,其他日历时间自行设置

4、时钟树配置:选择外部晶振:LSE

通过以上操作就完成了RTC的配置。

在modbus校时指令和应用程序中对时间和日期进行更新,两个应用中都是对时间和日期的写操作,因此需要一个互斥量保持数据完整性。

modbus校时线程代码如下:

 

时间更新线程如下:

 

解决最后的问题。仿真的时候可以看到,外部晶振没有起振的情况下死机而无法正常运行,为了解决此问题,要修改超时的库函数,并且切换到LSI。

void SystemClock_Config(void)改为:

 

库函数 HAL_RCC_OscConfig(RCC_OscInitTypeDef  *RCC_OscInitStruct) 也要做修改,修改如下:其中超时使用  RCC_Delay(1);   // 72MHz,因为使用sysclick修改的代码量会很大。

 

修改的程序测试,上电等待5s左右程序开始正常运行,关闭了LSE,切换到了内部LSI,后期可以补充将RTC初始化失败的标记传到上位机。

作者:星元的天空

到此这篇时钟配置代码(时钟配置命令)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • ssh免密码登录突然失效了(ssh 免密码登录)2025-08-07 15:00:09
  • 定位开着为什么显示获取位置失败(定位获取失败是怎么回事)2025-08-07 15:00:09
  • iphone15多少钱(iphone16多少钱)2025-08-07 15:00:09
  • 拆包按哪个键(拆包按哪个键才能拆)2025-08-07 15:00:09
  • ppppppppppppppp啥意思pppppp(pppppp是什么意思)2025-08-07 15:00:09
  • linux 命令不存在(linux不存在就创建目录)2025-08-07 15:00:09
  • 上一章返回目录(返回上一级目录的快捷键)2025-08-07 15:00:09
  • 104协议解析(104协议总召)2025-08-07 15:00:09
  • olevs怎么读(oloes怎么读)2025-08-07 15:00:09
  • 幼儿园游戏的分类依据(幼儿园游戏类型分为)2025-08-07 15:00:09
  • 全屏图片