|  | 
 
 发表于 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);
 }
 
 | 
 |