c - 如何从睡眠模式唤醒 Pic32?
问题描述
我试图让 PIC32 在启动时保持睡眠模式。当按下电源按钮时,Pic32 应退出睡眠模式并唤醒。
我可以将 PIC32 置于睡眠模式,但我不确定如何触发它在按钮按下时唤醒。是否可以在用户按下电源按钮时触发中断从而唤醒 PIC32?我正在使用微芯片和谐框架,对此我很陌生,有人可以建议我如何实现这一目标吗?
放PIC32我使用的是和声的PowerEnterMode功能。为了唤醒 PIC32,我尝试按照微芯片和谐提供的示例项目使用看门狗定时器,但无法让它工作。我还读到我可以使用外部中断来设置它,但我不知道如何设置它。
我在下面添加了我的代码。
void APP_Initialize ( void )
{
DRV_ADC_Open();
DRV_ADC_Start();
PLIB_ADC_Enable(ADC_ID_1);
SPIHandle = DRV_SPI_Open(DRV_SPI_INDEX_0, DRV_IO_INTENT_READWRITE );
DelayMs(100);
SYS_DEVCON_PowerModeEnter(SYS_POWER_MODE_IDLE);
appData.state = APP_STATE_POWER_UP;
}
void APP_Tasks (void)
{
switch ( appData.state )
{
case APP_STATE_POWER_UP:
{
uint8_t pwrButton;
pwrButton = PWR_BTNStateGet() ;
if (npwrButton == 0) // If button is pressed
{
PwrButtonDebounce += 1; // Increment the pressed timer
DelayMs(10);
} else
{
PwrButtonDebounce = 0; // Clear the Debounce Timer
}
if (PwrButtonDebounce == MAX_DEBOUNCE) // Debounced....
{
// Here Wake up routine on button press
appData.state = APP_STATE_INIT;
}
}
}
我希望每当我按下电源按钮时,Pic32 应该进入 APP_STATE_POWER_UP 状态,并且在去抖动时进入初始化状态,但它永远不会进入这种状态。有人可以建议我如何设置吗?
解决方案
您应该使用更改通知中断。
在您拥有按钮的引脚上启用 CN 中断,它会在按下时唤醒您的设备。
推荐阅读
- python - 如何使用表单创建关系模型?
- moodle - 如何从moodle编辑个人资料页面隐藏或删除国家和城市字段?
- node.js - 为什么 PM2 正在观察但没有捕捉到代码的变化?
- azure - VSTS Rest API 从 Azure 逻辑应用程序失败,但从 Postman 成功
- swift - 为什么子协议不符合其父协议?
- python - 获得传感器读数的良好时间戳
- youtube - 我可以在我的 Android 应用上显示公开的 youtube 直播视频吗?
- angularjs - IE - Angular 的 json 响应包含删除其他字符的 unicode 字符。无效的 JSON
- java - 将按钮和文本字段从另一个类导入到主类
- ansible - 如何在ansible中迭代库存组?