不能成功下载的程序中,包含如下程序,:
CInit::CInit(uint8_t mode)
{
//底层初始化
HAL_Init();
//GPIO时钟使能
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
__HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOD_CLK_ENABLE();
__HAL_RCC_GPIOE_CLK_ENABLE();
GPIO_InitTypeDef GPIO_InitStructure;
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(GPIOE, &GPIO_InitStructure);
}
这些程序将在目标板初始化的时候调用,目的是将所有的引脚设置为GPIO_MODE_ANALOG,以降低功耗。仔细分析可以看出,这样设置后,也会将SW-DP相应的引脚设置为GPIO_MODE_ANALOG,这就是其不能成功下载的原因。虽然在STM32开发笔记67: 在keil中使用ST-Link不能成功下载的解决方法提到了一种解决方法,但这种方法仅适合程序下载,如果还希望能够进行仿真调试,是做不到的。
|