本帖最后由 wind_west 于 2019-6-6 18:50 编辑

    在uFun学习板本身的资料中已经继承了RTC的驱动,而且硬件上还特地添加了超级电容,那么是不是该好好地对待一下RTC。我的回答是“那必须”。硬件上的超级电容位置很明显,和一颗小型纽扣一样。在其他的开发板上这个功能由纽扣电池来提供。所以,咱们的学习板还是很有特色的。现在截取一张硬件的示意图如下:
超级电容.JPG
  我使用的工程,是上次已经移植RTOS的工程。当然了,如果用uFun学习板本身的两只老虎工程也是一样的效果,区别就是有没有OS而已。  我们首先新建一个RTC的任务,在这个任务里,读取RTC的值,然后通过串口打印出来。因为相关的初始化在原程序工程里面已经初始化了,所以不再重复。只是有一点需要注意,RTC的时钟初始化需要在系统时钟初始化之后。现在我们添加任务如下:
  xTaskCreate( vRTCTask, "RTC", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY+1, NULL );
执行函数vRTCTask()定义为1秒钟执行一次,详细代码:
/**************************************************************
程 序 名:vRTCTask
功能说明:获取RTC时间
**************************************************************/
void vRTCTask( void *pvParameters )
{
        const TickType_t xDelay_xms = pdMS_TO_TICKS( 1000 );//延时单位为毫秒
        RTC_Init();                 // RTC初始化配置,它的初始化需要放置在系统时钟初始化之后
        for( ;; )
        {
                Time_Show();        
                vTaskDelay( xDelay_xms );
        }
}

到这,基本框架已经完成了。接下来就是细节上的一点小改动,为的是实现2点内容:1、启用时间调整功能函数;2、启用串口对时间进行调整。


1、启用时间调整功能函数
    通过RTC_Init()进行底层函数的定位,我们能找到这里“if (BKP_ReadBackupRegister(BKP_DR1) != 0xA5A5)” 。这一步对BKP_DR1进行读取,然后和特定的值进行比对。这个值我们设置为0xA666应该也是可行的,都没关系。咱们的硬件上的电容不同于可以取下的纽扣电池,电容是焊接的,短时间不断电这个寄存器的值不会改变,那么时间调整函数Time_Adjust()很难被启用。具体原因可以参看下图:
启用时间调整函数.JPG
在这里,进行调试的时候,我加了两句来确定寄存器的值,如下:
//        Test = BKP_ReadBackupRegister(BKP_DR1);//寄存器的信息打印是为了调试,正常运行的时候,注释掉。
//        printf("\r\n\n BKP_ReadBackupRegister = %0x",Test);

然后,我将寄存器的判断指令改为“if (BKP_ReadBackupRegister(BKP_DR1) == 0xA5A5)”。这样调整函数就会得到调用了,当程序调试完成之后再回“if (BKP_ReadBackupRegister(BKP_DR1) == 0xA5A5)”。复原之后,才不会每次开机都要调整程序。
2、启用启用串口对时间进行调整
    通过对  uint32_t Time_Regulate(void) 的修改来启用串口的设置。首先将函数中对USART_Scanf()的屏蔽语句全部清除屏蔽,然后将Tmp_HH、Tmp_MM、Tmp_SS的初始值全部修改为0XFF。因为while的判断条件为        while (Tmp_HH == 0xFF)、while (Tmp_MM == 0xFF)、while (Tmp_SS == 0xFF)。修改之后如图:

时间调整.JPG

最后编译,下载,串口打开,观察到的现象为:
串口.JPG
望大家多多指教,附件密码:uFun_RTC
附件.zip (2.02 MB, 下载次数: 8)
全部回复 2
  • 2 主题
  • 6 帖子
  • 264 积分
身份:LV1 技术小白
E币:213
学习了
  • 25 主题
  • 72 帖子
  • 1180 积分
身份:LV4 高级技术员
E币:792
回复楼主
您需要登录后才可以评论 登录 立即注册