OneOS驱动-RTC

OneOS驱动RTC

1、简介

RTC(Real-Time Clock)实时时钟可以提供精确的实时时间,它可以用于产生年、月、日、时、分、秒等信息。目前实时时钟芯片大多采用精度较高的晶体振荡器作为时钟源。有些时钟芯片为了在主电源掉电时还可以工作,会外加电池供电,使时间信息一直保持有效。

2、RTC设备注册

以stm32l475-atk-pandora为例。

2.1.os_driver_info_t和os_device_info_t结构体创建

  1. os_driver_info_t

位置:drivers\hal\st\drivers\drv_rtc.c

OS_DRIVER_INFO:注册结构体os_driver_info_t到"driver_table"段;

OS_DRIVER_DEFINE:注册系统启动进行初始化时调用的初始化函数。

  1. os_device_info_t

位置:templates\stm32l475-atk-pandora\board\peripherals.c

OS_HAL_DEVICE_DEFINE注册结构体os_device_info_t到"device_table"段

2.2.RTC_HandleTypeDef结构体(hrtc)

  1. 结构体定义

drivers\hal\st\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Inc\stm32l4xx_hal_rtc.h

 

  1. 结构体初始化
  1. MX_RTC_Init函数

位置:templates\stm32l475-atk-pandora\board\CubeMX_Config\Src\main.c

对Instance和Init成员进行初始化。

由上图可知,Instance成员赋值为RTC宏。RTC宏定义和RTC_TypeDef结构体定义如下。宏RTC定义为RTC寄存器的基地址,该地址指向RTC_TypeDef结构体。该结构体的成员都是32位的寄存器,是与时间、日期等相关的寄存器。只要知道该结构体的基地址,即下图中的RTC_BASE,那么就能够访问其中的寄存器成员,从而可以进行时间和日期的获取、设置等操作。

 

位置:st\STM32L4xx_HAL\CMSIS\Device\ST\STM32L4xx\Include\stm32l475xx.h

 

(2)其他初始化函数

位置:drivers\hal\st\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_rtc.c

HAL_RTC_InitHAL_RTC_DeInit函数:主要对结构体中的函数指针成员的赋值;

HAL_RTC_RegisterCallbackHAL_RTC_UnRegisterCallback函数:同样是对结构体中的函数指针成员的赋值。

 

3、注册函数

设备驱动层probe函数:

注意:操作接口只有一个os_rtc_control接口。

结构体stm32_rtc

注意,上面probe函数直接调用os_device_register,即无设备框架层,直接注册到设备管理层

虽然没有注册到设备框架层,但是仍然有drivers\rtc\rtc.c本来一般rtc.c为设备框架层,但是此处不同,注册时并未到这一层,而且用户调用也从rtc.c开始,并不是从设备管理层开始。访问RTC设备直接从rtc.c中的接口开始,而设备管理层的接口又放在rtc.c中的接口中调用。具体看下面设备访问一节。

4、RTC设备访问

位置:drivers\rtc\rtc.c

另外还有set_date和set_time两个接口,用户可由这两个接口通过调用rtc_get、rtc_set接口完成日期和时间的设置。

 

rtc_get结构的执行流程。

 

rtc.c

rtc_get

device.c

os_device_open_s

os_device_control

drv_rtc.c

os_rtc_control

stm32_rtc_get_timestamp

device.c

os_device_close

 

其中的RTC_HandleTypeDef结构体hrtc中包含有RTC寄存器基地址成员,这在前面的内容中讲过。再借助HAL_RTC_GetTime和HAL_RTC_GetDate接口来访问寄存器获取时间和日期。

优秀的个人博客,低调大师

微信关注我们

原文链接:https://my.oschina.net/u/5443273/blog/10086160

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。