Страница 1 из 1
STM32F103 отключение USB
Добавлено: Сб апр 26, 2014 21:46:01
NemesiS2014
Кто разбирался с USB в STM32 помогите советом, везде в примерах пишут как инициализировать USB
Код: Выделить всё
Set_USBClock();
USB_Interrupts_Config();
USB_Init();
А как сделать обратный процесс чтобы опять можно было управлять ножками DP и DM как GPIO?

Re: STM32F103 отключение USB
Добавлено: Вс апр 27, 2014 09:25:45
Andrew_KMR
Так же как обычно, инитом портов на вход или выход, отключив тем самым альтернативные функции выводов.
Re: STM32F103 отключение USB
Добавлено: Вс апр 27, 2014 13:21:13
NemesiS2014
Andrew_KMR писал(а):Так же как обычно, инитом портов на вход или выход, отключив тем самым альтернативные функции выводов.
Не отключается даже если выключить прерывания:
Код: Выделить всё
void USB_Interrupts_Disable(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
/* 2 bit for pre-emption priority, 2 bits for subpriority */
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitStructure.NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = DISABLE;
NVIC_Init(&NVIC_InitStructure);
}
Отключить тактирование USB:
Код: Выделить всё
void Reset_USBClock(void)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USB, DISABLE);
}
И сконфигурировать пины:
Код: Выделить всё
void USB_Pins_Off(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
/*Enable or disable APB2 peripheral clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
/*Configure GPIO pin */
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_11|GPIO_Pin_12;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_WriteBit(GPIOA, 11,0);
GPIO_WriteBit(GPIOA, 12,0);
}
И все равно пины УСБ порта остаются висеть в 3-ем состоянии

Re: STM32F103 отключение USB
Добавлено: Вс апр 27, 2014 13:23:39
NemesiS2014
Линейка STM32F10X_HD.