本帖最后由 xlhtracy 于 2015-4-20 14:16 编辑
7.3 例程 描述:在这个例子中,设备设置进入LPM4.5.在进入LPM4.5之前LED是开启的来只是进入LPM4.5。 退出LPM4.5由P2.1的上升沿触发,以导致设备的重置。一旦重置,LPM4.5中断设置和设备开始仅仅翻转LED状态。该例程示范如何配置设备的LPM4.5和从它成功的中断 #include "driverlib.h"
#define GPIO_PIN_ALL (GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN2 | GPIO_PIN3 |
GPIO_PIN4 | GPIO_PIN5 | GPIO_PIN6 | GPIO_PIN7)
int main(void) {
WDT_hold(WDT_BASE);
// Configure GPIO for low current numbers while in LPM4.5 //下面四条函数把P1和P2的八个IO配置成输出,并拉低电平。 GPIO_setOutputLowOnPin(GPIO_PORT_P1, GPIO_PIN_ALL);
GPIO_setAsOutputPin(GPIO_PORT_P1, GPIO_PIN_ALL);
GPIO_setOutputLowOnPin(GPIO_PORT_P2, GPIO_PIN_ALL);
GPIO_setAsOutputPin(GPIO_PORT_P2, GPIO_PIN_ALL);
// Determine if coming out of LPM 4.5 // 判断是否从LPM4.5出来 if(PMM_getInterruptStatus(PMM_LPM45_INTERRUPT))
{
PMM_clearInterrupt(PMM_LPM45_INTERRUPT);
// Need to unlock IO after exiting LPM4.5 so LED will blink // 需要解锁后退出LPM4.5 IO,这样LED将会闪
PMM_unlockIOConfiguration();
}
else
{
// Configure exit of LPM4.5 on P2.1 interrupt // 配置P2.1的中断以退出LPM4.5,P2.1设置为输入,选择上升沿中断,清除中断源,使能中断
GPIO_setAsInputPin(GPIO_PORT_P2, GPIO_PIN1);
GPIO_selectInterruptEdge(GPIO_PORT_P2, GPIO_PIN1,
GPIO_LOW_TO_HIGH_TRANSITION);
GPIO_clearInterrupt(GPIO_PORT_P2, GPIO_PIN1);
GPIO_enableInterrupt(GPIO_PORT_P2, GPIO_PIN1);
// Turn on LED to indicate we are about to enter LPM4.5
// 开LED,指示我们进入了LPM4.5,LED在P1.4管脚,输出高电平。 GPIO_setOutputHighOnPin(GPIO_PORT_P1, GPIO_PIN4);
// Turn off regulator so we can enter LPM4.5 // 关校准器,这样我们才能进入LPM4.5,之后通过特殊寄存器指令进入LPM4.5
PMM_setRegulatorStatus(PMM_REGULATOR_OFF);
__bis_SR_register(LPM4_bits);
}
// Slow down clock so we can see LED blink //减缓时钟,所以我们可以看到LED闪烁
// Configure MCLK = ~1MHz // DCO默认采用16.384Mhz,获取1MHz频率,需要进行16分频,在循环体翻转,延时1s
CS_initClockSignal(CS_MCLK, CS_CLOCK_DIVIDER_16);
while(1)
{
GPIO_toggleOutputOnPin(GPIO_PORT_P1, GPIO_PIN4);
__delay_cycles(100000);
}
} |