diff options
| author | Keith Packard <keithp@keithp.com> | 2012-03-23 00:42:13 -0700 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2012-03-28 21:37:04 -0700 | 
| commit | d7ddfd4e6d75e50ca64a342181f5c52e9f4919af (patch) | |
| tree | 5da8516a3e6b45ca1554041e8f2808107df753e3 /src | |
| parent | 606d866153cb639a2400cbedbc45046372ad1b30 (diff) | |
Use 16-bits for STM32 LED mask. Export serial I/O functions
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src')
| -rw-r--r-- | src/stm/ao_arch.h | 38 | ||||
| -rw-r--r-- | src/stm/ao_led.c | 14 | ||||
| -rw-r--r-- | src/stm/ao_serial_stm.c | 26 | 
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 | 
