#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(唤醒) PM.rar 用这个下载,短接BOOT到GND,烧录完断开,
|