完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
首先,我从github上面clone了整个的CoX仓库,关于git的用法等,这个里面有帮助链接,这里就不详细去介绍了。 Clone完了之后发现有许多分支,选择了NUC1xx的分支,由于我要做个简单的万年历,于是开始研究RTC方面的代码,发现API很简单,发现就需要先做一个初始化配置并使能相关中断就可以用来读写时间了,芯唐的RTC实现了一个完整的万年历系统,可以直接从寄存器读出年月日时分秒,还有星期。甚至连是否是瑞年也会有标志位。用起来很方便!xRTC也是这么定义的,在xttime的结构体中,包含了年月日时分秒和星期这些元素。但是,我以前用过ST芯片,发现STM32F1xx系列的RTC只有一个32位数据计数器,应该是不能和xtTime所定义的标准相兼容的,正当我有此疑惑的时候,我看到另外一个配置宏以及对应的两个API,static unsigned long xRTCConvertTimeToCounter(xtTime *xtTime) 和static void xRTCConvertCounterToTime(xtTime *xtTime, unsigned long ultimeCounter)。这两个API的用途就是实现xtTime结构体和数据计数器之间的相互转换的。有了这两个API,所有的RTC都可以统、一成一种通用的标准——即用统、一的API,用固定格式的数据结构(参数统、一)。于是,我轻松的写完了一个简单的例程,对比,CooCox在组件里面上传的例程,大同小异,不同的是,我全部用CoX接口实现。很简单的代码。 在用CoX库写代码时,首先,第一件事情就是配置系统时钟: xSysCtlClockSet(48000000, xSYSCTL_OSC_MAIN | xSYSCTL_XTAL_12MHZ); 这个函数有两个参数,第一个就是最终需要得到的系统时钟,第二个参数是对应的配置,如果使用,内部时钟就选xSYSCTL_OSC_INT,使用外部晶振就选xSYSCTL_OSC_MAIN,并“与”上开发板实际的晶振值。 其次,就是使能和复位外设: xSysCtlPeripheralReset(xSYSCTL_PERIPH_RTC); xSysCtlPeripheralEnable(xSYSCTL_PERIPH_RTC); 如果有管脚的话,就配置相关管脚: xSPinTypeUART(UART0RX,PB0); xSPinTypeUART(UART0TX,PB1); RTC一般没有相关外部管脚,这一步没有,上面的是以串口为例说明的。 再次,调用外设的初始化函数、外设使能函数、中断使能和中断回调配置等: xRTCTimeInit(); 初始化RTC外设 xRTCIntCallbackInit(xRTCCallback); 初始化回调函数 xRTCIntEnable(xRTC_INT_SECOND); 在外设层使能中断 xIntEnable(INT_RTC); 在内核层使能中断 对于RTC的话,还要配置一个初始时间,这个就可以通过xRTCTimeWrite(&tTime1, xRTC_TIME_CURRENT)函数实现。至此,只用在每次发生中断是,用xRTCTimeRead(&tTime1, xRTC_TIME_CURRENT)读出当前的时间就行了! 研究完了RTC代码发现,CoX代码真的将各个厂商的差异和共性变现的一览无余。于是,RTC在应用时变得很方便快捷。从一个系列的MCU换到另外一个系列,只需修改基本配置就行了!当然RTC只是一个很简单的外设,要统、一很简单,下面我会进一步研究其他代码,一步步揭开CoX的神秘面纱! (本文由Cogo商城-IC元器件在线采购平台搜集整理,浏览http://www.cogobuy.com/product/2-1-1-1.html 了解更多详细信息) |
|
相关推荐
1 个讨论
|
|
|
谢谢!学习了!
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
444浏览 1评论
640浏览 0评论
436浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-3 21:09 , Processed in 0.640592 second(s), Total 46, Slave 34 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
773