1 #include "Driver_USART.h"
\r
2 #include "cmsis_os.h" /* ARM::CMSIS:RTOS:Keil RTX */
\r
6 void myUART_Thread(void const *argument);
\r
7 osThreadId tid_myUART_Thread;
\r
10 extern ARM_DRIVER_USART Driver_USART3;
\r
13 void myUSART_callback(uint32_t event)
\r
17 case ARM_USART_EVENT_RECEIVE_COMPLETE:
\r
18 case ARM_USART_EVENT_TRANSFER_COMPLETE:
\r
19 case ARM_USART_EVENT_SEND_COMPLETE:
\r
20 case ARM_USART_EVENT_TX_COMPLETE:
\r
21 /* Success: Wakeup Thread */
\r
22 osSignalSet(tid_myUART_Thread, 0x01);
\r
25 case ARM_USART_EVENT_RX_TIMEOUT:
\r
26 __breakpoint(0); /* Error: Call debugger or replace with custom error handling */
\r
29 case ARM_USART_EVENT_RX_OVERFLOW:
\r
30 case ARM_USART_EVENT_TX_UNDERFLOW:
\r
31 __breakpoint(0); /* Error: Call debugger or replace with custom error handling */
\r
36 /* CMSIS-RTOS Thread - UART command thread */
\r
37 void myUART_Thread(const void* args)
\r
39 static ARM_DRIVER_USART * USARTdrv = &Driver_USART3;
\r
40 ARM_DRIVER_VERSION version;
\r
41 ARM_USART_CAPABILITIES drv_capabilities;
\r
45 version = USARTdrv->GetVersion();
\r
46 if (version.api < 0x200) /* requires at minimum API version 2.00 or higher */
\r
47 { /* error handling */
\r
50 drv_capabilities = USARTdrv->GetCapabilities();
\r
51 if (drv_capabilities.event_tx_complete == 0)
\r
52 { /* error handling */
\r
57 /*Initialize the USART driver */
\r
58 USARTdrv->Initialize(myUSART_callback);
\r
59 /*Power up the USART peripheral */
\r
60 USARTdrv->PowerControl(ARM_POWER_FULL);
\r
61 /*Configure the USART to 4800 Bits/sec */
\r
62 USARTdrv->Control(ARM_USART_MODE_ASYNCHRONOUS |
\r
63 ARM_USART_DATA_BITS_8 |
\r
64 ARM_USART_PARITY_NONE |
\r
65 ARM_USART_STOP_BITS_1 |
\r
66 ARM_USART_FLOW_CONTROL_NONE, 4800);
\r
68 /* Enable Receiver and Transmitter lines */
\r
69 USARTdrv->Control (ARM_USART_CONTROL_TX, 1);
\r
70 USARTdrv->Control (ARM_USART_CONTROL_RX, 1);
\r
72 USARTdrv->Send("\nPress Enter to receive a message", 34);
\r
73 osSignalWait(0x01, osWaitForever);
\r
77 USARTdrv->Receive(&cmd, 1); /* Get byte from UART */
\r
78 osSignalWait(0x01, osWaitForever);
\r
79 if (cmd == 13) /* CR, send greeting */
\r
81 USARTdrv->Send("\nHello World!", 12);
\r
82 osSignalWait(0x01, osWaitForever);
\r