projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'micropeak-1.1'
[fw/altos]
/
src
/
stm
/
ao_serial_stm.c
diff --git
a/src/stm/ao_serial_stm.c
b/src/stm/ao_serial_stm.c
index 00409f4a85957e16e53825f4e8420e85a168c535..ce33f97e97416eaaf2a9eddfb54ba9f19943cb9e 100644
(file)
--- a/
src/stm/ao_serial_stm.c
+++ b/
src/stm/ao_serial_stm.c
@@
-17,13
+17,6
@@
#include <ao.h>
#include <ao.h>
-struct ao_stm_usart {
- struct ao_fifo rx_fifo;
- struct ao_fifo tx_fifo;
- struct stm_usart *reg;
- uint8_t tx_started;
-};
-
void
ao_debug_out(char c)
{
void
ao_debug_out(char c)
{
@@
-78,16
+71,19
@@
ao_usart_getchar(struct ao_stm_usart *usart)
return c;
}
return c;
}
-char
+int
ao_usart_pollchar(struct ao_stm_usart *usart)
{
ao_usart_pollchar(struct ao_stm_usart *usart)
{
-
char
c;
+
int
c;
ao_arch_block_interrupts();
if (ao_fifo_empty(usart->rx_fifo))
c = AO_READ_AGAIN;
ao_arch_block_interrupts();
if (ao_fifo_empty(usart->rx_fifo))
c = AO_READ_AGAIN;
- else
- ao_fifo_remove(usart->rx_fifo,c);
+ else {
+ uint8_t u;
+ ao_fifo_remove(usart->rx_fifo,u);
+ c = u;
+ }
ao_arch_release_interrupts();
return c;
}
ao_arch_release_interrupts();
return c;
}
@@
-127,12
+123,15
@@
static const struct {
[AO_SERIAL_SPEED_57600] = {
AO_PCLK1 / 57600
},
[AO_SERIAL_SPEED_57600] = {
AO_PCLK1 / 57600
},
+ [AO_SERIAL_SPEED_115200] = {
+ AO_PCLK1 / 115200
+ },
};
void
ao_usart_set_speed(struct ao_stm_usart *usart, uint8_t speed)
{
};
void
ao_usart_set_speed(struct ao_stm_usart *usart, uint8_t speed)
{
- if (speed > AO_SERIAL_SPEED_
576
00)
+ if (speed > AO_SERIAL_SPEED_
1152
00)
return;
usart->reg->brr = ao_usart_speeds[speed].brr;
}
return;
usart->reg->brr = ao_usart_speeds[speed].brr;
}
@@
-201,7
+200,7
@@
ao_serial1_putchar(char c)
ao_usart_putchar(&ao_stm_usart1, c);
}
ao_usart_putchar(&ao_stm_usart1, c);
}
-char
+int
ao_serial1_pollchar(void)
{
return ao_usart_pollchar(&ao_stm_usart1);
ao_serial1_pollchar(void)
{
return ao_usart_pollchar(&ao_stm_usart1);
@@
-232,7
+231,7
@@
ao_serial2_putchar(char c)
ao_usart_putchar(&ao_stm_usart2, c);
}
ao_usart_putchar(&ao_stm_usart2, c);
}
-char
+int
ao_serial2_pollchar(void)
{
return ao_usart_pollchar(&ao_stm_usart2);
ao_serial2_pollchar(void)
{
return ao_usart_pollchar(&ao_stm_usart2);
@@
-263,7
+262,7
@@
ao_serial3_putchar(char c)
ao_usart_putchar(&ao_stm_usart3, c);
}
ao_usart_putchar(&ao_stm_usart3, c);
}
-char
+int
ao_serial3_pollchar(void)
{
return ao_usart_pollchar(&ao_stm_usart3);
ao_serial3_pollchar(void)
{
return ao_usart_pollchar(&ao_stm_usart3);