#define AO_LED_TYPE uint16_t
-#ifndef AO_TICK_TYPE
-#define AO_TICK_TYPE uint16_t
-#define AO_TICK_SIGNED int16_t
-#endif
-
#define AO_PORT_TYPE uint16_t
/* Various definitions to make GCC look more like SDCC */
#define ao_arch_naked_declare __attribute__((naked))
#define ao_arch_naked_define
-#define __pdata
-#define __data
-#define __xdata
-#define __code const
-#define __reentrant
#define __interrupt(n)
#define __at(n)
#define ao_arch_interrupt(n) /* nothing */
-#undef putchar
-#undef getchar
-#define putchar(c) ao_putchar(c)
-#define getchar ao_getchar
-
-extern void putchar(char c);
-extern char getchar(void);
-extern void ao_avr_stdio_init(void);
-
-
/*
* ao_romconfig.c
*/
-#define AO_ROMCONFIG_VERSION 2
-
-#define AO_ROMCONFIG_SYMBOL(a) __attribute__((section(".romconfig"))) const
+#define AO_ROMCONFIG_SYMBOL __attribute__((section(".init.1"))) const
+#define AO_USBCONFIG_SYMBOL __attribute__((section(".init.2"))) const
extern const uint16_t ao_romconfig_version;
extern const uint16_t ao_romconfig_check;
extern const uint16_t ao_serial_number;
extern const uint32_t ao_radio_cal;
-#define ao_arch_task_members\
- uint32_t *sp; /* saved stack pointer */
-
#define ao_arch_block_interrupts() asm("cpsid i")
#define ao_arch_release_interrupts() asm("cpsie i")
* For the stm32f042, we want to use the USB-based HSI48 clock
*/
-#if AO_HSI48
+#ifndef AO_SYSCLK
+#if AO_HSI
+#define AO_SYSCLK STM_HSI_FREQ
+#endif
+#if AO_HSI48
#define AO_SYSCLK 48000000
-#define AO_HCLK (AO_SYSCLK / AO_AHB_PRESCALER)
-
#endif
+#endif
+
+#define AO_HCLK (AO_SYSCLK / AO_AHB_PRESCALER)
#if AO_HSE || AO_HSI
#endif
#define AO_HCLK (AO_SYSCLK / AO_AHB_PRESCALER)
-#define AO_PCLK1 (AO_HCLK / AO_APB1_PRESCALER)
-#define AO_PCLK2 (AO_HCLK / AO_APB2_PRESCALER)
+#define AO_PCLK (AO_HCLK / AO_APB_PRESCALER)
#define AO_SYSTICK (AO_HCLK)
#define AO_PANIC_DELAY_SCALE (AO_SYSCLK / 12000000)
-#if AO_APB1_PRESCALER == 1
-#define AO_TIM23467_CLK AO_PCLK1
-#else
-#define AO_TIM23467_CLK (2 * AO_PCLK1)
-#endif
-
-#if AO_APB2_PRESCALER == 1
-#define AO_TIM91011_CLK AO_PCLK2
+#if AO_APB_PRESCALER == 1
+#define AO_TIM_CLK AO_PCLK
#else
-#define AO_TIM91011_CLK (2 * AO_PCLK2)
+#define AO_TIM_CLK (2 * AO_PCLK)
#endif
#define AO_STM_NVIC_HIGH_PRIORITY (0 << 6)
extern const uint32_t ao_radio_cal;
void
-ao_adc_init();
+ao_adc_init(void);
/* ADC maximum reported value */
#define AO_ADC_MAX 4095
+#ifndef HAS_BOOT_LOADER
+#define HAS_BOOT_LOADER 1
+#endif
+
+#if HAS_BOOT_LOADER
#define AO_BOOT_APPLICATION_BASE ((uint32_t *) 0x08001000)
+#ifndef AO_BOOT_APPLICATION_BOUND
#define AO_BOOT_APPLICATION_BOUND ((uint32_t *) (0x08000000 + stm_flash_size()))
+#endif
#define AO_BOOT_LOADER_BASE ((uint32_t *) 0x08000000)
-#define HAS_BOOT_LOADER 1
+#endif
#endif /* _AO_ARCH_H_ */