ATY_LIB V2_102_230218
ATY_LIB for general devices or ALGO
 
Loading...
Searching...
No Matches
fw_uart.c
Go to the documentation of this file.
1// Copyright 2021 IOsetting <iosetting(at)outlook.com>
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15#include "fw_uart.h"
16#include "fw_tim.h"
17#include "fw_sys.h"
18
19
21{
23 value = sysclk / (4 * baudrate);
24 if (!_1TMode)
25 value = value / 12;
26 if (value > 0xFFFF)
27 return 0;
28 else
29 return 0xFFFF - value + 1;
30}
31
32/**************************************************************************** /
33 * UART1
34*/
35
37{
38 UART1_SetBaudSource(baudSource);
39 // Timer1 configuration. Mode0 only, mode2 is covered by mode0 so it is unnecessary.
40 if (baudSource == UART1_BaudSource_Timer1)
41 {
42 TIM_Timer1_Set1TMode(_1TMode);
44 TIM_Timer1_SetInitValue(init >> 8, init & 0xFF);
46 }
47 // Timer2 configuration
48 else
49 {
50 // Timer2: 1T mode and initial value. prescaler is ignored, no interrupt.
51 TIM_Timer2_Set1TMode(_1TMode);
52 TIM_Timer2_SetInitValue(init >> 8, init & 0xFF);
54 }
55}
57{
58 uint16_t init;
59 SM0=0; SM1=1;
60 init = UART_Timer_InitValueCalculate(__SYSCLOCK, _1TMode, baudrate);
61 _UART1_ConfigDynUart(baudSource, _1TMode, init);
62}
63
65{
66 uint16_t init;
67 SM0=1; SM1=1;
68 init = UART_Timer_InitValueCalculate(__SYSCLOCK, _1TMode, baudrate);
69 _UART1_ConfigDynUart(baudSource, _1TMode, init);
70}
71
72void UART1_TxChar(char dat)
73{
75 while(!TI);
77}
78
80{
81 UART1_TxChar(HEX_TABLE[hex >> 4]);
82 UART1_TxChar(HEX_TABLE[hex & 0xF]);
83}
84
86{
87 while (*str) UART1_TxChar(*str++);
88}
89
90int putchar(int dat) {
92 while(!TI);
94 return dat;
95}
96
97
98/**************************************************************************** /
99 * UART2
100*/
101
102void UART2_Config(HAL_State_t _1TMode, uint32_t baudrate)
103{
104 uint16_t init;
105
106 init = UART_Timer_InitValueCalculate(__SYSCLOCK, _1TMode, baudrate);
107 // Timer2: 1T mode and initial value. prescaler is ignored, no interrupt.
108 TIM_Timer2_Set1TMode(_1TMode);
109 TIM_Timer2_SetInitValue(init >> 8, init & 0xFF);
111}
112
114{
116 while(!UART2_TxFinished());
118}
119
121{
122 UART2_TxChar(HEX_TABLE[hex >> 4]);
123 UART2_TxChar(HEX_TABLE[hex & 0xF]);
124}
125
127{
128 while (*str) UART2_TxChar(*str++);
129}
130
131
132/**************************************************************************** /
133 * UART3
134*/
135
137{
138 uint16_t init;
139
141 init = UART_Timer_InitValueCalculate(__SYSCLOCK, _1TMode, baudrate);
142 // Timer2: 1T mode and initial value. prescaler is ignored, no interrupt.
143 TIM_Timer2_Set1TMode(_1TMode);
144 TIM_Timer2_SetInitValue(init >> 8, init & 0xFF);
146}
147
149{
150 uint16_t init;
151
153 init = UART_Timer_InitValueCalculate(__SYSCLOCK, _1TMode, baudrate);
154 // Timer3: 1T mode and initial value. prescaler is ignored, no interrupt.
155 TIM_Timer3_Set1TMode(_1TMode);
156 TIM_Timer3_SetInitValue(init >> 8, init & 0xFF);
158}
159
160
161/**************************************************************************** /
162 * UART4
163*/
164
166{
167 uint16_t init;
168
170 init = UART_Timer_InitValueCalculate(__SYSCLOCK, _1TMode, baudrate);
171 TIM_Timer2_Set1TMode(_1TMode);
172 TIM_Timer2_SetInitValue(init >> 8, init & 0xFF);
174}
175
177{
178 uint16_t init;
179
181 init = UART_Timer_InitValueCalculate(__SYSCLOCK, _1TMode, baudrate);
182 TIM_Timer4_Set1TMode(_1TMode);
183 TIM_Timer4_SetInitValue(init >> 8, init & 0xFF);
185}
value
Definition: DS18B20_ATY.c:216
__CODE int8_t dat[20]
#define __SYSCLOCK
Definition: fw_sys.h:45
@ TIM_TimerMode_16BitAuto
Definition: fw_tim.h:24
#define TIM_Timer4_SetInitValue(__TH__, __TL__)
Definition: fw_tim.h:116
#define TIM_Timer3_Set1TMode(__STATE__)
Definition: fw_tim.h:96
#define TIM_Timer1_Set1TMode(__STATE__)
Definition: fw_tim.h:57
#define TIM_Timer2_SetInitValue(__TH__, __TL__)
Definition: fw_tim.h:82
#define TIM_Timer3_SetInitValue(__TH__, __TL__)
Definition: fw_tim.h:99
#define TIM_Timer2_SetRunState(__STATE__)
Definition: fw_tim.h:75
#define TIM_Timer1_SetRunState(__STATE__)
Definition: fw_tim.h:52
#define TIM_Timer1_SetMode(__TIM_TIMER_MODE__)
Definition: fw_tim.h:60
#define TIM_Timer2_Set1TMode(__STATE__)
Definition: fw_tim.h:79
#define TIM_Timer1_SetInitValue(__TH__, __TL__)
Definition: fw_tim.h:61
#define TIM_Timer4_SetRunState(__STATE__)
Definition: fw_tim.h:109
#define TIM_Timer4_Set1TMode(__STATE__)
Definition: fw_tim.h:113
#define TIM_Timer3_SetRunState(__STATE__)
Definition: fw_tim.h:92
unsigned long uint32_t
Definition: fw_types.h:20
unsigned short uint16_t
Definition: fw_types.h:19
HAL_State_t
Definition: fw_types.h:69
@ HAL_State_ON
Definition: fw_types.h:71
short int16_t
Definition: fw_types.h:24
unsigned char uint8_t
Definition: fw_types.h:18
void _UART1_ConfigDynUart(UART1_BaudSource_t baudSource, HAL_State_t _1TMode, int16_t init)
Definition: fw_uart.c:36
void UART1_TxChar(char dat)
Definition: fw_uart.c:72
void UART1_TxString(uint8_t *str)
Definition: fw_uart.c:85
void UART3_ConfigOnTimer3(HAL_State_t _1TMode, uint32_t baudrate)
Definition: fw_uart.c:148
void UART2_TxChar(char dat)
Definition: fw_uart.c:113
void UART2_TxString(uint8_t *str)
Definition: fw_uart.c:126
void UART1_TxHex(uint8_t hex)
Definition: fw_uart.c:79
int16_t UART_Timer_InitValueCalculate(uint32_t sysclk, HAL_State_t _1TMode, uint32_t baudrate)
Definition: fw_uart.c:20
void UART1_Config8bitUart(UART1_BaudSource_t baudSource, HAL_State_t _1TMode, uint32_t baudrate)
Definition: fw_uart.c:56
void UART2_TxHex(uint8_t hex)
Definition: fw_uart.c:120
void UART3_ConfigOnTimer2(HAL_State_t _1TMode, uint32_t baudrate)
Definition: fw_uart.c:136
int putchar(int dat)
Definition: fw_uart.c:90
void UART1_Config9bitUart(UART1_BaudSource_t baudSource, HAL_State_t _1TMode, uint32_t baudrate)
Definition: fw_uart.c:64
void UART4_ConfigOnTimer4(HAL_State_t _1TMode, uint32_t baudrate)
Definition: fw_uart.c:176
void UART4_ConfigOnTimer2(HAL_State_t _1TMode, uint32_t baudrate)
Definition: fw_uart.c:165
void UART2_Config(HAL_State_t _1TMode, uint32_t baudrate)
Definition: fw_uart.c:102
#define UART1_ClearTxInterrupt()
Definition: fw_uart.h:52
#define UART2_TxFinished()
Definition: fw_uart.h:112
#define UART1_WriteBuffer(__DATA__)
Definition: fw_uart.h:54
UART1_BaudSource_t
Definition: fw_uart.h:32
@ UART1_BaudSource_Timer1
Definition: fw_uart.h:33
#define UART2_ClearTxInterrupt()
Definition: fw_uart.h:109
__CODE char HEX_TABLE[16]
Definition: fw_util.c:18
#define UART3_SetBaudSource(__BAUD_SRC__)
Definition: fw_uart.h:134
#define UART4_SetBaudSource(__BAUD_SRC__)
Definition: fw_uart.h:153
#define UART2_WriteBuffer(__DATA__)
Definition: fw_uart.h:111
#define UART1_SetBaudSource(__BAUD_SRC__)
Definition: fw_uart.h:56