主题中讨论的其他器件:MSPWARE
工具/软件:Code Composer Studio
您好!
我遇到了使用 GNU 编译器的 MSP432上的 RTC 问题。 RTC 正常计时、但我注意到一种奇怪的行为、只要分钟数或秒数超过40、就会恢复为0。 但是、在这些数字达到19后、它将返回到0并再次计数到40。 这意味着我的时钟节拍如下:0、1、2、38、39、0、1、2、18、19、0等。 这意味着它正在计数到60秒、但在一个奇怪的位置滚动。 此外、如果我将小时数设置为任何大于20的数字、则会丢弃2、并且仅显示第二个十进制数。 示例是将小时设置为23、当我调用 MAP_RTC_C_getCalendarTime()时、它会显示:Hours = 3。
我之前以为我已经通过调用 ROM_RTC_C_initCalendar ()而不是 MAP_RTC_C_initCalendar ()来修复了这个问题。 这是一段时间的修复、但现在它不再起作用(没有对代码进行任何更改)。
请注意、rom_map.h 中的所有 ROM_XX 函数都是灰色的、因为 GNU 编译器不想识别编译期间设置的标志(-DTARGET_IS _MSP432P4XX)。 因此、没有任何具有#if defined (target_in_MSP432P4XX)的函数运行。 因此、如果我调用 MAP_XX、它将调用 XX 函数、而不是 ROM_XX 函数。 不确定这是否是导致 RTC 异常计数问题的原因、但可能是原因。 因此、如果我调用 MAP_RTC_C_initCalendar ()、那么 ROM_RTC_C_initCalendar ()将灰显、 而 RTC_C_initCalendar ()将被调用。
要获得有关此问题的其他帮助,请运行以下代码:
RTC_C_Calendar CurrentTime = { 0x46、//46秒 0x43、//43分钟 0x23、//23小时 0x01、//1周的一天 0x16、//16月的一天 0x05、//5个月 0x1955年/1955年 }; MAP_RTC_C_initCalendar (&CurrentTime、RTC_C_FORMAT_BCD); RTC_C_Calendar 电流时间; currenttime = ROM_RTC_C_getCalendarTime ();
以当前时间返回的值如下:秒= 0x06、分钟= 0x03、小时= 0x03、每日每天= 0x01、 每日= 0x16、 月= 0x05、年= 0x1955。 将时钟设置为运行后、14秒后、秒将显示0、分钟将显示4。