Stm32f103c8t6从停止模式通过中断唤醒后,怎么让他继续执行程序?进入停止模式之前oled显示,进入停止模式后下载不了程序,oled也不亮,然后用中断唤醒,但oled怎么都不亮,但是能下载程序,说明stm32应该已经被唤醒
使用:OLED显示屏模块 0.96寸 IIC/SPI
选择原因:价格较低、使用方便
注意:
这里使用 四管脚 顺序为 GND VCC SCL SDA,绘制PCB要注意顺序
供电为3.3V
对于Stm32f103c8t6停止模式的问题,可能是由于停止模式下主频被关闭,需要在唤醒后重新配置时钟。具体解决方案如下:
RCC_ClocksTypeDef RCC_Clocks; RCC_GetClocksFreq(&RCC_Clocks); uint32_t HCLK_Frequency = RCC_Clocks.HCLK_Frequency;
NVIC_DisableIRQ(EXTI0_IRQn); // 关闭外部中断0 NVIC_DisableIRQ(EXTI1_IRQn); // 关闭外部中断1 // ...
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); PWR_WakeUpPinCmd(ENABLE); PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);
RCC_DeInit(); RCC_HSEConfig(RCC_HSE_ON); while (RCC_WaitForHSEStartUp() != SUCCESS); RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); RCC_PLLCmd(ENABLE); while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); FLASH_SetLatency(FLASH_Latency_2); RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); while (RCC_GetSYSCLKSource() != 0x08);
NVIC_EnableIRQ(EXTI0_IRQn); // 开启外部中断0 NVIC_EnableIRQ(EXTI1_IRQn); // 开启外部中断1 // ...