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

基于STM32G431的RTC电子时钟

[复制链接]
jinglixixi 发布时间:2020-12-11 11:04
STM32G431内部配置有RTC计时器,将它与OLED屏配合即可实现一个电子时钟。
. ?8 i! c8 W$ ]' v
实现图1所示效果的主程序为:
  1. int main(void)5 D: g" f4 K+ }2 @
  2. {4 l7 B9 R& O  [: l
  3. /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
    / J" i  `9 @3 M5 M  T
  4. HAL_Init();9 h8 a! O2 r$ g5 x7 q$ M' M5 J. u
  5. /* Configure the system clock */
    & {, n% x) u5 W7 S
  6. SystemClock_Config();  o! V- j9 r* h# m, x
  7. GPIO_OLED_INIT();; J5 S; g. Y: `8 W
  8. OLED_Init();
    6 z/ N2 r. B  c! _. A" y
  9. OLED_Clear();
    ' R. T& s! e6 M5 o
  10. OLED_ShowString(18,0,"STM32G431",16);
    ; S& l/ X1 x. t6 I$ j+ _
  11. OLED_ShowString(10,2,"OLED & RTC",16);  s9 A$ G0 g0 w( N" U
  12. /* Initialize all configured peripherals */
    ( J3 W9 E7 ?! C3 p
  13. MX_RTC_Init();9 ~3 Y2 w5 L/ C: p
  14. RTCStatus = 1;
    5 K9 f6 V2 l1 i6 J
  15. while (1)% I$ C$ N, F7 ~( O
  16. {3 n2 k8 i- l7 Z0 l7 j: H% w: k( ?
  17. /* Display the updated Time and Date */5 I& A9 y. Q. {. b
  18. RTC_CalendarShow(aShowTime, aShowDate);) K& ?3 P( a; z) n
  19. Delay(200);
    8 j- _, G5 E' z- }/ z) e
  20. }
    , m" y% l, b( U. t# s: [$ @
  21. }
复制代码
1.jpg
                              
1  RTC电子时钟
) F, \0 c2 g' q* {: a/ s' g$ Q
实现RTC显示的函数为:
  1. static void RTC_CalendarShow(uint8_t *showtime, uint8_t *showdate)' a5 S- |2 ?3 C  |- m; Q
  2. {
    5 V" S' l7 Q, u
  3. RTC_DateTypeDef sdatestructureget;( w# {$ Q& P4 d. X) p3 |
  4. RTC_TimeTypeDef stimestructureget;
    4 e: e1 Z8 y0 O9 v, Z
  5. /* Get the RTC current Time */7 e& _' z1 G8 R4 ~" V6 A, m
  6. HAL_RTC_GetTime(&hrtc, &stimestructureget, RTC_FORMAT_BIN);. O; y2 U* s5 I( x( a
  7. /* Get the RTC current Date */# H0 w4 u8 s2 Y$ \$ P) {
  8. HAL_RTC_GetDate(&hrtc, &sdatestructureget, RTC_FORMAT_BIN);' {) s0 A) s, S5 x0 @: p
  9. /* Display time Format : hh:mm:ss */
    ) r- o- }" x# Q1 }7 m
  10. sprintf((char *)showtime, "%2d:%2d:%2d", stimestructureget.Hours, stimestructureget.Minutes, stimestructureget.Seconds);! P  r5 d, Q: D! o8 @
  11. OLED_ShowString(26,6,showtime,16);
    : Q0 ^% e5 @0 S, t/ F0 _
  12. /* Display date Format : mm-dd-yy */
    + r4 ~& Z$ |6 _7 g8 P2 }3 K3 Q
  13. sprintf((char *)showdate, "%2d-%2d-%2d", 2000 + sdatestructureget.Year,sdatestructureget.Month, sdatestructureget.Date);
    % Q; l: x; ~: M, u  U
  14. OLED_ShowString(10,4,showdate,16);
    ; Q# u4 _. v+ h4 u9 `
  15. }
复制代码

: l& }3 y9 Q# ?" m9 x& {
调用的字符串显示函数为:
  1. void OLED_ShowString(u8 x,u8 y,u8 *chr,u8 Char_Size)/ i6 M; L! N% o- C: p# J
  2. {9 p! }4 _. q0 A
  3.     unsigned char j=0;
    ; }  f# Z1 n1 [, f6 V  j5 K
  4.     while (chr[j]!='\0')" x0 z  ]7 m' D0 t) \
  5.     {       OLED_ShowChar(x,y,chr[j],Char_Size);
    $ I6 b3 n( `% E% k7 o
  6.             x+=8;, N2 o* D; V7 V+ K: L& M
  7.             if(x>120){x=0;y+=2;}3 f- V+ k1 r" g. m2 i. w1 Z. i
  8.             j++;
    , v2 F6 {# y) V4 Q1 o6 l, F4 k
  9.     }9 D  d9 ^, r9 c7 c6 F) ~& J7 O+ M1 j+ @
  10. }
复制代码

3 r4 h2 P0 k  t1 Z. `
由于例程所设置的初始时间是2018年,故需要在函数 MX_RTC_Init()中进行修改,修改后的运行效果如图2所示。
2.jpg

1 T9 H4 V2 s7 {$ s1 I! O8 h2 {
2  校时后的显示效果

4 Y! Y7 s  }# w- H( P7 T- a
收藏 评论5 发布时间:2020-12-11 11:04

举报

5个回答
网络孤客 回答时间:2020-12-11 12:03:37
看看时间准吗。
  i. Z6 @. k8 T; [: c9 O9 y有空我也玩玩。
jinglixixi 回答时间:2020-12-11 12:52:27
ldptest 发表于 2020-12-11 12:03+ C1 o3 [# l- V  a
看看时间准吗。
# O0 D/ m7 Q0 U% Z! c有空我也玩玩。
' e% M! l* O& x- |6 E
计时尚可,长时间的误差可能会明显点儿。
Kevin_G 回答时间:2020-12-13 10:17:35
楼主,上源码
radio2radio 回答时间:2020-12-13 14:38:10
楼主,G431的RTC,有没有自动万年历功能?
' ?" ~7 ^' Y2 z就是11月31日会不会自动进入12月1日,还有闰年修正等。
% q: m2 ]8 @- N* M
jinglixixi 回答时间:2020-12-13 18:20:38
radio2radio 发表于 2020-12-13 14:38
( t' O# A; s- f, m; q8 ?楼主,G431的RTC,有没有自动万年历功能?
9 I( i0 E0 D. y' k- I就是11月31日会不会自动进入12月1日,还有闰年修正等。6 K- X, O% \2 l! o' g
...
: N* _5 J  T5 F* f9 R' z1 y6 _
我给你测了下,两者都没有问题。

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版