打印
[其他ST产品]

【原创】ST评测+基于STM32G431的RTC电子时钟

[复制链接]
561|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 jinglixixi 于 2020-12-11 12:55 编辑

STM32G431内部配置有RTC计时器,将它与OLED屏配合即可实现一个电子时钟。

实现图1所示效果的主程序为:
int main(void)
{
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* Configure the system clock */
SystemClock_Config();
GPIO_OLED_INIT();
OLED_Init();
OLED_Clear();
OLED_ShowString(18,0,"STM32G431",16);
OLED_ShowString(10,2,"OLED & RTC",16);
/* Initialize all configured peripherals */
MX_RTC_Init();
RTCStatus = 1;
while (1)
{
/* Display the updated Time and Date */
RTC_CalendarShow(aShowTime, aShowDate);
Delay(200);
}
}
                              
1  RTC电子时钟

实现RTC显示的函数为:
static void RTC_CalendarShow(uint8_t *showtime, uint8_t *showdate)
{
RTC_DateTypeDef sdatestructureget;
RTC_TimeTypeDef stimestructureget;
/* Get the RTC current Time */
HAL_RTC_GetTime(&hrtc, &stimestructureget, RTC_FORMAT_BIN);
/* Get the RTC current Date */
HAL_RTC_GetDate(&hrtc, &sdatestructureget, RTC_FORMAT_BIN);
/* Display time Format : hh:mm:ss */
sprintf((char *)showtime, "%2d:%2d:%2d", stimestructureget.Hours, stimestructureget.Minutes, stimestructureget.Seconds);
OLED_ShowString(26,6,showtime,16);
/* Display date Format : mm-dd-yy */
sprintf((char *)showdate, "%2d-%2d-%2d", 2000 + sdatestructureget.Year,sdatestructureget.Month, sdatestructureget.Date);
OLED_ShowString(10,4,showdate,16);
}

调用的字符串显示函数为:
void OLED_ShowString(u8 x,u8 y,u8 *chr,u8 Char_Size)
{
    unsigned char j=0;
    while (chr[j]!='\0')
    {       OLED_ShowChar(x,y,chr[j],Char_Size);
            x+=8;
            if(x>120){x=0;y+=2;}
            j++;
    }
}

由于例程所设置的初始时间是2018年,故需要在函数 MX_RTC_Init()中进行修改,修改后的运行效果如图2所示。

2  校时后的显示效果

使用特权

评论回复
沙发
chenqianqian| | 2020-12-11 12:28 | 只看该作者
不错,感谢楼主分享。

使用特权

评论回复
板凳
jinglixixi|  楼主 | 2020-12-11 12:43 | 只看该作者
chenqianqian 发表于 2020-12-11 12:28
不错,感谢楼主分享。

多谢支持!!!

使用特权

评论回复
地板
刚看见小妲鸡| | 2021-3-21 10:05 | 只看该作者

楼主我想问你一个问题    怎么样在LCD里添加文件  我想加一个串口 .c  .h  他就报错  不和f4一样   这让我很是困惑

使用特权

评论回复
5
刚看见小妲鸡| | 2021-3-21 10:11 | 只看该作者
刚看见小妲** 发表于 2021-3-21 10:05
楼主我想问你一个问题    怎么样在LCD里添加文件  我想加一个串口 .c  .h  他就报错  不和f4一样   这让 ...

学长 留个联系方式吧  vx    17744411514

使用特权

评论回复
6
刚看见小妲鸡| | 2021-3-21 10:13 | 只看该作者
真心迫切的希望加个好友  让你教我一个这个芯片的使用

使用特权

评论回复
7
jinglixixi|  楼主 | 2021-3-21 16:46 | 只看该作者
刚看见小妲** 发表于 2021-3-21 10:05
楼主我想问你一个问题    怎么样在LCD里添加文件  我想加一个串口 .c  .h  他就报错  不和f4一样   这让 ...

在main的主文件头部用include引入*.h,再在项目列表中导入*.c即可。实在嫌麻烦的话,直接把使用的*.c中的函数放在 main主文件中以函数调用也可。

使用特权

评论回复
8
jinglixixi|  楼主 | 2021-3-21 16:50 | 只看该作者
刚看见小妲** 发表于 2021-3-21 10:13
真心迫切的希望加个好友  让你教我一个这个芯片的使用

这个找本C语言的书看看便会,因多个项目在身,就不便用时多谈了。

使用特权

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

本版积分规则

446

主题

2678

帖子

37

粉丝