Use 16-bits for STM32 LED mask. Export serial I/O functions
authorKeith Packard <keithp@keithp.com>
Fri, 23 Mar 2012 07:42:13 +0000 (00:42 -0700)
committerKeith Packard <keithp@keithp.com>
Thu, 29 Mar 2012 04:37:04 +0000 (21:37 -0700)
Signed-off-by: Keith Packard <keithp@keithp.com>
src/stm/ao_arch.h
src/stm/ao_led.c
src/stm/ao_serial_stm.c

index 55976c89830ac088a493442f3d4421e7cc92e867..fcc177ef0b093fd610cc9e07168d2ad15acf1f24 100644 (file)
@@ -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_ */
 
index 0574aa2a087ce33bb46831f1bbdfc0aa8d599d3e..d649f3d7a03a71559bff81fbb638d35c2aab19bb 100644 (file)
 
 #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;
 
index 95189f0c6704d1080b5dcbc947e82b55293810f1..a8c102227f7613ae4eb4892bdbebd12229a31106 100644 (file)
@@ -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