main.c
上传用户:zsq11688
上传日期:2022-07-12
资源大小:1k
文件大小:2k
- // 冬眠模块按键唤醒示例
- #include "hw_types.h"
- #include "hw_memmap.h"
- #include "hw_sysctl.h"
- #include "hw_gpio.h"
- #include "hw_hibernate.h"
- #include "sysctl.h"
- #include "gpio.h"
- #include "hibernate.h"
- /* 定义LED */
- #define LED_PORT SYSCTL_PERIPH_GPIOA
- #define LED_PIN GPIO_PORTA_BASE , GPIO_PIN_7
- #define ledOn() GPIOPinWrite(LED_PIN , (0 << 7))
- #define ledOff() GPIOPinWrite(LED_PIN , (1 << 7))
- #define ledToggle() GPIOPinWrite(LED_PIN , ~GPIOPinRead(LED_PIN))
- int main(void)
- {
- SysCtlLDOSet(SYSCTL_LDO_2_50V); /* 设置LDO输出电压 */
- SysCtlClockSet(SYSCTL_USE_OSC | /* 系统时钟设置,采用主振荡器 */
- SYSCTL_OSC_MAIN |
- SYSCTL_XTAL_8MHZ |
- SYSCTL_SYSDIV_1);
- SysCtlPeripheralEnable(LED_PORT); /* 使能LED所在的GPIO端口 */
- GPIOPinTypeGPIOOutput(LED_PIN); /* 设置LED所在管脚为输出 */
- ledOff(); /* 熄灭LED */
- SysCtlPeripheralEnable(SYSCTL_PERIPH_HIBERNATE); /* 使能冬眠模块 */
- if ( !HibernateIsActive() ) /* 如果冬眠模块未被激活 */
- {
- ledOn(); /* 点亮LED指示灯 */
- HibernateEnableExpClk(SysCtlClockGet()); /* 使能冬眠 */
- HibernateClockSelect(HIBERNATE_CLOCK_SEL_DIV128); /* 选择4.1943MHz晶体/128 */
- SysCtlDelay(25 * (SysCtlClockGet( ) / 4000));
- HibernateWakeSet(HIBERNATE_WAKE_PIN); /* 进入冬眠后采用外部管脚唤醒 */
- }
- SysCtlDelay(2500 * (SysCtlClockGet( ) / 4000));
- HibernateRequest(); /* 请求进入冬眠状态 */
- for (;;)
- {
- }
-
- }