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

基于STM32G431的RTC电子时钟

[复制链接]
jinglixixi 发布时间:2020-12-11 11:04
STM32G431内部配置有RTC计时器,将它与OLED屏配合即可实现一个电子时钟。
% J7 Z2 O% a  y  l1 L
实现图1所示效果的主程序为:
  1. int main(void)5 [2 W) r, }2 k% |/ S" l8 H' w
  2. {
      v0 h% c. |& j. b: E' |
  3. /* Reset of all peripherals, Initializes the Flash interface and the Systick. */. _/ Q9 N" ^( ~6 S8 c
  4. HAL_Init();3 U: D# C4 Z2 b0 M( q! J' [) v
  5. /* Configure the system clock */  l6 ?9 \- G% D5 Z
  6. SystemClock_Config();
      D3 N8 u! M2 u8 [# D+ a0 N5 N9 i
  7. GPIO_OLED_INIT();
    5 x: S7 G7 R5 q$ ?
  8. OLED_Init();# H: U% g7 X! c. O. d
  9. OLED_Clear();
    4 w8 \/ Y% y" J$ I* @: o, e
  10. OLED_ShowString(18,0,"STM32G431",16);; c% a& g6 C) S7 K
  11. OLED_ShowString(10,2,"OLED & RTC",16);
    * o0 W- f& A) \* a+ X
  12. /* Initialize all configured peripherals */
    2 o9 R. H. J1 C) }
  13. MX_RTC_Init();3 N5 X+ m3 f! {0 T( x
  14. RTCStatus = 1;4 s; d- D6 e+ J& Y5 Y6 }
  15. while (1)
    0 ]4 G3 {' ~0 c* b4 ^2 e
  16. {; o% z% Y" p, t6 Q; |
  17. /* Display the updated Time and Date */
    3 X+ t7 {$ [* v9 a8 ~( z% D
  18. RTC_CalendarShow(aShowTime, aShowDate);
    3 M& I+ A- v: a/ E9 f  v) j. L
  19. Delay(200);! t2 Y" z$ v4 I! o0 ^" I
  20. }' x) p- Q) O! K
  21. }
复制代码
1.jpg
                              
1  RTC电子时钟

& m2 z6 h$ S, Y( H, ^4 y
实现RTC显示的函数为:
  1. static void RTC_CalendarShow(uint8_t *showtime, uint8_t *showdate)
    % k/ l4 I% M7 O! y# v( g0 P
  2. {! f. T! K5 Y7 E. [' B
  3. RTC_DateTypeDef sdatestructureget;5 m; A, c+ c% W' T
  4. RTC_TimeTypeDef stimestructureget;
    . c! {' ?! K' K3 k1 ^1 }8 B+ a' x
  5. /* Get the RTC current Time */+ B  Y" E' j4 E# h; P
  6. HAL_RTC_GetTime(&hrtc, &stimestructureget, RTC_FORMAT_BIN);
    ( |" M# D# K4 O; s' n0 n
  7. /* Get the RTC current Date */
    9 n% R$ C3 [* Z0 K+ m( ]% h
  8. HAL_RTC_GetDate(&hrtc, &sdatestructureget, RTC_FORMAT_BIN);% v6 U1 ]/ e$ v: C
  9. /* Display time Format : hh:mm:ss */1 Q  q6 e2 F( y6 T0 b
  10. sprintf((char *)showtime, "%2d:%2d:%2d", stimestructureget.Hours, stimestructureget.Minutes, stimestructureget.Seconds);
    : }8 P" t4 d1 }% B: G/ Q" ~
  11. OLED_ShowString(26,6,showtime,16);
    - M, c( g" C9 b! a: ?
  12. /* Display date Format : mm-dd-yy */' b( D* s* l; V$ F; N
  13. sprintf((char *)showdate, "%2d-%2d-%2d", 2000 + sdatestructureget.Year,sdatestructureget.Month, sdatestructureget.Date);
    % T1 H* [' M7 _+ [
  14. OLED_ShowString(10,4,showdate,16);
    & `7 T8 G9 ]2 A
  15. }
复制代码

4 A( y' Y/ T4 X1 u* D: _
调用的字符串显示函数为:
  1. void OLED_ShowString(u8 x,u8 y,u8 *chr,u8 Char_Size)/ X& I. {+ A* j/ W
  2. {
    " G/ b# U8 t% Q& Z! U/ p
  3.     unsigned char j=0;' |( }" b; Y# q
  4.     while (chr[j]!='\0'): t1 I0 ]3 l: Q+ i
  5.     {       OLED_ShowChar(x,y,chr[j],Char_Size);7 P7 E" O) r4 h$ H5 t2 x$ a
  6.             x+=8;
    / m$ F  C- s7 J" u0 z6 r6 F
  7.             if(x>120){x=0;y+=2;}* m0 d$ N+ C5 W, l1 s" s1 U3 X2 v
  8.             j++;
    3 K% S6 z/ I4 W3 ^2 v
  9.     }+ K0 w+ P; f/ O0 j6 }  K* J: ]2 Y
  10. }
复制代码
7 P, j6 t! \6 T) l1 x
由于例程所设置的初始时间是2018年,故需要在函数 MX_RTC_Init()中进行修改,修改后的运行效果如图2所示。
2.jpg

# o& v% N% ?# `  O  c
2  校时后的显示效果
* n0 J8 }' \% y5 |, s
收藏 评论5 发布时间:2020-12-11 11:04

举报

5个回答
网络孤客 回答时间:2020-12-11 12:03:37
看看时间准吗。( B3 l* T# e( t
有空我也玩玩。
jinglixixi 回答时间:2020-12-11 12:52:27
ldptest 发表于 2020-12-11 12:03
0 \/ w8 \9 C$ x% v+ B  G4 [& ^看看时间准吗。. z9 m# N9 E# d& V
有空我也玩玩。
7 g; S+ |$ i- j- c# `3 e
计时尚可,长时间的误差可能会明显点儿。
Kevin_G 回答时间:2020-12-13 10:17:35
楼主,上源码
radio2radio 回答时间:2020-12-13 14:38:10
楼主,G431的RTC,有没有自动万年历功能?
* `% `: m  ~$ u) R就是11月31日会不会自动进入12月1日,还有闰年修正等。
* [  }# o7 G! A+ M- R; e
jinglixixi 回答时间:2020-12-13 18:20:38
radio2radio 发表于 2020-12-13 14:382 P" Z0 e* B1 |( J% u- |
楼主,G431的RTC,有没有自动万年历功能?. p, i5 C' L: M# C" M( Y# u
就是11月31日会不会自动进入12月1日,还有闰年修正等。& J" d8 ~- U# A9 L, R8 v9 ~9 O
...
- o: z, q* l3 f+ e9 }
我给你测了下,两者都没有问题。

所属标签

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