#include <stdint.h>
// 假设GPIOA的第6位和第5位引脚对应的是PA6和PA5
#define GPIO_PIN_PA6 6
#define GPIO_PIN_PA5 5
void GPIO_Init(void) {
// 初始化GPIOA的第6位和第5位引脚为输入模式
// 这里假设使用了某种特定的库函数来完成初始化
GPIO_PinModeSet(GPIOA, GPIO_PIN_PA6, GPIO_MODE_INPUT);
GPIO_PinModeSet(GPIOA, GPIO_PIN_PA5, GPIO_MODE_INPUT);
}
void GPIO_InterruptHandler(void) {
// 检查GPIOA的第6位和第5位引脚是否产生了中断
if (GPIO_IntStatus(GPIOA, true) & (1 << GPIO_PIN_PA6)) {
// 在这里执行唤醒系统或其他操作
// ...
}
if (GPIO_IntStatus(GPIOA, true) & (1 << GPIO_PIN_PA5)) {
// 在这里执行唤醒系统或其他操作
// ...
}
// 清除中断标志
GPIO_IntClear(GPIOA, (1 << GPIO_PIN_PA6) | (1 << GPIO_PIN_PA5));
}
int main(void) {
// 初始化GPIO并配置中断
GPIO_Init();
// 注册中断处理程序
NVIC_EnableIRQ(GPIO_IRQn);
// 进入主循环
while (1) {
// 主循环中的其他任务
// ...
}
}
烧录程序后PA6与GND短时间接触,移开可以看到串口助手的Uart输出Wake(唤醒)
用这个下载,短接BOOT到GND,烧录完断开,