Subversion Repositories libSerial

Rev

Rev 13 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 13 Rev 15
Line 3... Line 3...
3
 *
3
 *
4
 *  Created on: 4 Jan 2016
4
 *  Created on: 4 Jan 2016
5
 *      Author: Mike
5
 *      Author: Mike
6
 */
6
 */
7
 
7
 
-
 
8
 
-
 
9
 
-
 
10
/* Includes ------------------------------------------------------------------*/
-
 
11
#include "stm32f1xx_hal.h"
-
 
12
 
-
 
13
 
8
#pragma once 
14
#pragma once 
9
 
15
 
10
#include "main.h"
16
#include <stdint.h>
-
 
17
 
-
 
18
#if defined __cplusplus
-
 
19
extern "C"
-
 
20
{
-
 
21
#endif 
11
 
22
 
12
 
23
 
13
typedef struct
24
struct usart_ctl
14
{
25
{
15
        /// @brief UART handle
26
        /// @brief UART handle
16
        UART_HandleTypeDef *Handle;
27
        UART_HandleTypeDef *Handle;
17
        /// @brief Locally maintained transmit buffer
28
        /// @brief Locally maintained transmit buffer
-
 
29
       
18
        volatile uint8_t tx_usart_buff[TX_USART_BUFF_SIZ];
30
        volatile uint8_t * tx_usart_buff;
-
 
31
        uint16_t  tx_usart_buff_size;
-
 
32
        uint16_t rx_usart_buff_size;
19
        volatile unsigned int tx_usart_in_Ptr;
33
        volatile uint16_t tx_usart_in_Ptr;
20
        volatile unsigned int tx_usart_out_Ptr;
34
        volatile uint16_t tx_usart_out_Ptr;
21
        volatile unsigned int tx_usart_overruns;
35
        volatile uint16_t tx_usart_overruns;
22
        /// @brief Set when the usart is transmitting
36
        /// @brief Set when the usart is transmitting
23
        volatile uint8_t tx_usart_running;
37
        volatile uint8_t tx_usart_running;
24
       
38
       
25
        /// @brief Locally maintained receive buffer
39
        /// @brief Locally maintained receive buffer
26
        volatile uint8_t rx_usart_buff[RX_USART_BUFF_SIZ];
40
        volatile uint8_t * rx_usart_buff;
27
        volatile unsigned int rx_usart_in_Ptr;
41
        volatile uint16_t rx_usart_in_Ptr;
28
        volatile unsigned int rx_usart_out_Ptr;
42
        volatile uint16_t rx_usart_out_Ptr;
29
        /// @brief Set when the receiver buffer is full
43
        /// @brief Set when the receiver buffer is full
30
        volatile uint8_t rx_usart_buffer_full;
44
        volatile uint8_t rx_usart_buffer_full;
31
} usart_ctl;
45
} ;
32
 
46
 
33
 
47
 
34
 
48
 
35
#if defined SERIAL_UART1
49
#if defined SERIAL_UART1
36
extern usart_ctl uc1;
50
extern struct usart_ctl uc1;
37
#endif
51
#endif
38
#if defined SERIAL_UART2
52
#if defined SERIAL_UART2
39
extern usart_ctl uc2;
53
extern struct usart_ctl uc2;
40
#endif
54
#endif
41
#if defined SERIAL_UART3
55
#if defined SERIAL_UART3
42
extern usart_ctl uc3;
56
extern struct usart_ctl uc3;
43
#endif
57
#endif
44
#if defined SERIAL_UART4
58
#if defined SERIAL_UART4
45
extern usart_ctl uc4;
59
extern struct usart_ctl uc4;
46
#endif
60
#endif
47
#if defined SERIAL_UART5
61
#if defined SERIAL_UART5
48
extern usart_ctl uc5;
62
extern struct usart_ctl uc5;
49
#endif
63
#endif
50
 
-
 
51
///@brief  returns the number of characters in the recieve buffer
-
 
52
///@param instance Pointer to usart_ctl structure
-
 
53
///@return Number of characters
-
 
54
extern uint16_t SerialCharsReceived(usart_ctl *instance);
-
 
55
 
-
 
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 
-
 
59
extern uint16_t SerialTransmitSpace(usart_ctl *instance);
-
 
60
 
-
 
61
/// @brief Return 1 if there are any characters in the receive buffer
-
 
62
/// @param instance Pointer to usart_ctl structure
-
 
63
/// @return 1 if any characters 
-
 
64
extern uint8_t PollSerial(usart_ctl *instance);
-
 
65
 
-
 
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.
-
 
70
/// @param instance Pointer to usart_ctl structure 
-
 
71
/// @return next character 
-
 
72
extern uint8_t GetCharSerial(usart_ctl *instance);
-
 
73
 
-
 
74
/// @brief Enable the receive interrupt 
-
 
75
/// @param instance 
-
 
76
extern void EnableSerialRxInterrupt(usart_ctl *instance);
-
 
77
 
-
 
78
/// @brief Send a character
-
 
79
/// @param instance Pointer to usart_ctl structure
-
 
80
/// @param c character to send
-
 
81
extern void PutCharSerial(usart_ctl *instance, uint8_t c);
-
 
82
 
-
 
83
/// @brief Reset transmit buffer
-
 
84
/// @param instance Pointer to usart_ctl structure
-
 
85
extern void ResetTxBuffer(usart_ctl *instance);
-
 
86
 
-
 
87
/// @brief Reset receive buffer
-
 
88
/// @param instance Pointer to usart_ctl structure
-
 
89
extern void ResetRxBuffer(usart_ctl *instance);
-
 
90
 
-
 
91
/// @brief Reset both transmit and receive buffers
-
 
92
/// @param instance Pointer to usart_ctl structure
-
 
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
-
 
98
extern uint8_t TxBufferEmpty(usart_ctl *instance);
-
 
99
 
-
 
100
///@brief  wait until the USART buffer is empty and all characters are sent
-
 
101
/// @param instance Pointer to usart_ctl structure
-
 
102
extern void TxWaitEmpty(usart_ctl *instance);
-
 
103
 
-
 
104
/// @brief Establish this instance as being in control of a USART
64
/// @brief Establish this instance as being in control of a USART
105
/// @param instance  Pointer to usart_ctl structure
65
/// @param instance  Pointer to usart_ctl structure
106
/// @param usart Handle to usart maintained by HAL
66
/// @param usart Handle to usart maintained by HAL
-
 
67
/// @param tx_buffer Statically allocated memory for Tx buffer
-
 
68
/// @param rx_buffer Statically allocated memory for Rx buffer
-
 
69
/// @param rx_buffer_size Rx Buffer size
-
 
70
/// @param tx_buffer_size Tx Buffer size
107
extern void init_usart_ctl(usart_ctl *instance,
71
extern void init_usart_ctl(struct usart_ctl *instance,
108
                                                   UART_HandleTypeDef *usart);
72
                                                   UART_HandleTypeDef *usart,
-
 
73
                                                   volatile uint8_t * tx_buffer,
-
 
74
                                                   volatile uint8_t * rx_buffer,
-
 
75
                                                   uint16_t tx_buffer_size,
-
 
76
                                                   uint16_t rx_buffer_size);
109
 
77
 
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
-
 
113
extern void setBaud(usart_ctl *instance, uint32_t baud);
-
 
114
 
78
 
115
 
79
 
116
/// @brief Interrupt handler generic wrapper 
80
#if defined __cplusplus
-
 
81
}
-
 
82
#endif
-
 
83
 
117
/// @param instance Pointer to usart_ctl structure
84
#include "serialCalls.h"
118
extern void UART_IRQHandler(usart_ctl *instance);
-
 
-
 
85