主题中讨论的其他部件:ENERGYTRACE
工具/软件:Code Composer Studio
我正在使用driverlib的 pcm_go_to_lpm3示例,但我将第115行更改为 map_pcm_gotoLPM4();,而不 是map_pcm_gotoLPM3();。 我正在使用万用表读取调试器和微控制器之间3V3引脚上的电流,我正在读取0.2mA。 我不应该期待一个更接近1uA的东西吗?
/*--版权所有--,BSD
*版权所有(c) 2017,Texas Instruments Incorporated
*保留所有权利。
*
**
允许以源代码和二进制格式重新发布和使用,无论是否进行*修改,只要
满足以下条件*:
*
****重新发布源代码必须保留上述版权
*声明,此条件列表和以下免责声明。
*
***以二进制格式重新分发时,必须在
随分发提供的*文档和/或其他材料中复制上述版权*声明,此条件列表和以下免责声明。
*
***
未经事先书面许可,不得使用德州仪器(TI)公司的名称或*其贡献者的名称来支持或促销由本软件衍生的产品*。
*
*本软件由版权所有者和贡献者"按原样"提供
*,
不提供任何明示或暗示的担保,包括但不限于*对适销性和特定*用途适用性的暗示担保。 在任何情况下,版权所有者或
*贡献者均不对任何直接,间接,附带,特殊,
*示范, 或后果性损害(包括但不限于
*购买替代商品或服务;使用,数据或利润损失;
(*或业务中断),但根据任何责任理论
,*无论是合同,严格责任还是侵权行为(包括疏忽或
*其他),均因使用本软件而导致*
,即使已被告知此类损害的可能性。
-/copyright--*//*******************************************************************************************************
* MSP432 PCM -转至LPM3
*
*说明:在此非常简单的示例中
,演示了如何使用PCM API转至* LPM3。 设备配置为GPIO中断
*(当用户按下WFP 1.1 上的按钮时唤醒设备),然后
*使用PCM_gotoLPM3功能将设备置于LPM3中。 此外
,*设备的配置方式可最大限度地降低功耗,并
*达到有关功耗的数据表规格。
*
** MSP432P401
* -----------
* /|\\| |
* || |
* --|RST WFP 1.0 |-->WFP 1.0 LED
* | |
* | WFP 1.1 |<--Toggle Switch*
| |
* | **
******************* /*
DriverLib包括*/
#include <ti/devices/msp432p4xx/driverlib/driverlib.h>/*
Standard包括*/
#include <stdint.h>
#include <stdbool.h>
int main(void){
/*停止监视程序*/
MAP_WDT_A_HoldTimer();
/*将WFP 1.0 配置为输出,将WFP 1.1 (开关)配置为输入*/
MAP_GPIO_setAsOutputPin (GPIO端口P1,GPIO _PIN0);
/*将WFP 1.1 配置为输入并启用中断*/
MAP_GPIO_setAsInputPinWithPullUp阻 器(GPIO_PORT_P1, GPIO_PIN1);
MAP_GPIO清除InterruptFlag (GPIO端口P1,GPIO PIN1);
MAP_GPIO_enableInterrupt (GPIO端口_P1,GPIO _PIN1);
MAP_Interrupt_enableInterrupt (INT_Port1);
MAP_Interrupt_enableSleepOnIsrExit();
/*端接所有剩余引脚以最小化功耗。 这是
通过注册访问来完成,以简化操作并最大限度地减少分支API
呼叫*/
MAP_GPIO_setAsOutputPin (GPIO端口P2,PIN_All8);
MAP_GPIO_setAsOutputPin (GPIO端口PB,PIN_ALL16);
MAP_GPIO设置输出引脚(GPIO_PORT_PC, PIN_ALL16);
MAP_GPIO设置输出引脚(GPIO_PORT_PD,PIN_ALL16);
MAP_GPIO设置输出引脚(GPIO_PORT_PE, PIN_ALL16);
MAP_GPIO_setOutputLowOnPin (GPIO端口P2,PIN_All8);
MAP_GPIO_setOutputLowOnPin (GPIO端口PB,PIN_ALL16);
MAP_GPIO_setOutputLowOnPin (GPIO端口PC,PIN_ALL16);
MAP_GPIO_setOutputLowOnPin (GPIO端口PD,PIN_ALL16);
MAP_GPIO_setOutputLowOnPin (GPIO端口PE,PIN_ALL16);
/*启动LFXT并从中获取ACLK和BCLK */
MAP_CS_setExternalClockSourceFrequency(3.2万,48000000);</s>48000000
MAP_GPIO设置外围模块功能输出引脚(GPIO_PORT_PJ,
GPIO _PIN0 | GPIO _PIN1,GPIO主要模块功能);
MAP_CS_startLFXT (CS_LFXT_DRIVE3);
MAP_CS_INITClockSignal (CS_ACLK,CS_LFXTCLK_SELECT,CS_CLock_diver_1);
MAP_CS_initClockSignal (CS_BCLK,CS_LFXTCLK_SELECT,CS_CLock_diver_1);
/*正在禁用高压侧监控器*/
MAP_PSS_DisableHighide();
/*启用“粗鲁”模式,强制设备进入睡眠状态
*待处理的时钟请求
*/
MAP_PCM_enableRudeMode();
/*启用主中断*/
MAP_Interrupt_enableMaster();
/*转至LPM3 */
同时(1)
{
/*请注意,虽然此示例仅涉及LPM3,但LPM4实际上是
仅LPM3禁用WDT_A/RTC_C。 为方便起见,用户可以
如果要API处理,请使用MAP_PCM_GotoLPM4()函数
禁用这些组件*/
MAP_PCM_GotoLPM4();
}
}/*
GPIO ISR */
void Port1_IRQHandler(void){
UINT32_t状态;
状态= MAP_GPIO _getEnabledInterruptStatus(GPIO_PORT_P1);
MAP_GPIO清除InterruptFlag (GPIO端口P1,状态);
/*切换LED上的输出*/
IF (状态和GPIO _PIN1)
{
MAP_GPIO_toggleOutputOnPin (GPIO_PORT_P1, GPIO_PIN0);
}
}