本帖最后由 mars4zhu 于 2014-11-27 11:12 编辑
程序中复用了JTAG或SW复用引脚导致程序执行后出现启动配置错误或者调试引脚被占用而引起的芯片锁死
这句话正解!
X-CUBE-IDB04\Projects\STM32L053R8-Nucleo\Applications\Bluetooth_LE\HRM_LowPowerRTC
这个程序为了实现低功耗, 把SWD引脚功能给设置成了Analog-In模式,也就是下载了第一次之后,SWD就不能正常用了。 必须是“under-reset”
我把它的代码改了一下,就可以正常用SWD了。
把low_power_conf.c 第138行那一段,把PA所有IO口都设置为这种模式了:
GPIO_InitStructure.Pin = GPIO_PIN_All;
GPIO_InitStructure.Mode = GPIO_MODE_ANALOG;
GPIO_InitStructure.Pull = GPIO_NOPULL;
我改成以下, 不改变PA13和PA14(也就是维持SWD的SWCLK和SWDIO两个引脚的调试功能),就可以了
//======================
/* Configure all GPIO port pins in Analog Input mode (floating input trigger OFF) */
GPIO_InitStructure.Pin = GPIO_PIN_All;
GPIO_InitStructure.Mode = GPIO_MODE_ANALOG;
GPIO_InitStructure.Pull = GPIO_NOPULL;
// HAL_GPIO_Init(GPIOA, &GPIO_InitStructure);
HAL_GPIO_Init(GPIOB, &GPIO_InitStructure);
HAL_GPIO_Init(GPIOC, &GPIO_InitStructure);
HAL_GPIO_Init(GPIOD, &GPIO_InitStructure);
HAL_GPIO_Init(GPIOH, &GPIO_InitStructure);
GPIO_InitStructure.Pin = GPIO_PIN_All & ~(GPIO_PIN_13) & ~(GPIO_PIN_14);
HAL_GPIO_Init(GPIOA, &GPIO_InitStructure);
/* Disable GPIOs clock */
|