CH32V переключение состояния GPIO с UART и обратно
Добавлено: Сб июл 22, 2023 00:09:03
Доброго времени суток!
Необходимо сформировать в UART сигнал BREAK определенной длины (не менее 176 мкс, для передачи по DMX и ответа по RDM).
Делаю следующим образом:
Однако по логическому анализатору перед посылкой нет никакого BREAK
Как могу изменить режим GPIO на лету, кроме как деинициировать порт целиком?
_USARTx указывает на USART2, а _GPIO_Port на GPIOA
Необходимо сформировать в UART сигнал BREAK определенной длины (не менее 176 мкс, для передачи по DMX и ответа по RDM).
Делаю следующим образом:
Код: Выделить всё
USART_Cmd(_USARTx, DISABLE);
_GPIO_Port->CFGLR &= ~(1<<22); // Set GPIO Pin 2 as GPIO output OD
GPIO_SetBits(_GPIO_Port, GPIO_Pin_2); // Set GPIO Pin 2 to 0 within 180 us
delay_us(180);
GPIO_ResetBits(_GPIO_Port, GPIO_Pin_2); // Set GPIO Pin 2 to 1
delay_us(40);
_GPIO_Port->CFGLR |= (1<<22); // and set back to USART out
USART_Cmd(_USARTx, ENABLE);
Как могу изменить режим GPIO на лету, кроме как деинициировать порт целиком?
_USARTx указывает на USART2, а _GPIO_Port на GPIOA