当低功耗模式进入后,无法下载 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 ,