Skip to content

Commit e56cca7

Browse files
committed
fix
1 parent 9ee843a commit e56cca7

2 files changed

Lines changed: 16 additions & 27 deletions

File tree

bsp/gd32/arm/libraries/gd32_drivers/drv_rtc.c

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -25,19 +25,19 @@ typedef struct {
2525
static 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
*/
3232
static 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
*/
4242
static 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

bsp/gd32/arm/libraries/gd32_drivers/drv_usart_v2.c

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -602,23 +602,19 @@ void DMA_Channel1_2_IRQHandler(void)
602602
/* enter interrupt */
603603
rt_interrupt_enter();
604604

605-
// 检查是否是 Channel 1 (TX) 的传输完成中断
606605
if (dma_interrupt_flag_get(DMA_CH1, DMA_INT_FLAG_FTF) != RESET)
607606
{
608607
dma_interrupt_flag_clear(DMA_CH1, DMA_INT_FLAG_G);
609608
dma_tx_isr(&uart_obj[UART0_INDEX].serial);
610609
}
611610

612-
// 检查是否是 Channel 2 (RX) 的半传输或全传输中断
613611
if (dma_interrupt_flag_get(DMA_CH2, DMA_INT_FLAG_HTF) != RESET)
614612
{
615-
// 清除所有相关标志位
616613
dma_interrupt_flag_clear(DMA_CH2, DMA_INT_FLAG_HTF);
617614
dma_recv_isr(&uart_obj[UART0_INDEX].serial);
618615
}
619616
else if (dma_interrupt_flag_get(DMA_CH2, DMA_INT_FLAG_FTF) != RESET)
620617
{
621-
// 清除所有相关标志位
622618
dma_interrupt_flag_clear(DMA_CH2, DMA_INT_FLAG_FTF);
623619
dma_recv_isr(&uart_obj[UART0_INDEX].serial);
624620
}
@@ -650,22 +646,20 @@ void DMA_Channel3_4_IRQHandler(void)
650646
{
651647
rt_interrupt_enter();
652648

653-
// 检查是否是 Channel 3 (TX) 的传输完成中断
654649
if (dma_interrupt_flag_get(DMA_CH3, DMA_INT_FLAG_FTF) != RESET)
655650
{
656-
dma_interrupt_flag_clear(DMA_CH3, DMA_INT_FLAG_G); // 清除所有相关标志位
651+
dma_interrupt_flag_clear(DMA_CH3, DMA_INT_FLAG_G);
657652
dma_tx_isr(&uart_obj[UART1_INDEX].serial);
658653
}
659654

660-
// 检查是否是 Channel 4 (RX) 的半传输或全传输中断
661655
if (dma_interrupt_flag_get(DMA_CH4, DMA_INT_FLAG_HTF) != RESET)
662656
{
663-
dma_interrupt_flag_clear(DMA_CH4, DMA_INT_FLAG_HTF); // 清除所有相关标志位
657+
dma_interrupt_flag_clear(DMA_CH4, DMA_INT_FLAG_HTF);
664658
dma_recv_isr(&uart_obj[UART1_INDEX].serial);
665659
}
666660
if (dma_interrupt_flag_get(DMA_CH4, DMA_INT_FLAG_FTF) != RESET)
667661
{
668-
dma_interrupt_flag_clear(DMA_CH4, DMA_INT_FLAG_FTF); // 清除所有相关标志位
662+
dma_interrupt_flag_clear(DMA_CH4, DMA_INT_FLAG_FTF);
669663
dma_recv_isr(&uart_obj[UART1_INDEX].serial);
670664
}
671665

@@ -1017,7 +1011,6 @@ static void gd32_dma_config (struct rt_serial_device *serial, rt_ubase_t flag)
10171011
dma_init_struct.direction = DMA_MEMORY_TO_PERIPHERAL;
10181012
dma_init_struct.priority = DMA_PRIORITY_HIGH;
10191013

1020-
/* 4. 使用结构体初始化DMA通道 */
10211014
dma_init(uart->dma.tx.channel, &dma_init_struct);
10221015

10231016
/* enable tx dma interrupt */

0 commit comments

Comments
 (0)