STM32 低功耗问题

当低功耗模式进入后,无法下载 download 失败

方法一、

1)RST保持复位,然后下载,出现一个“---JTAG---”弹出一个框;

2)去掉复位,然后下载操作。

方法二:

如果以上方法不可靠,采用下面的方式。s

方法处理:第一步、boot0引脚需要拉到vcc,并且RST保持复位。可能会出现提示:“···JTAG cable···”

          第二步,断开boot0到VCC,rst不要复位,可以正常下载了

wakeup event 管理:摘自《reference manual··》

WFE:

WFI:

      从手册上说明来看,stm32的WFE在允许在内部或是外部的exti设置为event模式,当cpu从wfe唤醒后,不需要清除中断标志位,

并且NVIC的irq channel 标志也不需要清除,因为wfe方式不会设置event line。

      如果外部或是内部exti设置为interrupt方式,nvic不需要设置,但是需要设置core的control 寄存器bit sevonpend。

当mcu从wfe唤醒时,需要清除interrupt pending bit,以及外部nvic irqchannel pending bit。

RAM以及FLASH的唤醒影响

在线仿真的时候,出现大量jlinK error:can not read

 /* Disable the Serial Wire Jtag Debug Port SWJ-DP */

  GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);


 //__ASM("NOP");

----inline assembler not permitted when generating Thumb code

解决方式  1:

__asm void nop(void){

  NOP

 }

使用方式

void main(void){

     nop();

}

解决方式 2:直接使用__nop();


stm32l串口发送的时候,使用

void _usart_sendchar(USART_TypeDef* usart_typedef, uint8_t sChar) {

    USART_SendData(usart_typedef, (uint8_t) sChar);

    while (USART_GetFlagStatus(usart_typedef, USART_FLAG_TC) == RESET) {

    }

}

        ---  VS ---

而stm32f1xx系列的使用的是

void _usart_sendchar(USART_TypeDef* usart_typedef, uint8_t sChar) {

    USART_SendData(usart_typedef, (uint8_t) sChar);

    while (USART_GetFlagStatus(usart_typedef, USART_FLAG_TXNE) == RESET) {

    }

}


STM32l的SPI1和SPI2相同的Alternate function

GPIO_PinAFConfig(GPIOA,GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7,GPIO_AF_SPI1);

rugo


使用wakeup的功能时,注意是alternate function ,



版权声明:本文为u011270542原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。