@@ -25,19 +25,19 @@ typedef struct {
2525static gd32_rtc_device g_gd32_rtc_dev ;
2626
2727/**
28- * @brief 辅助函数:BCD码 转换为 二进制 .
29- * @param val: BCD码值 .
30- * @return 二进制值 .
28+ * @brief Helper function: Convert BCD value to binary .
29+ * @param val: BCD value .
30+ * @return Binary value .
3131 */
3232static rt_uint8_t bcd_to_bin (rt_uint8_t val )
3333{
3434 return (val & 0x0F ) + ((val >> 4 ) & 0x0F ) * 10 ;
3535}
3636
3737/**
38- * @brief 辅助函数:二进制 转换为 BCD码 .
39- * @param val: 二进制值 .
40- * @return BCD码值 .
38+ * @brief Helper function: Convert binary to BCD .
39+ * @param val: Binary value .
40+ * @return BCD value .
4141 */
4242static rt_uint8_t bin_to_bcd (rt_uint8_t val )
4343{
@@ -52,8 +52,8 @@ static time_t get_rtc_timestamp(void)
5252
5353 rtc_current_time_get (& rtc_current_time );
5454
55- tm_new .tm_year = bcd_to_bin (rtc_current_time .rtc_year ) + 100 ; // tm_year 是从1900年开始的年份
56- tm_new .tm_mon = bcd_to_bin (rtc_current_time .rtc_month ) - 1 ; // tm_mon 是 0- 11 的月份
55+ tm_new .tm_year = bcd_to_bin (rtc_current_time .rtc_year ) + 100 ; // tm_year: years since 1900
56+ tm_new .tm_mon = bcd_to_bin (rtc_current_time .rtc_month ) - 1 ; // tm_mon: month (0 = January, 11 = December)
5757 tm_new .tm_mday = bcd_to_bin (rtc_current_time .rtc_date );
5858 tm_new .tm_hour = bcd_to_bin (rtc_current_time .rtc_hour );
5959 tm_new .tm_min = bcd_to_bin (rtc_current_time .rtc_minute );
@@ -75,40 +75,36 @@ static rt_err_t set_rtc_timestamp(time_t time_stamp)
7575 struct tm * p_tm ;
7676 rtc_parameter_struct rtc_init_struct ;
7777
78- /* 将time_t时间戳转换为tm结构体 */
7978 p_tm = gmtime (& time_stamp );
80- /* GD32的RTC年份从2000年算起,所以tm_year必须大于等于100 (2000-1900) */
79+
80+ /* GD32 RTC uses year starting from 2000; thus tm_year must be at least 100 (i.e., 2000 - 1900) */
81+
8182 if (p_tm -> tm_year < 100 )
8283 {
8384 return - RT_ERROR ;
8485 }
8586
86- /* 使用tm结构体中的值,转换为BCD码并填充GD32的RTC初始化结构体 */
8787 rtc_init_struct .rtc_year = bin_to_bcd (p_tm -> tm_year - 100 );
8888 rtc_init_struct .rtc_month = bin_to_bcd (p_tm -> tm_mon + 1 );
8989 rtc_init_struct .rtc_date = bin_to_bcd (p_tm -> tm_mday );
90- /* tm_wday的周日是0,而GD32的RTC周日是7 */
90+
9191 rtc_init_struct .rtc_day_of_week = bin_to_bcd (p_tm -> tm_wday == 0 ? 7 : p_tm -> tm_wday );
9292 rtc_init_struct .rtc_hour = bin_to_bcd (p_tm -> tm_hour );
9393 rtc_init_struct .rtc_minute = bin_to_bcd (p_tm -> tm_min );
9494 rtc_init_struct .rtc_second = bin_to_bcd (p_tm -> tm_sec );
9595 rtc_init_struct .rtc_display_format = RTC_24HOUR ;
9696
97- /* 对于GD32E23x,预分频器值必须在初始化时一并设置 */
9897#if defined(BSP_RTC_USING_LSI )
99- /* 使用内部40KHz低速时钟IRC40K时的预分频参数 */
10098 rtc_init_struct .rtc_factor_asyn = 39 ;
10199 rtc_init_struct .rtc_factor_syn = 999 ;
102100#elif defined(BSP_RTC_USING_LSE )
103- /* 使用外部32.768KHz低速晶振LXTAL时的预分频参数 */
104101 rtc_init_struct .rtc_factor_asyn = 127 ;
105102 rtc_init_struct .rtc_factor_syn = 255 ;
106103#endif
107104
108- /* 调用固件库函数来初始化RTC并设置时间 */
109105 if (rtc_init (& rtc_init_struct ) != SUCCESS )
110106 {
111- LOG_E ("RTC时间设置失败。 " );
107+ LOG_E ("Failed to set RTC time. " );
112108 return - RT_ERROR ;
113109 }
114110
0 commit comments