您现在的位置: 主页 > MCU > 单片机技术应用 > STM32L151中RTC_WakeUpCmd()函数带来了系统延时 -
本文所属标签:
为本文创立个标签吧:

STM32L151中RTC_WakeUpCmd()函数带来了系统延时 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-07 

[导读]ErrorStatus RTC_WakeUpCmd(FunctionalState NewState){__IO uint32_t wutcounter = 0x00;uint32_t wutwfstatus = 0x00;ErrorStatus status = ERROR;assert_param(IS_FUNCTIONAL_STATE(NewState));RTC->WPR = 0xCA;R

ErrorStatus RTC_WakeUpCmd(FunctionalState NewState)

本文引用地址: http://www.21ic.com/app/mcu/201807/779197.htm

{

__IO uint32_t wutcounter = 0x00;

uint32_t wutwfstatus = 0x00;

ErrorStatus status = ERROR;

assert_param(IS_FUNCTIONAL_STATE(NewState));

RTC->WPR = 0xCA;

RTC->WPR = 0x53;

if (NewState != DISABLE)

{

RTC->CR |= (uint32_t)RTC_CR_WUTE;

status = SUCCESS;

}

else

{

RTC->CR &= (uint32_t)~RTC_CR_WUTE;

do

{

wutwfstatus = RTC->ISR & RTC_ISR_WUTWF;

wutcounter++;

} while((wutcounter != INITMODE_TIMEOUT) && (wutwfstatus == 0x00));

if ((RTC->ISR & RTC_ISR_WUTWF) == RESET)

{

status = ERROR;

}

else

{

status = SUCCESS;

}

}

RTC->WPR = 0xFF;

return status;

}

上边时RTC唤醒的打开和关闭,在使用时,发现就RTC_WakeUpCmd(DISABLE)这个函数就要占据8ms(可怕)系统延时,这对于低功耗产品来说,不能频繁地使用此函数,否则带来不必要的浪费。

原因:在关闭时函数内部下面几句话


do

{

wutwfstatus = RTC->ISR & RTC_ISR_WUTWF;

wutcounter++;

} while((wutcounter != INITMODE_TIMEOUT) && (wutwfstatus == 0x00));

在这里要等待,可能等待时间与RTC唤醒设定的值有关系。就没有再详细的跟踪测试。




              查看评论 回复



嵌入式交流网主页 > MCU > 单片机技术应用 > STM32L151中RTC_WakeUpCmd()函数带来了系统延时 -
 

"STM32L151中RTC_WakeUpCmd()函数带来了系统延时 -"的相关文章

网站地图

围观()