当前位置 : 主页 > 编程语言 > 其它开发 >

蓝桥杯国赛——第三站RTC秒中断

来源:互联网 收集:自由互联 发布时间:2022-06-06
端午假期,周六上了一天实验课,晚上用来打游戏了。今天,周日,再继续搞,。 RTC中断相关: 1.目前看来,断电运行是不可能的,因为板子不带电源。不过说起来,想要实现断电运行

端午假期,周六上了一天实验课,晚上用来打游戏了。今天,周日,再继续搞,。

RTC中断相关:

1.目前看来,断电运行是不可能的,因为板子不带电源。不过说起来,想要实现断电运行,关键就是RTC备份域【BKP】能够在断电时保持数据,所以只要使能寄存器,正确读写就没问题。

从RTC 的定时器特性来说,它是一个32 位的计数器,只能向上计数。它使用的时钟源有三种,分别为高速外部时钟的128 分频(HSE/128)、低速内部时钟LSI 以及低速外部时钟LSE;使HSE分频时钟或LSI 的话,在主电源VDD 掉电的情况下,这两个时钟来源都会受到影响,因此没法保证RTC 正常工作。因此RTC 一般使用低速外部时钟LSE,在设计中,频率通常为实时时钟模块中常用的32.768KHz,这是因为32768 = 215,分频容易实现,所以它被广泛应用到RTC 模块。在主电源VDD 有效的情况下(待机),RTC 还可以配置闹钟事件使STM32 退出待机模式。

实际上,在阅读手册的时候,可以发现st对RTC读写时间和访问备份域设置了很多reg级别的约束条件,但是在直接使用Hal库编程时,很多东西被库函数屏蔽了(搞得我抓不清学习的重点),所以,库这个东西,有利有弊吧。

2.RTC秒中断和定时闹钟

hal库的delay函数会使得程序重心都放到delay上面,其他动作不会执行,而使用uwTick来比较的方式,就不会这样。但是如果在中断中sys定时时间到,理论上会先执行中断,之后再重新运行。那么这种时间上的冲突应该怎么避免呢?也就是,单片机执行多个程序,如果没有理解错的话,它作为单核单线程,应该不能同时调用cpu资源运行,所以它采取的应该是分时复用,或者索性直接在while循环里面顺序执行,用高速的80MHz乃至更高的频率来实现基本同时运行。故而应该不存在能够让冲突的程序严格按照时序运行的解决方案。

现在疑问的就是有没有相关文章介绍过这些?

谢邀,一般单片机一般只有一个核心,做多线程实际上是分时复用。

谢邀,一般单片机一般只有一个核心,做多线程实际上是分时复用。自己做的话可以写个循环,循环里面多个进程轮流执行。
更方便一点是用嵌入式操作系统,如ucos freertos vxworks 等操作系统做,里面自带任务调度及任务间通信等功能。
里面的任务调度可以按照时间片轮训,优先级抢占等方式,比你自己搞省事多了。 觉得不错请按赞XD!
上一篇:React数据通信父传子和子传父的使用
下一篇:没有了
网友评论