1241|1

1514

帖子

1

TA的资源

五彩晶圆(初级)

楼主
 

[N32WB031_STB开发板测评]+RTC计时与显示 [复制链接]

本帖最后由 jinglixixi 于 2023-5-9 23:58 编辑

N32WB031内置了RTC计时器,并具有日历处理功能,因此在OLED屏的配合下极易实现电子时钟的功能。

在使用例程的基础上,所用的关键函数为获取RTC计时值的函数RTC_GetTime()及OLED屏的数值显示函数OLED_ShowNum()。

其中OLED屏的数值显示函数为:

void OLED_ShowNum(uint8_t x,uint8_t y,uint32_t num,uint8_t len,uint8_t size2)
{
    uint8_t t,temp;
    uint8_t enshow=0;
    for(t=0;t<len;t++)
    {
        temp=(num/oled_pow(10,len-t-1))%10;
        if(enshow==0&&t<(len-1))
        {
            if(temp==0)
            {
                OLED_ShowChar(x+(size2/2)*t,y,' ',size2);
                continue;
            }
            else enshow=1;
        }
        OLED_ShowChar(x+(size2/2)*t,y,temp+'0',size2);
    }
}

相应的RTC计时值显示函数为:

void RTC_TimeShow(void)
{
    RTC_GetTime(RTC_FORMAT_BIN, &RTC_TimeStructure); 
    (void)RTC->DATE;
    OLED_ShowNum(20,4,RTC_TimeStructure.Hours,2,16);
	OLED_ShowNum(44,4,RTC_TimeStructure.Minutes,2,16);
	OLED_ShowNum(68,4,RTC_TimeStructure.Seconds,2,16);
    
}

显示效果

 

要实现上图的主函数为:

int main(void)
{
    log_init();
    log_info("\r\nRTC calendar demo\r\n");
    RTC_DateAndTimeDefaultVale();
    RTC_CLKSourceConfig(2);
    RTC_PrescalerConfig();
    log_info("RTC configured....");
    RTC_ConfigInt(RTC_INT_WUT, DISABLE);
    RTC_EnableWakeUp(DISABLE);
    RTC_DateRegulate();
    RTC_TimeRegulate();
    TIM3_Configuration();
	OLED_gpio();
	OLED_Init();
    OLED_Clear();
    OLED_ShowString(20,0,"N32WB031",16);
	OLED_ShowString(20,4,"  :  :",16);
	while(1);
}

 

此帖出自无线连接论坛

最新回复

问题的核心是把这两个为获取RTC计时值的函数RTC_GetTime()及OLED屏的数值显示函数OLED_ShowNum()函数搞熟练,,,   详情 回复 发表于 2023-5-10 07:28
点赞(1) 关注
 

回复
举报

6809

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

问题的核心是把这两个为获取RTC计时值的函数RTC_GetTime()及OLED屏的数值显示函数OLED_ShowNum()函数搞熟练,,,

此帖出自无线连接论坛
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
快速回复 返回顶部 返回列表