打印
[学习笔记]

【AutoChips 7801x MCU评测报告】六、RTC

[复制链接]
1032|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
      本次实验使用RTC模块产生100ms的计数中断驱动板上的LED2闪烁,同时使能了PA13端口上的RTC_CLKOUT。利用逻辑分析仪捕捉这两个端口上的信号,过程中分别使用了APB时钟(24MHz)、LSI时钟(32KHz)进行对比。具体实验过程如下:

一、实验资源
1、AC7801x开发板;
2、AutoGen Studio 1.3.0;
3、KEIL 5.28.0.0;
4、ST-LINK2;
5、逻辑分析仪;

二、资源简介
模块功能比较简单,在“Standby”Standby低功耗模式下可保持运行并唤醒MCU。




      RTC支持多种时钟源,实验中分别选用了24MHz的APB时钟和32KHz的LSI时钟。下面是官方文档中的一些相关说明,对于RTC模块的使用具有指导作用。




三、代码实现
24MHz的APB时钟配置:
void ATC_RTC_Init(void)
{
    RTC_ConfigType rtcConfig;

    MSP_RTC_Init(RTC);

    rtcConfig.clockSource = RTC_CLOCK_APB;
    rtcConfig.rtcOutEn = ENABLE;
    rtcConfig.rtcInterruptEn = ENABLE;
    rtcConfig.psrInterruptEn = ENABLE;
    rtcConfig.periodValue = 99;
    rtcConfig.psrValue = 23999;
    rtcConfig.callBack = RTC_IRQHandler_Callback;

    RTC_Init(&rtcConfig);
}

32KHz的LSI时钟配置:
void ATC_RTC_Init(void)
{
    RTC_ConfigType rtcConfig;

    MSP_RTC_Init(RTC);

    rtcConfig.clockSource = RTC_CLOCK_LSI;
    rtcConfig.rtcOutEn = ENABLE;
    rtcConfig.rtcInterruptEn = ENABLE;
    rtcConfig.psrInterruptEn = ENABLE;
    rtcConfig.periodValue = 9;
    rtcConfig.psrValue = 319;
    rtcConfig.callBack = RTC_IRQHandler_Callback;

    RTC_Init(&rtcConfig);
}

中断回调:
/**
* [url=home.php?mod=space&uid=247401]@brief[/url] This function handle RTC interrupt.
* @param[in] device: RTC_Type pointer
* @param[in] wpara: callback parameter
* @param[in] lpara: callback parameter
* [url=home.php?mod=space&uid=266161]@return[/url] none
*/
void RTC_IRQHandler_Callback(void *device, uint32_t wpara, uint32_t lpara)
{
    if (wpara & RTC_SC_RPIF_Msk)
    {
        /* USER CODE BEGIN PRESCALER INTERRUPT */

        /* USER CODE END PRESCALER INTERRUPT */
    }

    if (wpara & RTC_SC_RTIF_Msk)
    {
        /* USER CODE BEGIN OVERFLOW INTERRUPT */
                if(LED2_flag)
                {
                        LED2_flag=0;
                        GPIO_SetPinBit(GPIOC, GPIO_PIN9);
                }
                else
                {
                        LED2_flag=1;
                        GPIO_ResetPinBit(GPIOC, GPIO_PIN9);
                }
        /* USER CODE END OVERFLOW INTERRUPT */
    }

    /* USER CODE BEGIN RTC_IRQHandler_Callback */

    /* USER CODE END RTC_IRQHandler_Callback */
}

四、实验结果
24MHz的APB时钟:


32KHz的LSI时钟:

通过对比发现,LSI时钟与预期数值误差相对略大一点。

五、实验总结
      本次实验内容比较简单,但是整个过程还是学习了很多知识,对AC7801x微控制器也多了份了解。
      另外,上次实验后开发板出了点问题,无论是J-LINK还是ST-LINK都无法识别芯片了。本次实验程序的下载都是采用先按住开发板上的复位键,然后再点击“download”,紧接着就是掌握好火候松开复位键,程序便可以下载并且能正常运行。不知是什么原因造成的,电脑重新开机也不行。玩着有点累了。如:





使用特权

评论回复

相关帖子

沙发
RunningX| | 2020-6-22 09:57 | 只看该作者
1.现在的7801是工程片阶段,所以LSI没经过校准,会有一些偏差。
2.PA13端口本来是调试口,但你使能为RTC_CLKOUT功能了。可能是这个原因导致你的程序不能正常下载。建议在使能为RTC_CLKOUT前,delay一段时间。以便后续复位后能烧写程序

使用特权

评论回复
板凳
lisingch|  楼主 | 2020-6-22 10:55 | 只看该作者
RunningX 发表于 2020-6-22 09:57
1.现在的7801是工程片阶段,所以LSI没经过校准,会有一些偏差。
2.PA13端口本来是调试口,但你使能为RTC_CL ...

应该是您说的原因,过程中忽视了PA13的SWCLK功能。谢谢!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

99

主题

14994

帖子

17

粉丝