我在上电后初始化了看门狗,并使用Timer1制作了一个ms定时定时喂狗。但发现在低功耗下,这种操作带来了很高的功耗,约300uA(裸片测试),这与我期望的功耗差距很大。当我不初始化看门狗与喂狗定时器后,裸片功耗直接下降到6个uA。
请问有什么方法能在低功耗下正常喂狗但又不会导致大量功耗方法吗?
我的看门狗配置如下:
/** * @brief 看门狗初始化 * */ void bsp_wdt_init(void) { WDTCTL = WDTPW + WDTCNTCL + WDTIS_2; /*看门口配置为4秒触发@ 16Mhz*/ } /** * @brief 喂狗 * */ void bsp_wdt_feed(void) { WDTCTL = WDTPW + WDTCNTCL; /*喂狗*/ } /** * @brief 系统滴答定时器初始化 * * @details 初始化1毫秒中断定时器 * * @return none */ void bsp_systick_init(void) { TB0CCR0 = 16000 - 1; TB0CCTL0 = CCIE; TB0CTL = TBSSEL__SMCLK + MC_1 + TBCLR; }
在开启看门狗时,我使用这个滴答定时器的中断进行了喂狗。
进入低功耗是这样的。
__bis_SR_register(LPM4_bits | GIE);