7extern MessageBufferHandle_t xUsbTxBuff;
8extern MessageBufferHandle_t xUsbRxBuff;
10uint8_t usbRxBuff[USB_RX_SIZE];
11uint8_t usbRxBuffIdx = 0;
18void vUsbTransmit(
void *argument) {
19 const TickType_t timeout = portMAX_DELAY;
22 UART *usb = DeviceHandle_getHandle(
"USB").device;
26 if (!xMessageBufferReceive(xUsbTxBuff, (
void *)rxData, 100, timeout))
29 usb->print(usb, (
char *)rxData);
49void vUsbReceive(
void *argument) {
50 const TickType_t timeout = portMAX_DELAY;
53 UART *usb = DeviceHandle_getHandle(
"USB").device;
54 Shell *shell = argument;
58 if (!xStreamBufferReceive(xUsbRxBuff, (
void *)&rxData, 1, timeout))
62 usb->send(usb, rxData);
65 if (rxData == CARRIAGE_RETURN) {
66 usb->print(usb,
"\n");
67 usbRxBuff[usbRxBuffIdx - 1] =
'\0';
68 shell->runTask(shell, usbRxBuff);
73 else if (rxData == SIGINT) {
79 else if (rxData == BACKSPACE) {
80 usb->print(usb,
" \b");
96void USART6_IRQHandler() {
97 BaseType_t xHigherPriorityTaskWoken = pdFALSE;
100 while ((USART6->SR & USART_SR_RXNE) == 0);
101 uint8_t rxData = USART6->DR & 0xFF;
103 usbRxBuff[usbRxBuffIdx++] = rxData;
104 usbRxBuffIdx %= USB_RX_SIZE;
106 xStreamBufferSendFromISR(xUsbRxBuff, (
void *)&rxData, 1, &xHigherPriorityTaskWoken);
107 portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
Struct definition for UART interface.