在线时间66 小时
UID3239593
注册时间2016-4-20
NXP金币0
TA的每日心情 | 开心 2016-10-25 10:29 |
---|
签到天数: 1 天 连续签到: 1 天 [LV.1]初来乍到
中级会员
 
- 积分
- 272
- 最后登录
- 2019-6-10
|

楼主 |
发表于 2016-7-1 14:27:37
|
显示全部楼层
版主,我的版子进入WAIT模式的功耗大概在12.4mA左右,跟数据手册上的数据相差深远。我用默认时钟,经检测内核、系统时钟频率为20.97MHz。按键1按下,进入WAIT模式,按下按键2,唤醒。
int main(void)
{
uint16_t j=0;
uint32_t uartClkSrcFreq;
SIM->SCGC5|=1<<10; //打开端口B时钟
SIM->SCGC5|=1<<9; //打开端口A时钟
SIM->SCGC5|= 1<<0;//打开LPTMR时钟
// uartClkSrcFreq=CLOCK_GetFreq(kCLOCK_CoreSysClk);//获取内核、系统时钟频率
//uartClkSrcFreq++;
text_pin();//两个LED灯配置。
exti_init();//用外部中断唤醒WAIT模式
while(1)
{
KeyRead();//按键扫描
if(Trg==1)//按键1按下
{
Trg=0;
Wait_TurnOff_Clock();//关闭时钟
Wait_TurnOff_Pin(); //关闭LED灯。
MCG->C6 &= ~MCG_C6_CME_MASK;//关闭时钟监控
SMC_SetPowerModeWait(SMC);//进入等待模式
}
lptmr_LPO_clock_counter(500);//500ms延时
GPIO_TogglePinsOutput(GPIOB, 1u << 7); //用来判断进入等待模式指示灯 。
}
}
void Wait_TurnOff_Clock(void)
{
SIM->SCGC5 |= ~(SIM_SCGC5_PORTB_MASK+SIM_SCGC5_PORTA_MASK+SIM_SCGC5_LPTMR_MASK); //关闭PA PB LPTMR
SIM->SCGC6 |= ~(SIM_SCGC6_FTF_MASK); //关闭 FTF(flash)
}
void Wait_TurnOff_Pin(void)
{
GPIOB->PDOR = 0xc0;//两个LED灯输出高电平,关闭LED
PORTB->PCR[5] = 0 ; //按键1引脚置失能
}
void PORTA_IRQHandler()
{
PORTA->ISFR |= 1<<12;//清除中断标志位
SIM->SCGC6 |= SIM_SCGC6_FTF_MASK; //打开端口FLASH时钟
SIM->SCGC5|=1<<10; //打开端口B时钟
SIM->SCGC5|=1<<9; //打开端口A时钟
//SIM->SCGC4|=1<<10; //打开串口时钟
SIM->SCGC5|= 1<<0;//打开LPTMR时钟
text_pin(); //重新初始化LED灯引脚
// 重新初始化按键1引脚
GPIOB->PDDR |= ~(1<<5); //设置引脚为输入模式
PORTB->PCR[5] &= ~(PORT_PCR_MUX_MASK|PORT_PCR_IRQC_MASK);
PORTB->PCR[5] |= PORT_PCR_MUX(0x01) | PORT_PCR_IRQC(0x00)| PORT_PCR_PE_MASK|PORT_PCR_PS_MASK;
}
|
-
|