STM32F103USB打开后重启芯片不会断连解决方法

 在主函数中加入下面的函数就可以了。

void USB_Disconnected(void) 
{
	__HAL_RCC_USB_FORCE_RESET();
	HAL_Delay(200);
	__HAL_RCC_USB_RELEASE_RESET();

	GPIO_InitTypeDef GPIO_Initure;
	__HAL_RCC_GPIOA_CLK_ENABLE();

	GPIO_Initure.Pin = GPIO_PIN_11 | GPIO_PIN_12;
	GPIO_Initure.Mode = GPIO_MODE_OUTPUT_PP;
	GPIO_Initure.Pull = GPIO_PULLDOWN;
	GPIO_Initure.Speed = GPIO_SPEED_FREQ_HIGH;
	HAL_GPIO_Init(GPIOA, &GPIO_Initure);

	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_11, GPIO_PIN_RESET);
	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_RESET);
	HAL_Delay(300);
}
int main(void)
{
	SCB->VTOR = FLASH_APP_ADDR;
	HAL_Init();
	SystemClock_Config();
	USB_Disconnected();

	MX_GPIO_Init();
	MX_USB_DEVICE_Init();
	LED_INIT();
	protocol_init();
	debug_shell_init();
//	printf("APP Code Start\r\n");
//	printf("%s\r\n", Device_Version_Info_Str);
//	printf("Device_Name_Info_Str:%s\r\n", Device_Name_Info_Str);
	
	while (1)
	{
		//Running_Water_Led();
		//Data_Handler();
		protocol_ontick();
		debug_shell_handler();
	}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值