项目本意是要设置了两个唤醒源 PA0和PA2 WUKP 事件 进入standby模式后 其中一个唤醒事件(比如PA0上有脉冲)产生会使两个打开的唤醒源 都有唤醒标志位(理论是只有一个有) 因此我做了如下测试,打开一个唤醒关闭一个唤醒 。
按照下面的代码:我在PA0上面输入脉冲也能唤醒CPU,唤醒后通过查看PWR->CSR2的值,发现标志信号置在PA2上面(CPU告诉我是PA2唤醒的,实际上PA都被禁止唤醒了)
新手上路请求各位大咖帮帮忙
void StartCommTask3(void const * argument) //uart1
{
uint16_t length;
int data;
/* Infinite loop */
HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN2);
for(;;)
{
Get_Frame(&huart1,uart1_rxbuff,&length);
data=HAL_GetTick();
if(uart1_rxbuff[0]=='s')
{
HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN2);
/* Clear the related wakeup pin flag */
__HAL_PWR_CLEAR_WAKEUP_FLAG(PWR_WAKEUP_PIN_FLAG2);
HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN2); //打开了PA2 WUKP
__HAL_PWR_CLEAR_WAKEUP_FLAG(PWR_WAKEUP_PIN_FLAG1);
HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN1); //关闭了PA0 WUKP
HAL_PWR_EnterSTANDBYMode();
}
if(uart1_rxbuff[0]=='p')
{
printf("%d ",data);
printf("%d ",PWR->CSR2);
}
osDelay(10);
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
它有6个WKUP
一周热门 更多>