ATY_LIB V2_102_230218
ATY_LIB for general devices or ALGO
 
Loading...
Searching...
No Matches
uart1_timer2_rx.c File Reference
#include "fw_hal.h"

Go to the source code of this file.

Macros

#define RING_BUFFER_SIZE   0x20
 

Functions

void ring_buffer_reset (void)
 
void ring_buffer_push (uint8_t c)
 
uint8_t ring_buffer_pop (uint8_t *c)
 
uint16_t ring_buffer_size (void)
 
uint16_t ring_buffer_read (uint8_t *buf)
 
 INTERRUPT (UART1_Routine, EXTI_VectUART1)
 
void main (void)
 

Variables

__IDATA uint8_t ring_buffer [RING_BUFFER_SIZE]
 
static volatile uint16_t from
 
static volatile uint16_t to
 

Macro Definition Documentation

◆ RING_BUFFER_SIZE

#define RING_BUFFER_SIZE   0x20

Definition at line 17 of file uart1_timer2_rx.c.

Function Documentation

◆ INTERRUPT()

INTERRUPT ( UART1_Routine  ,
EXTI_VectUART1   
)

Definition at line 29 of file uart1_timer2_rx.c.

30{
31 uint8_t c;
32
33 if (RI)
34 {
36 c = SBUF;
37 if (c == '\r' || c == '\n')
38 {
39 c = '\0';
41 }
42 else if (c == 0x7F)
43 {
45 }
46 else
47 {
49 }
50 }
51}
unsigned char uint8_t
Definition: fw_types.h:18
#define UART1_ClearRxInterrupt()
Definition: fw_uart.h:53
uint8_t ring_buffer_pop(uint8_t *c)
void ring_buffer_push(uint8_t c)

◆ main()

void main ( void  )

Definition at line 53 of file uart1_timer2_rx.c.

54{
55 uint8_t msg[RING_BUFFER_SIZE], size;
56
58 // UART1, baud 115200, baud source Timer2, 1T mode, interrupt on
61 // Enable UART1 interrupt
64 // Initialize ring buffer
66
67 while(1)
68 {
69 size = ring_buffer_read((uint8_t *)msg);
70 if (size > 0)
71 {
73 UART1_TxString(msg);
74 UART1_TxString("\r\n");
75 }
76 SYS_Delay(500);
77 }
78}
#define EXTI_Global_SetIntState(__STATE__)
Definition: fw_exti.h:115
#define EXTI_UART1_SetIntState(__STATE__)
Definition: fw_exti.h:119
void SYS_SetClock(void)
Definition: fw_sys.c:40
void SYS_Delay(uint16_t t)
Definition: fw_sys.c:65
@ HAL_State_ON
Definition: fw_types.h:71
void UART1_TxString(uint8_t *str)
Definition: fw_uart.c:85
@ UART1_BaudSource_Timer2
Definition: fw_uart.h:34
void UART1_Config8bitUart(UART1_BaudSource_t baudSource, HAL_State_t _1TMode, uint32_t baudrate)
Definition: fw_uart.c:56
#define UART1_SetRxState(__STATE__)
Definition: fw_uart.h:51
uint16_t ring_buffer_read(uint8_t *buf)
void ring_buffer_reset(void)
#define RING_BUFFER_SIZE

◆ ring_buffer_pop()

uint8_t ring_buffer_pop ( uint8_t c)

Definition at line 107 of file uart1_timer2_rx.c.

108{
109 if (to != from)
110 {
111 to = (to > 0)? to - 1 : RING_BUFFER_SIZE - 1;
112 *c = ring_buffer[to];
113 return 1;
114 }
115 else
116 {
117 return 0;
118 }
119}
static volatile uint16_t to
__IDATA uint8_t ring_buffer[RING_BUFFER_SIZE]
static volatile uint16_t from

◆ ring_buffer_push()

void ring_buffer_push ( uint8_t  c)

Definition at line 90 of file uart1_timer2_rx.c.

91{
92 ring_buffer[to++] = c;
93 if (to >= RING_BUFFER_SIZE)
94 {
95 to = 0;
96 }
97 if (to == from)
98 {
99 from++;
100 if (from >= RING_BUFFER_SIZE)
101 {
102 from = 0;
103 }
104 }
105}

◆ ring_buffer_read()

uint16_t ring_buffer_read ( uint8_t buf)

Definition at line 133 of file uart1_timer2_rx.c.

134{
136 if (to >= from)
137 {
138 pos = from;
139 while(pos < to)
140 {
141 *buf++ = ring_buffer[pos++];
142 }
143 return to - from;
144 }
145 else
146 {
147 pos = from;
148 while(pos < RING_BUFFER_SIZE)
149 {
150 *buf++ = ring_buffer[pos++];
151 }
152 pos = 0;
153 while(pos < to)
154 {
155 *buf++ = ring_buffer[pos++];
156 }
157 return RING_BUFFER_SIZE - from + to;
158 }
159}
uint8_t pos
unsigned short uint16_t
Definition: fw_types.h:19

◆ ring_buffer_reset()

void ring_buffer_reset ( void  )

Ring buffer methods

Definition at line 84 of file uart1_timer2_rx.c.

85{
86 from = 0;
87 to = 0;
88}

◆ ring_buffer_size()

uint16_t ring_buffer_size ( void  )

Definition at line 121 of file uart1_timer2_rx.c.

122{
123 if (to >= from)
124 {
125 return to - from;
126 }
127 else
128 {
129 return RING_BUFFER_SIZE - from + to;
130 }
131}

Variable Documentation

◆ from

volatile uint16_t from
static

Definition at line 20 of file uart1_timer2_rx.c.

◆ ring_buffer

__IDATA uint8_t ring_buffer[RING_BUFFER_SIZE]

Definition at line 19 of file uart1_timer2_rx.c.

◆ to

volatile uint16_t to
static

Definition at line 20 of file uart1_timer2_rx.c.