|
|
发表于 2025-9-15 17:08:35
|
显示全部楼层
SLEEP_WKUP_INTERRUPT这个例程,wakeup的PIn,在网购的Demo板上没有对应的脚位,改成LD546支持的其它脚,但sleep后,对应的wakeup脚都不能唤醒,请问是那里设置错了吗?
wkup.h
#include "fm33ld5xx_fl.h"
//// PA10(WKUP5)
//#define WAKEUP_GPIO GPIOA
//#define WAKEUP_PIN FL_GPIO_PIN_10
//#define GPIO_WAKEUP_BIT FL_GPIO_WAKEUP_5
//#define PMU_WAKEUP_PIN FL_PMU_WAKEUP5_PIN
// PF3(WKUP4)
//#define WAKEUP_GPIO GPIOF
//#define WAKEUP_PIN FL_GPIO_PIN_3
//#define GPIO_WAKEUP_BIT FL_GPIO_WAKEUP_4
//#define PMU_WAKEUP_PIN FL_PMU_WAKEUP4_PIN
//// PE11(WKUP3)
//#define WAKEUP_GPIO GPIOE
//#define WAKEUP_PIN FL_GPIO_PIN_11
//#define GPIO_WAKEUP_BIT FL_GPIO_WAKEUP_3
//#define PMU_WAKEUP_PIN FL_PMU_WAKEUP3_PIN
//// PB15(WKUP2)
//#define WAKEUP_GPIO GPIOB
//#define WAKEUP_PIN FL_GPIO_PIN_15
//#define GPIO_WAKEUP_BIT FL_GPIO_WAKEUP_2
//#define PMU_WAKEUP_PIN FL_PMU_WAKEUP2_PIN
//// PA4(WKUP1)
//#define WAKEUP_GPIO GPIOA
//#define WAKEUP_PIN FL_GPIO_PIN_4
//#define GPIO_WAKEUP_BIT FL_GPIO_WAKEUP_1
//#define PMU_WAKEUP_PIN FL_PMU_WAKEUP1_PIN
// PA0(WKUP0)
#define WAKEUP_GPIO GPIOA
#define WAKEUP_PIN FL_GPIO_PIN_0
#define GPIO_WAKEUP_BIT FL_GPIO_WAKEUP_0
#define PMU_WAKEUP_PIN FL_PMU_WAKEUP0_PIN
void WKUP_Init(void);
wkup.c
/**
* @brief WKUP中断函数
* @param void
* @retval None
*/
void WKUPx_IRQHandler(void)
{
if(FL_PMU_IsActiveFlag_WakeupPIN(PMU, PMU_WAKEUP_PIN) == 0x01UL)
{
FL_PMU_ClearFlag_WakeupPIN(PMU, PMU_WAKEUP_PIN);
LED2_ON();
}
}
/**
* @brief WKUP初始化
* @param void
* @retval void
*/
void WKUP_Init(void)
{
FL_GPIO_InitTypeDef GPIO_InitStruct = {0};
FL_NVIC_ConfigTypeDef InterruptConfigStruct;
//WAKEUP
GPIO_InitStruct.pin = WAKEUP_PIN;
GPIO_InitStruct.mode = FL_GPIO_MODE_INPUT;
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
GPIO_InitStruct.slewrate = FL_GPIO_SLEWRATE_HIGH;
GPIO_InitStruct.pull = FL_GPIO_PULLUP_ENABLE;
// GPIO_InitStruct.remapPin = FL_GPIO_PINREMAP_FUNCTON0;
GPIO_InitStruct.driveStrength = FL_GPIO_DRIVESTRENGTH_HIGH;
(void)FL_GPIO_Init(WAKEUP_GPIO, &GPIO_InitStruct);
/* 清除唤醒标志 */
FL_PMU_ClearFlag_WakeupPIN(PMU, PMU_WAKEUP_PIN);
/* 唤醒边沿配置 */
FL_GPIO_SetWakeupEdge(GPIO, GPIO_WAKEUP_BIT, FL_GPIO_WAKEUP_TRIGGER_FALLING);
/* 使能WAKEUP功能 */
FL_GPIO_EnableWakeup(GPIO, GPIO_WAKEUP_BIT);
InterruptConfigStruct.preemptPriority = 0x02;
InterruptConfigStruct.subPriority = 0x00;
FL_NVIC_Init(&InterruptConfigStruct, WKUPx_IRQn);
}
|
|