|
stm32cubemx生成的RTC工程,MX_RTC_Init();函数手动是能RTC-CNF位进行设置吗?如果用按键设置时间直接调用HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BCD);还需要进行别的手动设置吗? |
你没说芯片型号,不知你提到的RTC-CNF具体是个什么位。STM32系列太多了。 你如果通过调用HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BCD);来设置初始时间 的话无需额外操作了。当然 调用该函数前 要保证对RTC的基本参数完成了初始化,即执行过 HAL_RTC_Init()了。 如果你不是基于库调用而是手动自己组织初始化的话,注意初始过程中要先操作相关寄存器进入 初始化模式,并检查相关标志直到进入初始化状态。初始化完毕后退出初始化模. 同样,你如果不是基于库调用而是自己组织代码设置时间,注意先要关闭RTC寄存器的写保护。 STM32各个系列的Cube库里都有RTC例程,不妨阅读参考下。
不知道你是用的哪个系列,HAL_RTC_SetTime是可以直接设置时间的。cubemx生成的MX_RTC_Init()函数没有判断时间设置初始化标志,即每次上电都会重新设置成cubemx里面预设的时间。需要自己调整MX_RTC_Init()函数。
你没说芯片型号,不知你提到的RTC-CNF具体是个什么位。STM32系列太多了。 你如果通过调用HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BCD);来设置初始时间 的话无需额外操作了。当然 调用该函数前 要保证对RTC的基本参数完成了初始化,即执行过 HAL_RTC_Init()了。 如果你不是基于库调用而是手动自己组织初始化的话,注意初始过程中要先操作相关寄存器进入 初始化模式,并检查相关标志直到进入初始化状态。初始化完毕后退出初始化模. 同样,你如果不是基于库调用而是自己组织代码设置时间,注意先要关闭RTC寄存器的写保护。 STM32各个系列的Cube库里都有RTC例程,不妨阅读参考下。