本次实验使用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”,紧接着就是掌握好火候松开复位键,程序便可以下载并且能正常运行。不知是什么原因造成的,电脑重新开机也不行。玩着有点累了。如:
|