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

RTC设置24小时制,在中午12点59到13点的时候会变成1点

[复制链接]
NieYanLong 提问时间:2024-10-28 09:54 / 未解决

image.pngRTC设置完时间之后,开始运行,从12:59到13:00的时候,会变成1:007fd94f57e1f30d5ee904fa8b88453aec.mp4

收藏 评论6 发布时间:2024-10-28 09:54

举报

6个回答
xmshao 回答时间:2024-10-28 11:40:01
.
xmshao 回答时间:2024-10-28 11:52:01
哦,你是早期标准库,有个配置你注意下,看看是否这样配置的:


RTC_InitStructure.RTC_HourFormat   = RTC_HourFormat_24;

rrr.png
NieYanLong 回答时间:2024-10-28 15:07:30

xmshao 发表于 2024-10-28 11:52
哦,你是早期标准库,有个配置你注意下,看看是否这样配置的:</p>
<p>

您好,我用的是HAL库,不是标准库的

NieYanLong 回答时间:2024-10-28 15:08:55

image.png这是我的初始化函数,我这边使用的是HAL库,不是标准库

image.png
xmshao 回答时间:2024-10-28 16:36:10

NieYanLong 发表于 2024-10-28 15:08
![image.png](data/attachment/forum/202410/28/150928hfk7i71mfmiczgmc.png?imageMogr2/auto-orient/s ...

[md]哦,可能写法上导致误会了。

使用CubeMx和HAL库就方便了。稍加配置即可验证的。

这是我的配置:

static void MX_RTC_Init(void) {

/ USER CODE BEGIN RTC_Init 0 /

/ USER CODE END RTC_Init 0 /

RTC_TimeTypeDef sTime = {0}; RTC_DateTypeDef sDate = {0};

/ USER CODE BEGIN RTC_Init 1 /

/ USER CODE END RTC_Init 1 /

/* Initialize RTC Only / hrtc.Instance = RTC; hrtc.Init.HourFormat = RTC_HOURFORMAT_24; hrtc.Init.AsynchPrediv = 127; hrtc.Init.SynchPrediv = 255; hrtc.Init.OutPut = RTC_OUTPUT_DISABLE; hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH; hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN; if (HAL_RTC_Init(&hrtc) != HAL_OK)

{ Error_Handler(); }

/ USER CODE BEGIN Check_RTC_BKUP /

/ USER CODE END Check_RTC_BKUP /

/* Initialize RTC and set the Time and Date / sTime.Hours = 0x12; sTime.Minutes = 0x58; sTime.Seconds = 0x50; sTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE; sTime.StoreOperation = RTC_STOREOPERATION_RESET; if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BCD) != HAL_OK) { Error_Handler(); } sDate.WeekDay = RTC_WEEKDAY_MONDAY; sDate.Month = RTC_MONTH_OCTOBER; sDate.Date = 0x28; sDate.Year = 0x24;

if (HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BCD) != HAL_OK) { Error_Handler(); }

/* Enable Calibrartion / if (HAL_RTCEx_SetCalibrationOutPut(&hrtc, RTC_CALIBOUTPUT_1HZ) != HAL_OK) { Error_Handler(); } / USER CODE BEGIN RTC_Init 2 /

/ USER CODE END RTC_Init 2 /

}

这个地方贴代码似乎有点不方便,有点乱。我选择的BCD格式显示:

image.png

你在Printf那个地方别出错了。

当然,选择BCD显示格式也可以:

image.png

NieYanLong 回答时间:2024-10-29 09:12:56

xmshao 发表于 2024-10-28 16:36</p>
<p>[md]哦,可能写法上导致误会了。

好的,我试一下,谢谢

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