1:程序设定RTC时间100mS,拉低P3.7引脚,进入睡眠,。
2:RTC唤醒后,停止看门狗,拉高P3.7引脚,
3:测试低电平时间实际时间112.9ms,大于手册的350us,
4:将程序串口初始化和一些程序屏蔽后测试低电平时间为104.4ms.
5:片子醒来时,先初始化的外部晶振,在进行解锁,已经排除等待时钟稳定的问题。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
1:程序设定RTC时间100mS,拉低P3.7引脚,进入睡眠,。
2:RTC唤醒后,停止看门狗,拉高P3.7引脚,
3:测试低电平时间实际时间112.9ms,大于手册的350us,
4:将程序串口初始化和一些程序屏蔽后测试低电平时间为104.4ms.
5:片子醒来时,先初始化的外部晶振,在进行解锁,已经排除等待时钟稳定的问题。
你好,我不太清楚您具体是怎么测试的,但是从您的结果来看,这样的结果相差甚远。我建议您尝试使用TI的例程重新测试一遍,看是否为软件问题
你好,我们用的是计数模式,你给的历程的RTC用的是日历模式,这个无法比较。
void RTCinit()
{
//设置RTC为计数器模式,32KHZ外部晶振,32BIT计数值
RTC_C_initCounter(RTC_C_BASE,RTC_C_CLOCKSELECT_32KHZ_OSC,RTC_C_COUNTERSIZE_32BIT);
RTC_C_setCounterValue( RTC_C_BASE,0X0);
//Enable interrupt for RTC Ready Status, which asserts when the RTC
//Calendar registers are ready to read.
//Also, enable interrupts for the Calendar alarm and Calendar event.
RTC_C_enableInterrupt(RTC_C_BASE, RTCTEVIE);
//RTC_C_disableInterrupt(RTC_C_BASE, RTCTEVIE );
__enable_interrupt();
}
int8_t Timeing(float fnextTime )
{
uint32_t ulcounterValue =0;
if(fnextTime > RTC_MAX_SECOND) //判断时间是否合格
{
return -1;
}
else if(fnextTime < FLOATERR)
{
return -2;
}
else
{
upMcuState(MCU_SLEEP);
ulcounterValue = 4294967296 - (uint32_t)((fnextTime)*32768.0);
RTC_C_holdClock(RTC_C_BASE);
RTC_C_initCounter(RTC_C_BASE,RTC_C_CLOCKSELECT_32KHZ_OSC,RTC_C_COUNTERSIZE_32BIT);
RTC_C_setCounterValue(RTC_C_BASE,ulcounterValue);
RTC_C_enableInterrupt(RTC_C_BASE, RTCTEVIE);
RTC_C_startClock(RTC_C_BASE);
}
int main(void)
{
// Stop watchdog timer
WDT_A_hold(WDT_A_BASE);
//FRAMCtl_A_enableWriteProtection();
gIF_GPIOinit();
io_On;
RTCinit(); //初始化RTC
gIF_SystemClockConfig(); //初始化系统时钟
while(1)
{
Timeing(0.1);
io_OFF;
PMM_turnOffRegulator();
LPM3;
}
}
这个是我的测试demo。
具体时间差距是102.96ms-100ms=2.96ms
测试低电平时间实际时间112.9ms
你好,如果我没理解错的话,您应该是在中断函数中将p3.7引脚拉高,这段时间是指从p3.7引脚第一次低到第二次高的时间?