实际应用场景是7个按键无论按哪个按键按下就可以唤醒屏幕出现了bug, 发现进入低功耗后按键无法唤醒屏幕用逻辑分析仪抓了一下数据发现DIN 和 CLK 都是低电平。看GPIOB3GPIOB5的moder寄存器发现是 输出模式。明明退出低功耗后设置成spi模式了呀。咋还是输出模式原因在低功耗的时候为了减少功耗将DIN,CLK设置为输出低。在退出低功耗后虽然执行了void MX_SPI3_Init(void)但是因为hspi-State HAL_SPI_STATE_RESET所以没有执行HAL_SPI_MspInit(hspi);也就是没有对io重新设置为SPI模拟功能。为什么hspi-State HAL_SPI_STATE_RESET因为在进入功耗的时候我在调试时候一不小心注释了 spi的关闭函数hspi-StateHAL_SPI_STATE_READY。特别注意进入低功耗时关闭spi ,执行HAL_SPI_DeInit(hspi3);退出低功耗是打开spi, 执行MX_SPI3_Init();按这个改后退出低功耗后可以抓到数据但是第一个字节总是错。提示如下18.5273998200,5,The initial (idle) state of the CLK line does not match the settings,原因是低功耗时我设置CLK为低但是在正常工作时我们设置spi的模式是hspi3.Init.CLKPolarity SPI_POLARITY_HIGH;hspi3.Init.CLKPhase SPI_PHASE_2EDGE;问题出在 SPI 空闲电平CPOL在唤醒瞬间不对导致 第一个字节采样错位。CLK应该是高。将低功耗时候CLK改为输出高退出低功耗后第一个字节发送正确了。