25 switch ((uint32_t)usart->
ctrl)
27 case (uint32_t)USART1:
28 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
29 RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART1, ENABLE);
30 RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART1, DISABLE);
32 case (uint32_t)USART2:
33 RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
34 RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART2, ENABLE);
35 RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART2, DISABLE);
37 case (uint32_t)USART3:
38 RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
39 RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART3, ENABLE);
40 RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART3, DISABLE);
43 RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART4, ENABLE);
44 RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART4, ENABLE);
45 RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART4, DISABLE);
48 RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART5, ENABLE);
49 RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART5, ENABLE);
50 RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART5, DISABLE);
52 case (uint32_t)USART6:
53 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART6, ENABLE);
54 RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART6, ENABLE);
55 RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART6, DISABLE);
59 USART_InitStruct.USART_BaudRate = usart->
speed;
60 USART_InitStruct.USART_WordLength = USART_WordLength_8b;
61 USART_InitStruct.USART_StopBits = USART_StopBits_1;
62 USART_InitStruct.USART_Parity = USART_Parity_No;
63 USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
64 USART_InitStruct.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;
65 USART_Init(usart->
ctrl, &USART_InitStruct);
66 USART_Cmd(usart->
ctrl, ENABLE);
74 return ERROR_NOT_YET_IMPLEMENTED;
85 for (i = 0 ; i < len ; i++)
110 for (i = 0 ; i < len ; i++)
120 usart->
ctrl->
DR = data[i];
125 static status_e writeread(
const struct heivs_bus_t *bus, uint32_t address,
const uint8_t *src,
size_t src_len, uint8_t *dst,
size_t dst_len,
size_t *rlen)
139 #if BSP_USART_BUS_COUNT > 0
141 .
ctrl = BSP_USART_BUS0_CTRL,
144 BSP_USART_BUS0_GPIO_TX,
145 BSP_USART_BUS0_GPIO_RX,
147 .speed = BSP_USART_BUS0_SPEED,
150 #if BSP_USART_BUS_COUNT > 1
152 .ctrl = BSP_USART_BUS1_CTRL,
155 BSP_USART_BUS1_GPIO_TX,
156 BSP_USART_BUS1_GPIO_RX,
158 .speed = BSP_USART_BUS1_SPEED,
161 #if BSP_USART_BUS_COUNT > 2
163 .ctrl = BSP_USART_BUS2_CTRL,
166 BSP_USART_BUS2_GPIO_TX,
167 BSP_USART_BUS2_GPIO_RX,
169 .speed = BSP_USART_BUS2_SPEED,
172 #if BSP_USART_BUS_COUNT > 3
174 .ctrl = BSP_USART_BUS3_CTRL,
177 BSP_USART_BUS3_GPIO_TX,
178 BSP_USART_BUS3_GPIO_RX,
180 .speed = BSP_USART_BUS3_SPEED,
183 #if BSP_USART_BUS_COUNT > 4
185 .ctrl = BSP_USART_BUS4_CTRL,
188 BSP_USART_BUS4_GPIO_TX,
189 BSP_USART_BUS4_GPIO_RX,
191 .speed = BSP_USART_BUS4_SPEED,
194 #if BSP_USART_BUS_COUNT > 5
196 .ctrl = BSP_USART_BUS5_CTRL,
199 BSP_USART_BUS5_GPIO_TX,
200 BSP_USART_BUS5_GPIO_RX,
202 .speed = BSP_USART_BUS5_SPEED,
211 #ifndef BSP_USART_BUS0_NAME
212 #define BSP_USART_BUS0_NAME "bus_usart[0]"
214 #if BSP_USART_BUS_COUNT > 0
216 .
name = BSP_USART_BUS0_NAME,
217 .priv = &bus_priv[0],
224 ._writeread = writeread,
227 #if BSP_USART_BUS_COUNT > 1
228 #ifndef BSP_USART_BUS1_NAME
229 #define BSP_USART_BUS1_NAME "bus_usart[1]"
232 .name = BSP_USART_BUS1_NAME,
233 .priv = &bus_priv[1],
240 ._writeread = writeread,
243 #if BSP_USART_BUS_COUNT > 2
244 #ifndef BSP_USART_BUS2_NAME
245 #define BSP_USART_BUS2_NAME "bus_usart[2]"
248 .name = BSP_USART_BUS2_NAME,
249 .priv = &bus_priv[2],
256 ._writeread = writeread,
259 #if BSP_USART_BUS_COUNT > 3
260 #ifndef BSP_USART_BUS3_NAME
261 #define BSP_USART_BUS3_NAME "bus_usart[3]"
264 .name = BSP_USART_BUS3_NAME,
265 .priv = &bus_priv[3],
272 ._writeread = writeread,
275 #if BSP_USART_BUS_COUNT > 4
276 #ifndef BSP_USART_BUS4_NAME
277 #define BSP_USART_BUS4_NAME "bus_usart[4]"
280 .name = BSP_USART_BUS4_NAME,
281 .priv = &bus_priv[4],
288 ._writeread = writeread,
291 #if BSP_USART_BUS_COUNT > 5
292 #ifndef BSP_USART_BUS5_NAME
293 #define BSP_USART_BUS5_NAME "bus_usart[5]"
296 .name = BSP_USART_BUS5_NAME,
297 .priv = &bus_priv[5],
304 ._writeread = writeread,
307 #if BSP_USART_BUS_COUNT > 6
308 #error this CPU has no 7 usart buses
This file contains all the functions prototypes for the RCC firmware library.
BSP - Board Support Package.
ssize_t read(int fd, void *buf, size_t count)
Variable part of the bus description.
static uint32_t time_elapsed(timeout_t timeout)
Is this time passed?
USART_TypeDef * ctrl
Controller.
const struct heivs_bus_t bus_usart[BSP_USART_BUS_COUNT]
All USART busses.
Function is not available.
This file contains all the functions prototypes for the USART firmware library.
const struct gpio_t gpios[2]
Gpios.
ssize_t write(int fd, const void *buf, size_t count)
timeout_t time_set_timeout_ms(uint32_t ms)
Set an obscure time at least ms milliseconds in the future.
status_e gpio_setup_list(const struct gpio_t gpio[], size_t len)
Setup an array of gpio.
#define ARRAY_SIZE(x)
Number of elements in the array.
#define BSP_USART_BUS_COUNT
Usart buses count.
USART Init Structure definition.