Rev 12 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 12 | Rev 13 | ||
---|---|---|---|
Line 10... | Line 10... | ||
10 | #include "main.h" |
10 | #include "main.h" |
11 | 11 | ||
12 | 12 | ||
13 | typedef struct |
13 | typedef struct |
14 | { |
14 | { |
- | 15 | /// @brief UART handle |
|
15 | UART_HandleTypeDef *Handle; |
16 | UART_HandleTypeDef *Handle; |
16 | - | ||
- | 17 | /// @brief Locally maintained transmit buffer |
|
17 | volatile uint8_t tx_usart_buff[TX_USART_BUFF_SIZ]; |
18 | volatile uint8_t tx_usart_buff[TX_USART_BUFF_SIZ]; |
18 | volatile unsigned int tx_usart_in_Ptr; |
19 | volatile unsigned int tx_usart_in_Ptr; |
19 | volatile unsigned int tx_usart_out_Ptr; |
20 | volatile unsigned int tx_usart_out_Ptr; |
20 | volatile unsigned int tx_usart_overruns; |
21 | volatile unsigned int tx_usart_overruns; |
- | 22 | /// @brief Set when the usart is transmitting |
|
21 | volatile uint8_t tx_usart_running; |
23 | volatile uint8_t tx_usart_running; |
22 | 24 | ||
- | 25 | /// @brief Locally maintained receive buffer |
|
23 | volatile uint8_t rx_usart_buff[RX_USART_BUFF_SIZ]; |
26 | volatile uint8_t rx_usart_buff[RX_USART_BUFF_SIZ]; |
24 | volatile unsigned int rx_usart_in_Ptr; |
27 | volatile unsigned int rx_usart_in_Ptr; |
25 | volatile unsigned int rx_usart_out_Ptr; |
28 | volatile unsigned int rx_usart_out_Ptr; |
- | 29 | /// @brief Set when the receiver buffer is full |
|
26 | volatile uint8_t rx_usart_buffer_full; |
30 | volatile uint8_t rx_usart_buffer_full; |
27 | } usart_ctl; |
31 | } usart_ctl; |
28 | 32 | ||
29 | 33 | ||
30 | 34 | ||
Line 43... | Line 47... | ||
43 | #if defined SERIAL_UART5 |
47 | #if defined SERIAL_UART5 |
44 | extern usart_ctl uc5; |
48 | extern usart_ctl uc5; |
45 | #endif |
49 | #endif |
46 | 50 | ||
47 | ///@brief returns the number of characters in the recieve buffer |
51 | ///@brief returns the number of characters in the recieve buffer |
- | 52 | ///@param instance Pointer to usart_ctl structure |
|
- | 53 | ///@return Number of characters |
|
48 | extern uint16_t SerialCharsReceived(usart_ctl *instance); |
54 | extern uint16_t SerialCharsReceived(usart_ctl *instance); |
- | 55 | ||
49 | ///@brief Get the amount of free space in the transmit buffer. |
56 | ///@brief Get the amount of free space in the transmit buffer. |
- | 57 | ///@param instance Pointer to usart_ctl structure |
|
- | 58 | ///@return Free space at time of checking |
|
50 | extern uint16_t SerialTransmitSpace(usart_ctl *instance); |
59 | extern uint16_t SerialTransmitSpace(usart_ctl *instance); |
51 | 60 | ||
52 | /// @brief Return 1 if there are any characters in the receive buffer |
61 | /// @brief Return 1 if there are any characters in the receive buffer |
53 | /// @param instance Pointer to usart_ctl structure |
62 | /// @param instance Pointer to usart_ctl structure |
54 | /// @return 1 if any characters |
63 | /// @return 1 if any characters |
55 | extern uint8_t PollSerial(usart_ctl *instance); |
64 | extern uint8_t PollSerial(usart_ctl *instance); |
56 | 65 | ||
57 | /// @brief Return character code |
66 | /// @brief return the next character in the Serial input buffer |
- | 67 | /// This function will wait until a character arrives. |
|
- | 68 | /// Use PollSerial() or SerialCharsReceived() if you want |
|
- | 69 | /// to ensure you do not block here. |
|
58 | /// @param instance |
70 | /// @param instance Pointer to usart_ctl structure |
59 | /// @return |
71 | /// @return next character |
60 | extern uint8_t GetCharSerial(usart_ctl *instance); |
72 | extern uint8_t GetCharSerial(usart_ctl *instance); |
61 | 73 | ||
62 | /// @brief Enable the receive interrupt |
74 | /// @brief Enable the receive interrupt |
63 | /// @param instance |
75 | /// @param instance |
64 | extern void EnableSerialRxInterrupt(usart_ctl *instance); |
76 | extern void EnableSerialRxInterrupt(usart_ctl *instance); |
65 | 77 | ||
- | 78 | /// @brief Send a character |
|
66 | extern void UART_IRQHandler(usart_ctl *instance); |
79 | /// @param instance Pointer to usart_ctl structure |
67 | - | ||
- | 80 | /// @param c character to send |
|
68 | extern void PutCharSerial(usart_ctl *instance, uint8_t c); |
81 | extern void PutCharSerial(usart_ctl *instance, uint8_t c); |
- | 82 | ||
- | 83 | /// @brief Reset transmit buffer |
|
- | 84 | /// @param instance Pointer to usart_ctl structure |
|
69 | extern void ResetTxBuffer(usart_ctl *instance); |
85 | extern void ResetTxBuffer(usart_ctl *instance); |
- | 86 | ||
- | 87 | /// @brief Reset receive buffer |
|
- | 88 | /// @param instance Pointer to usart_ctl structure |
|
70 | extern void ResetRxBuffer(usart_ctl *instance); |
89 | extern void ResetRxBuffer(usart_ctl *instance); |
- | 90 | ||
- | 91 | /// @brief Reset both transmit and receive buffers |
|
- | 92 | /// @param instance Pointer to usart_ctl structure |
|
71 | extern void FlushSerial(usart_ctl *instance); |
93 | extern void FlushSerial(usart_ctl *instance); |
- | 94 | ||
- | 95 | /// @brief Check if the transmitter buffer is empty |
|
- | 96 | /// @param instance Pointer to usart_ctl structure |
|
- | 97 | /// @return 1 if the buffer is empty |
|
72 | extern uint8_t TxBufferEmpty(usart_ctl *instance); |
98 | extern uint8_t TxBufferEmpty(usart_ctl *instance); |
- | 99 | ||
73 | ///@brief wait until the USART buffer is empty and all characters are sent |
100 | ///@brief wait until the USART buffer is empty and all characters are sent |
- | 101 | /// @param instance Pointer to usart_ctl structure |
|
74 | extern void TxWaitEmpty(usart_ctl *instance); |
102 | extern void TxWaitEmpty(usart_ctl *instance); |
75 | 103 | ||
- | 104 | /// @brief Establish this instance as being in control of a USART |
|
- | 105 | /// @param instance Pointer to usart_ctl structure |
|
- | 106 | /// @param usart Handle to usart maintained by HAL |
|
76 | extern void init_usart_ctl(usart_ctl *instance, |
107 | extern void init_usart_ctl(usart_ctl *instance, |
77 | UART_HandleTypeDef *usart); |
108 | UART_HandleTypeDef *usart); |
78 | 109 | ||
- | 110 | /// @brief Set the baud rate on this instance |
|
- | 111 | /// @param instance Pointer to usart_ctl structure |
|
- | 112 | /// @param baud Baud rate in bits per second |
|
79 | extern void setBaud(usart_ctl *instance, uint32_t baud); |
113 | extern void setBaud(usart_ctl *instance, uint32_t baud); |
- | 114 | ||
- | 115 | ||
- | 116 | /// @brief Interrupt handler generic wrapper |
|
- | 117 | /// @param instance Pointer to usart_ctl structure |
|
- | 118 | extern void UART_IRQHandler(usart_ctl *instance); |