打印
[活动专区]

【AT-START-F425测评】+ RTC电子时钟

[复制链接]
1008|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
AD, ar, tc
AT32 F425内部配有RTC计时器,用它来计时并在相应函数的配合下可免除计时过程中所遇到的进制处理问题,在使用串口通信的情况下,其执行效果如图1所示。
                              
图1 运行效果
此外,若将RTC与OLED屏结合起来,则可以轻松地实现电子时钟的功能。
实现图2计时效果的主程序为:
int main(void)
{
exint_init_type exint_init_struct;
ertc_time_type time;
uint32_t temp = 0;
system_clock_config();
nvic_priority_group_config(NVIC_PRIORITY_GROUP_4);
at32_board_init();
uart_print_init(115200);
crm_periph_clock_enable(CRM_PWC_PERIPH_CLOCK, TRUE);
pwc_battery_powered_domain_access(TRUE);
if (ertc_bpr_data_read(ERTC_DT1) != 0x1234)
{
printf("ertc has not been initialized\r\n\r\n");
ertc_config();
}
else
{
printf("ertc has been initialized\r\n\r\n");
ertc_wait_update();
ertc_flag_clear(ERTC_ALAF_FLAG);
exint_flag_clear(EXINT_LINE_17);
}
exint_default_para_init(&exint_init_struct);
exint_init_struct.line_enable   = TRUE;
exint_init_struct.line_mode     = EXINT_LINE_INTERRUPUT;
exint_init_struct.line_select   = EXINT_LINE_17;
exint_init_struct.line_polarity = EXINT_TRIGGER_RISING_EDGE;
exint_init(&exint_init_struct);
nvic_irq_enable(ERTC_IRQn, 0, 1);
app_oled_init();
OLED_Init();
OLED_Clear();
OLED_ShowString(0,0,"AT32F425",16);
OLED_ShowString(0,2,"OLED & RTC",16);
OLED_ShowString(8,4,"20  -  -",16);
OLED_ShowString(24,6,"  :  :",16);
while(1)
{
ertc_calendar_get(&time);
if(temp != time.sec)
{
temp = time.sec;
OLED_ShowNum(24,4,time.year,2,16);
OLED_ShowNum(48,4,time.month,2,16);
OLED_ShowNum(72,4,time.day,2,16);
OLED_ShowNum(24,6,time.hour,2,16);
OLED_ShowNum(48,6,time.min,2,16);
OLED_ShowNum(72,6,time.sec,2,16);
}
}
}

该程序的处理流程为:
首先进行RTC初始化,然后判别识别标志,若未设置初始计时值,则读取程序中的初始值来计时。否则,会在已有的计时值基础上进行计时处理,其显示效果如图2所示。
图2 显示效果
其中RTC初始计时值在该函数中设置或修改:
void ertc_config(void)
{
crm_periph_clock_enable(CRM_PWC_PERIPH_CLOCK, TRUE);
pwc_battery_powered_domain_access(TRUE);
crm_battery_powered_domain_reset(TRUE);
crm_battery_powered_domain_reset(FALSE);
#if defined (ERTC_CLOCK_SOURCE_LICK)
crm_clock_source_enable(CRM_CLOCK_SOURCE_LICK, TRUE);
while(crm_flag_get(CRM_LICK_STABLE_FLAG) == RESET)
{
}
crm_ertc_clock_select(CRM_ERTC_CLOCK_LICK);
ertc_clk_div_b = 255;
ertc_clk_div_a = 127;
#elif defined (ERTC_CLOCK_SOURCE_LEXT)
crm_clock_source_enable(CRM_CLOCK_SOURCE_LEXT, TRUE);
while(crm_flag_get(CRM_LEXT_STABLE_FLAG) == RESET)
{
}
crm_ertc_clock_select(CRM_ERTC_CLOCK_LEXT);
ertc_clk_div_b = 255;
ertc_clk_div_a = 127;
#endif
crm_ertc_clock_enable(TRUE);
ertc_reset();
ertc_wait_update();
ertc_divider_set(ertc_clk_div_a, ertc_clk_div_b);
ertc_hour_mode_set(ERTC_HOUR_MODE_24);
ertc_date_set(22, 3, 2, 3);
ertc_time_set(12, 0, 0, ERTC_AM);
ertc_alarm_mask_set(ERTC_ALA, ERTC_ALARM_MASK_DATE_WEEK);
ertc_alarm_week_date_select(ERTC_ALA, ERTC_SLECT_DATE);
ertc_flag_clear(ERTC_ALAF_FLAG);
ertc_bpr_data_write(ERTC_DT1, 0x1234);
}

由此可见RTC计时还是十分有用的,并且也十分好用。

使用特权

评论回复
沙发
sparrow054| | 2022-3-2 11:02 | 只看该作者
RTC需求还是很多的,

使用特权

评论回复
板凳
jinglixixi|  楼主 | 2022-3-2 14:08 | 只看该作者
sparrow054 发表于 2022-3-2 11:02
RTC需求还是很多的,

是呀!!!

使用特权

评论回复
地板
xiaoqi976633690| | 2022-3-2 21:57 | 只看该作者
断电后时间还走吗,没看到单独rtc供电

使用特权

评论回复
5
weifeng90| | 2022-3-3 08:00 | 只看该作者
OLED是板子配的?

使用特权

评论回复
6
jinglixixi|  楼主 | 2022-3-3 08:49 | 只看该作者
weifeng90 发表于 2022-3-3 08:00
OLED是板子配的?

自己买的

使用特权

评论回复
7
jinglixixi|  楼主 | 2022-3-3 08:51 | 只看该作者
xiaoqi976633690 发表于 2022-3-2 21:57
断电后时间还走吗,没看到单独rtc供电

没有后备电池,断电哪能走呀。

使用特权

评论回复
8
littlelida| | 2022-3-4 14:48 | 只看该作者
优秀啊~~

使用特权

评论回复
9
juliestephen| | 2022-3-4 19:56 | 只看该作者
RTC使用中断了吗   

使用特权

评论回复
10
zerorobert| | 2022-3-4 20:16 | 只看该作者
楼主分享的帖子真是多呢   

使用特权

评论回复
11
sanxingnote7| | 2022-3-4 20:36 | 只看该作者
掉电丢失吗   

使用特权

评论回复
12
burgessmaggie| | 2022-3-4 20:58 | 只看该作者
AT-START-F425支持rtt吗?

使用特权

评论回复
13
jinglixixi|  楼主 | 2022-3-5 09:27 | 只看该作者

岂敢,多谢支持!

使用特权

评论回复
14
jinglixixi|  楼主 | 2022-3-5 09:28 | 只看该作者

是的

使用特权

评论回复
15
jinglixixi|  楼主 | 2022-3-5 09:28 | 只看该作者

会的

使用特权

评论回复
16
jinglixixi|  楼主 | 2022-3-5 09:29 | 只看该作者
zerorobert 发表于 2022-3-4 20:16
楼主分享的帖子真是多呢

感谢支持!!!

使用特权

评论回复
17
jinglixixi|  楼主 | 2022-3-5 09:40 | 只看该作者
burgessmaggie 发表于 2022-3-4 20:58
AT-START-F425支持rtt吗?

我所用的版本目前只支持AT32F403及AT32F407

使用特权

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

本版积分规则

452

主题

2748

帖子

38

粉丝