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

基于STM32G431的RTC电子时钟

[复制链接]
jinglixixi 发布时间:2020-12-11 11:04
STM32G431内部配置有RTC计时器,将它与OLED屏配合即可实现一个电子时钟。
. e' H9 {% l9 V1 {/ P
实现图1所示效果的主程序为:
  1. int main(void)
    ) C, {, V  K; h6 _+ M6 a4 t
  2. {+ `3 N( K2 h) j- C" u% {: K
  3. /* Reset of all peripherals, Initializes the Flash interface and the Systick. */% M' q/ m) B6 j) H0 U- \" [
  4. HAL_Init();
    ) o, u' E6 J2 H6 T4 F' e
  5. /* Configure the system clock */
    0 B7 p( `* Q) d
  6. SystemClock_Config();' M0 f- I( ]6 C8 I9 w/ F0 l
  7. GPIO_OLED_INIT();1 b* _9 I0 i) ?8 R: o# B2 u: {0 t
  8. OLED_Init();
    ) y* |% _7 ^9 C7 y% d7 V4 T1 x
  9. OLED_Clear();
    ! e9 B" d, W. g/ v
  10. OLED_ShowString(18,0,"STM32G431",16);
    1 ^! k9 J7 e, H7 C& v. s' O
  11. OLED_ShowString(10,2,"OLED & RTC",16);
      j6 J6 ]' _+ k4 H
  12. /* Initialize all configured peripherals */
    - q& n  L! u# @
  13. MX_RTC_Init();1 W2 ]( A  J% I3 y8 s2 O0 D
  14. RTCStatus = 1;
    8 `! k5 N$ O* p) b& }1 `8 t2 t) H
  15. while (1)/ a$ q+ B/ }* D9 r- Q6 S2 u
  16. {
    " A1 B3 Y+ H5 d$ s% \  N8 F
  17. /* Display the updated Time and Date */! X  a# z/ F2 P  x+ o2 e+ e
  18. RTC_CalendarShow(aShowTime, aShowDate);
    / ?# Q- r- {0 J, |- H
  19. Delay(200);
    ( _$ h7 e) x5 a7 t% P
  20. }
      R% ?  a( J$ r9 n6 z
  21. }
复制代码
1.jpg
                              
1  RTC电子时钟
, a2 T% [/ g( c; {( F" H
实现RTC显示的函数为:
  1. static void RTC_CalendarShow(uint8_t *showtime, uint8_t *showdate)
    ' c# }: L9 F4 P
  2. {
    0 ?* T! P* V- P( G! F
  3. RTC_DateTypeDef sdatestructureget;! }1 a1 c& S( k/ O8 X7 x
  4. RTC_TimeTypeDef stimestructureget;
    2 p3 n5 @& l" ^& m" l
  5. /* Get the RTC current Time */, l$ y( s6 M5 `- D
  6. HAL_RTC_GetTime(&hrtc, &stimestructureget, RTC_FORMAT_BIN);
    + X. m9 ^7 S0 N. ]! q5 w
  7. /* Get the RTC current Date */
    # i6 c" E7 H, H9 b" q9 ~
  8. HAL_RTC_GetDate(&hrtc, &sdatestructureget, RTC_FORMAT_BIN);
    9 R; [- L  b; i7 _4 f+ |" ~
  9. /* Display time Format : hh:mm:ss *// v* ]8 z; O) e' Q# ]
  10. sprintf((char *)showtime, "%2d:%2d:%2d", stimestructureget.Hours, stimestructureget.Minutes, stimestructureget.Seconds);
    / X! H/ `" z: c5 ^" z  D- K! d
  11. OLED_ShowString(26,6,showtime,16);
    ( x2 s4 g+ j' O3 y. o
  12. /* Display date Format : mm-dd-yy */
    4 K4 U: [( b5 Q& o
  13. sprintf((char *)showdate, "%2d-%2d-%2d", 2000 + sdatestructureget.Year,sdatestructureget.Month, sdatestructureget.Date);
    & P0 W" M7 g) K8 \! Z1 h0 R
  14. OLED_ShowString(10,4,showdate,16);1 A, O9 [% |$ k3 s8 d, f
  15. }
复制代码

; G/ Y  j9 x, D3 l- h  a& S
调用的字符串显示函数为:
  1. void OLED_ShowString(u8 x,u8 y,u8 *chr,u8 Char_Size): v1 E% s- x; ?  R  _
  2. {
    9 l. _: v! s+ u, t' \
  3.     unsigned char j=0;
    % Y. S. z/ |( b% G" s
  4.     while (chr[j]!='\0')7 ?( P" X& ^" h7 o4 j; z
  5.     {       OLED_ShowChar(x,y,chr[j],Char_Size);3 J# a( ]& c. O2 g7 k% ~  j$ F
  6.             x+=8;
    + i* B; h* M/ U6 L* e& Z6 b' o; D
  7.             if(x>120){x=0;y+=2;}# b7 R: e% T! q! p1 ?$ i' z' j
  8.             j++;
    6 L! N' e! v, G" ]0 f6 ]
  9.     }
    % R5 T5 i" p4 Z0 m1 K
  10. }
复制代码
' d+ E  g2 b% ?- y
由于例程所设置的初始时间是2018年,故需要在函数 MX_RTC_Init()中进行修改,修改后的运行效果如图2所示。
2.jpg

  d2 j+ v/ r: `. [. Q
2  校时后的显示效果
: \8 k/ X( u' x3 I/ i$ I; [0 y& k
收藏 评论5 发布时间:2020-12-11 11:04

举报

5个回答
网络孤客 回答时间:2020-12-11 12:03:37
看看时间准吗。( Q1 g5 V6 _$ E6 F7 W( M
有空我也玩玩。
jinglixixi 回答时间:2020-12-11 12:52:27
ldptest 发表于 2020-12-11 12:036 ]; Y4 Q9 y: e: [+ x
看看时间准吗。
, J# n+ ~# I+ G* ?" J5 ~+ e有空我也玩玩。
' d6 E; I) _5 e+ w) l0 U! Q
计时尚可,长时间的误差可能会明显点儿。
Kevin_G 回答时间:2020-12-13 10:17:35
楼主,上源码
radio2radio 回答时间:2020-12-13 14:38:10
楼主,G431的RTC,有没有自动万年历功能?$ D- l3 n- f) J! R6 U1 f
就是11月31日会不会自动进入12月1日,还有闰年修正等。* n$ ?' u+ S; O; q7 I  w
jinglixixi 回答时间:2020-12-13 18:20:38
radio2radio 发表于 2020-12-13 14:38
: O6 W# I1 Q% K; T7 G9 k楼主,G431的RTC,有没有自动万年历功能?: m; _: P" h% L, o
就是11月31日会不会自动进入12月1日,还有闰年修正等。2 q1 k) A2 r# Y. ?( L
...
; ~# z4 F, t6 W" d
我给你测了下,两者都没有问题。

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版