你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于STM32G431的RTC电子时钟

[复制链接]
jinglixixi 发布时间:2020-12-11 11:04
STM32G431内部配置有RTC计时器,将它与OLED屏配合即可实现一个电子时钟。

0 ^" S2 T+ q- X5 a, x6 o
实现图1所示效果的主程序为:
  1. int main(void)) v9 {3 E" g# Z3 D1 j/ O' L
  2. {
      k+ k1 x/ f" q9 J1 L3 f
  3. /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
    ! f5 w9 R; K1 {% P# Q) H
  4. HAL_Init();
    " f7 J$ `( u2 @
  5. /* Configure the system clock */: i; {; ~  b! q4 Z  t4 X" A: c
  6. SystemClock_Config();
    " U  z$ B% L6 y4 H9 e
  7. GPIO_OLED_INIT();2 i* V0 e( t1 t! U9 y# \7 I* h
  8. OLED_Init();
    6 V- ^# a' I& `, |" E8 w
  9. OLED_Clear();
    ) b5 c1 m6 K  ~# K  x5 R1 I
  10. OLED_ShowString(18,0,"STM32G431",16);
    * N6 d- U- u( u6 C  S
  11. OLED_ShowString(10,2,"OLED & RTC",16);5 E% `5 ~6 i! {. o! E
  12. /* Initialize all configured peripherals */+ R3 i" O" T0 i1 ^& X) @
  13. MX_RTC_Init();- E2 d3 ]# Y* w. c
  14. RTCStatus = 1;
    ; T1 c  O9 ^) f  G( o7 z
  15. while (1)% K5 H  T9 w$ `( q/ d
  16. {
    ! S. b0 u2 T* w; s. l
  17. /* Display the updated Time and Date */
    + b* T1 K! r* s, O, w
  18. RTC_CalendarShow(aShowTime, aShowDate);# R" n' D8 Z- T, G" y( }8 e
  19. Delay(200);/ m1 K7 u% M. U3 _2 w1 R
  20. }
    & f  E7 _5 s% ~5 {, H
  21. }
复制代码
1.jpg
                              
1  RTC电子时钟
1 p7 J2 p2 x0 T: x- ^/ ]$ o8 X- K
实现RTC显示的函数为:
  1. static void RTC_CalendarShow(uint8_t *showtime, uint8_t *showdate)8 m) y& z+ K# H3 J4 h7 S. U( J
  2. {
    3 j/ `- A6 K- B7 h. s
  3. RTC_DateTypeDef sdatestructureget;
    / c4 }/ c, D( M6 V) d2 x
  4. RTC_TimeTypeDef stimestructureget;" y7 t: X# ^: s" F
  5. /* Get the RTC current Time */0 G  n8 S. U# a6 E7 @8 W' Q
  6. HAL_RTC_GetTime(&hrtc, &stimestructureget, RTC_FORMAT_BIN);
    ; W$ |! ?+ S! {3 l2 t: Y( }6 G
  7. /* Get the RTC current Date */
    6 b, n8 S8 V+ l
  8. HAL_RTC_GetDate(&hrtc, &sdatestructureget, RTC_FORMAT_BIN);8 a4 c! R7 e1 g; [/ s2 s2 t
  9. /* Display time Format : hh:mm:ss */& j/ z  C- _  f0 K, Z; W
  10. sprintf((char *)showtime, "%2d:%2d:%2d", stimestructureget.Hours, stimestructureget.Minutes, stimestructureget.Seconds);$ T" e! N1 T( p" R2 U( w9 f; X. S
  11. OLED_ShowString(26,6,showtime,16);0 m: q- ^% V( E
  12. /* Display date Format : mm-dd-yy */- z3 L, Q4 @$ M5 x, q4 O/ m
  13. sprintf((char *)showdate, "%2d-%2d-%2d", 2000 + sdatestructureget.Year,sdatestructureget.Month, sdatestructureget.Date);
    3 B' E- S0 P5 p+ S/ S
  14. OLED_ShowString(10,4,showdate,16);
    $ M# T3 l( P7 F$ k
  15. }
复制代码

$ y5 L/ a- v8 Y7 y+ ^- D2 Q1 D- H" J6 ~
调用的字符串显示函数为:
  1. void OLED_ShowString(u8 x,u8 y,u8 *chr,u8 Char_Size)! @9 J, ^& O, O9 K5 a0 ~  R! `
  2. {
    & k, j- {$ X2 I4 Z/ j- a
  3.     unsigned char j=0;
    7 F- t: I) V0 d
  4.     while (chr[j]!='\0')
    ; e; _0 J9 f& C4 A# ]6 D
  5.     {       OLED_ShowChar(x,y,chr[j],Char_Size);
    ! J! `5 w/ p! }6 A
  6.             x+=8;
    9 g, y3 j7 J( V6 E7 E
  7.             if(x>120){x=0;y+=2;}
    & C8 R; N3 V: W$ _# e
  8.             j++;* P8 |" P  [4 _: Z) S+ L$ z
  9.     }; M% k8 K! J. Z# H
  10. }
复制代码
/ V1 S3 _1 q& {% [) w
由于例程所设置的初始时间是2018年,故需要在函数 MX_RTC_Init()中进行修改,修改后的运行效果如图2所示。
2.jpg
8 [7 Q. b" g' |! s4 T* t7 a
2  校时后的显示效果

; P2 Y) ?; I0 U2 }( S! L
收藏 评论5 发布时间:2020-12-11 11:04

举报

5个回答
网络孤客 回答时间:2020-12-11 12:03:37
看看时间准吗。6 M1 L7 ]( }2 B0 ]# V
有空我也玩玩。
jinglixixi 回答时间:2020-12-11 12:52:27
ldptest 发表于 2020-12-11 12:034 O# [. V# {# v" a( ^4 J
看看时间准吗。* a( Z* \0 d& T6 `1 l: h
有空我也玩玩。

2 r( O" q, `8 _" Q+ ^# Y计时尚可,长时间的误差可能会明显点儿。
Kevin_G 回答时间:2020-12-13 10:17:35
楼主,上源码
radio2radio 回答时间:2020-12-13 14:38:10
楼主,G431的RTC,有没有自动万年历功能?# ]; @6 ^- B$ R" ]5 R3 D- J
就是11月31日会不会自动进入12月1日,还有闰年修正等。7 t3 z4 R: R4 h, h( D
jinglixixi 回答时间:2020-12-13 18:20:38
radio2radio 发表于 2020-12-13 14:38; b) `2 L# o- G" S
楼主,G431的RTC,有没有自动万年历功能?' p: N" }% K' R2 t
就是11月31日会不会自动进入12月1日,还有闰年修正等。
4 M( m8 C' b" {, | ...
: ?3 ^% l& h- N' G& K* ~6 k0 S
我给你测了下,两者都没有问题。

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版