网友说的 复位键按住后进入下载程序 这个方法我发现无效, 有可能是复位键被用作gpio了, 但是疯狂重新上电时按下载, 有时就行了, 想象应该是一上电pd1是swd功能, 所以在失能swd功能前是可以的, 这个时间未知是多少, 估计有几十ms
想要操作pd1可以执行以下代码, 例如输出高低电平:
void GPIO_Toggle_INIT(void)
{
GPIO_InitTypeDef GPIO_InitStructure = {0};
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
Delay_Ms(1000); // 为了重新上电能下载
//GPIO_PinRemapConfig(GPIO_Remap_SDI_Disable, ENABLE);
RCC->APB2PCENR |= RCC_AFIOEN;
AFIO->PCFR1 &= ~(0x7U<<24);
RCC->APB2PCENR |= RCC_AFIOEN;
AFIO->PCFR1 |= (0x4U<<24);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOD, &GPIO_InitStructure);
while(1)
{
GPIO_WriteBit(GPIOD, GPIO_Pin_1, 0);
Delay_Ms(1000);
GPIO_WriteBit(GPIOD, GPIO_Pin_1, 0);
Delay_Ms(1000);
}
}
|