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 ,


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值