summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/stm/ao_arch.h38
-rw-r--r--src/stm/ao_led.c14
-rw-r--r--src/stm/ao_serial_stm.c26
3 files changed, 64 insertions, 14 deletions
diff --git a/src/stm/ao_arch.h b/src/stm/ao_arch.h
index 55976c89..fcc177ef 100644
--- a/src/stm/ao_arch.h
+++ b/src/stm/ao_arch.h
@@ -27,6 +27,8 @@
#define AO_STACK_SIZE 1024
+#define AO_LED_TYPE uint16_t
+
/* Various definitions to make GCC look more like SDCC */
#define ao_arch_naked_declare __attribute__((naked))
@@ -163,5 +165,41 @@ void ao_lcd_font_string(char *s);
#define USE_SERIAL_STDIN (USE_SERIAL_1_STDIN + USE_SERIAL_2_STDIN + USE_SERIAL_3_STDIN)
+char
+ao_serial1_getchar(void);
+
+void
+ao_serial1_putchar(char c);
+
+char
+ao_serial1_pollchar(void);
+
+void
+ao_serial1_set_speed(uint8_t speed);
+
+char
+ao_serial2_getchar(void);
+
+void
+ao_serial2_putchar(char c);
+
+char
+ao_serial2_pollchar(void);
+
+void
+ao_serial2_set_speed(uint8_t speed);
+
+char
+ao_serial3_getchar(void);
+
+void
+ao_serial3_putchar(char c);
+
+char
+ao_serial3_pollchar(void);
+
+void
+ao_serial3_set_speed(uint8_t speed);
+
#endif /* _AO_ARCH_H_ */
diff --git a/src/stm/ao_led.c b/src/stm/ao_led.c
index 0574aa2a..d649f3d7 100644
--- a/src/stm/ao_led.c
+++ b/src/stm/ao_led.c
@@ -17,34 +17,34 @@
#include "ao.h"
-__pdata uint8_t ao_led_enable;
+__pdata uint16_t ao_led_enable;
void
-ao_led_on(uint8_t colors)
+ao_led_on(uint16_t colors)
{
LED_PORT.odr |= (colors & ao_led_enable);
}
void
-ao_led_off(uint8_t colors)
+ao_led_off(uint16_t colors)
{
LED_PORT.odr &= ~(colors & ao_led_enable);
}
void
-ao_led_set(uint8_t colors)
+ao_led_set(uint16_t colors)
{
LED_PORT.odr = (LED_PORT.odr & ~(ao_led_enable)) | (colors & ao_led_enable);
}
void
-ao_led_toggle(uint8_t colors)
+ao_led_toggle(uint16_t colors)
{
LED_PORT.odr ^= (colors & ao_led_enable);
}
void
-ao_led_for(uint8_t colors, uint16_t ticks) __reentrant
+ao_led_for(uint16_t colors, uint16_t ticks) __reentrant
{
ao_led_on(colors);
ao_delay(ticks);
@@ -52,7 +52,7 @@ ao_led_for(uint8_t colors, uint16_t ticks) __reentrant
}
void
-ao_led_init(uint8_t enable)
+ao_led_init(uint16_t enable)
{
int bit;
diff --git a/src/stm/ao_serial_stm.c b/src/stm/ao_serial_stm.c
index 95189f0c..a8c10222 100644
--- a/src/stm/ao_serial_stm.c
+++ b/src/stm/ao_serial_stm.c
@@ -189,7 +189,6 @@ struct ao_stm_usart ao_stm_usart1;
void stm_usart1_isr(void) { ao_usart_isr(&ao_stm_usart1, USE_SERIAL_1_STDIN); }
-#if USE_SERIAL_1_STDIN
char
ao_serial1_getchar(void)
{
@@ -207,7 +206,12 @@ ao_serial1_pollchar(void)
{
return ao_usart_pollchar(&ao_stm_usart1);
}
-#endif /* USE_SERIAL_1_STDIN */
+
+void
+ao_serial1_set_speed(uint8_t speed)
+{
+ ao_usart_set_speed(&ao_stm_usart1, speed);
+}
#endif /* HAS_SERIAL_1 */
#if HAS_SERIAL_2
@@ -216,7 +220,6 @@ struct ao_stm_usart ao_stm_usart2;
void stm_usart2_isr(void) { ao_usart_isr(&ao_stm_usart2, USE_SERIAL_2_STDIN); }
-#if USE_SERIAL_2_STDIN
char
ao_serial2_getchar(void)
{
@@ -234,7 +237,12 @@ ao_serial2_pollchar(void)
{
return ao_usart_pollchar(&ao_stm_usart2);
}
-#endif /* USE_SERIAL_2_STDIN */
+
+void
+ao_serial2_set_speed(uint8_t speed)
+{
+ ao_usart_set_speed(&ao_stm_usart2, speed);
+}
#endif /* HAS_SERIAL_2 */
#if HAS_SERIAL_3
@@ -243,7 +251,6 @@ struct ao_stm_usart ao_stm_usart3;
void stm_usart3_isr(void) { ao_usart_isr(&ao_stm_usart3, USE_SERIAL_3_STDIN); }
-#if USE_SERIAL_3_STDIN
char
ao_serial3_getchar(void)
{
@@ -259,9 +266,14 @@ ao_serial3_putchar(char c)
char
ao_serial3_pollchar(void)
{
- return ao_usart_pollchar(&ao_stm_usart2);
+ return ao_usart_pollchar(&ao_stm_usart3);
+}
+
+void
+ao_serial3_set_speed(uint8_t speed)
+{
+ ao_usart_set_speed(&ao_stm_usart3, speed);
}
-#endif /* USE_SERIAL_3_STDIN */
#endif /* HAS_SERIAL_3 */
void