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.
我在上电后初始化了看门狗,并使用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);
您好,低功耗本质上是通过关闭时钟实现的。
功耗最低的时钟是选择VLO做为时钟源的ACLK,而看您代码中使用的是SMCLK;
MSP430FR4xx and MSP430FR2xx family user's guide (Rev. I)中Table 1-2. Operation Modes标明LPM4将会关闭所有时钟及CPU,您的设计在这一点上是矛盾的。时钟实际上还是打开的,功耗并不能达到LPM4的水平:
最后,您确定这种方式可以实现看门狗的功能吗?即使CPU的程序跑飞了,但配置成功的外设TimerB并不受影响,还是会定时喂狗的吧?一般来说都是计算好程序的运行时间,在程序的适当位置喂狗。
当进入LPM4低功耗时,看门狗是自动关闭了是吗?
看门狗是不会关闭的。请参考MSP430FR4xx and MSP430FR2xx family user's guide (Rev. I)12.2.5 Clock Fail-Safe Feature: