请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
您好!
函数 RTC_C_setCounterValue 具有以下代码:
if (MODE = RTC_C_COUNTERSIZE_8位&& counterValue > 0xF) { counterValue = 0xF; } 否则、如果(MODE = RTC_C_COUNTERSIZE _16BIT && counterValue > 0xFF) { counterValue = 0xFF; } 否则、如果(MODE = RTC_C_COUNTERSIZE_24BIT && counterValue > 0xFFFFFF") { counterValue = 0xFFFFFF; }
代码不应是:
如果(MODE = RTC_C_COUNTERSIZE_8位&& counterValue > UINT8_MAX){ counterValue = UINT8_MAX; }否则(MODE = RTC_C_COUNTERSIZE_16BIT && counterValue > UINT16_MAX){counterValue = UINT16_MAX; }如果(MODE = 0xRTC_COUNTERSIZE_16位)= 0xUNCCERValue = UINT16_MAX;}则为0xC_COUNTERZE_COUNT_COUNT_COUNT_COUNT_COUNT_COUNT_VALUE
另一个问题是 、函数 RTC_C_initCounter 和 RTC_C_initCounterPrescale 的末尾没有向 RTCCTL0_H 寄存器写入零吗?
编辑:
RTC_C_initCalendar 函数:
void RTC_C_initCalendar (uint16_t baseAddress、 日历*CalendarTime、 uint16_t formatSelect) { HWREG8 (baseAddress + OFS_RTCCTL0_H)= RTCKEY; HWREG8 (baseAddress + OFS_RTCCTL13_L)|= RTCHOLD; HWREG8 (baseAddress + OFS_RTCCTL13)|= RTCMODE; ////<<< driverlib 中需要并缺少此行? HWREG16 (baseAddress + OFS_RTCCTL13_L)&=~(RTCBCD); HWREG16 (baseAddress + OFS_RTCCTL13_L)|= formatSelect; HWREG8 (baseAddress + OFS_RTCTIM0_L)=日历时间->秒; HWREG8 (baseAddress + OFS_RTCTIM0_H)=日历时间->分钟; HWREG8 (baseAddress + OFS_RTCTIM1_L)=日历时间->小时; HWREG8 (baseAddress + OFS_RTCTIM1_H)=日历时间->DayOfWeek; HWREG8 (baseAddress + OFS_RTCDATE_L)=日历时间->月中某天; HWREG8 (baseAddress + OFS_RTCDATE_H)=日历时间->月; HWREG16 (baseAddress + OFS_RTCYEAR)=日历时间->年; HWREG8 (baseAddress + OFS_RTCCTL0_H)= 0x00; }