X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fstm32f4%2Fao_arch_funcs.h;h=74f4021b070854cf9dd0e0f10f55e03ba6b96823;hb=HEAD;hp=8ff31b4a917620865d3c368b1756cb934edaf1b5;hpb=d6c3c3618a708d2a1a7948454710e6ae21c2a426;p=fw%2Faltos diff --git a/src/stm32f4/ao_arch_funcs.h b/src/stm32f4/ao_arch_funcs.h index 8ff31b4a..74f4021b 100644 --- a/src/stm32f4/ao_arch_funcs.h +++ b/src/stm32f4/ao_arch_funcs.h @@ -61,7 +61,7 @@ ao_arch_irqrestore(uint32_t basepri) { } static inline void -ao_arch_memory_barrier() { +ao_arch_memory_barrier(void) { asm volatile("" ::: "memory"); } @@ -82,9 +82,8 @@ ao_arch_irq_check(void) { #if HAS_TASK static inline void -ao_arch_init_stack(struct ao_task *task, void *start) +ao_arch_init_stack(struct ao_task *task, uint32_t *sp, void *start) { - uint32_t *sp = &task->stack32[AO_STACK_SIZE>>2]; uint32_t a = (uint32_t) start; int i; @@ -251,28 +250,28 @@ ao_arch_wait_interrupt(void) { static inline void ao_enable_port(struct stm_gpio *port) { if ((port) == &stm_gpioa) { - stm_rcc.ahb1enr |= (1 << STM_RCC_AHB1ENR_IOPAEN); + stm_rcc_ahb1_clk_enable(1 << STM_RCC_AHB1ENR_IOPAEN); ao_power_register(&ao_power_gpioa); } else if ((port) == &stm_gpiob) { - stm_rcc.ahb1enr |= (1 << STM_RCC_AHB1ENR_IOPBEN); + stm_rcc_ahb1_clk_enable(1 << STM_RCC_AHB1ENR_IOPBEN); ao_power_register(&ao_power_gpiob); } else if ((port) == &stm_gpioc) { - stm_rcc.ahb1enr |= (1 << STM_RCC_AHB1ENR_IOPCEN); + stm_rcc_ahb1_clk_enable(1 << STM_RCC_AHB1ENR_IOPCEN); ao_power_register(&ao_power_gpioc); } else if ((port) == &stm_gpiod) { - stm_rcc.ahb1enr |= (1 << STM_RCC_AHB1ENR_IOPDEN); + stm_rcc_ahb1_clk_enable(1 << STM_RCC_AHB1ENR_IOPDEN); ao_power_register(&ao_power_gpiod); } else if ((port) == &stm_gpioe) { - stm_rcc.ahb1enr |= (1 << STM_RCC_AHB1ENR_IOPEEN); + stm_rcc_ahb1_clk_enable(1 << STM_RCC_AHB1ENR_IOPEEN); ao_power_register(&ao_power_gpioe); } else if ((port) == &stm_gpiof) { - stm_rcc.ahb1enr |= (1 << STM_RCC_AHB1ENR_IOPFEN); + stm_rcc_ahb1_clk_enable(1 << STM_RCC_AHB1ENR_IOPFEN); ao_power_register(&ao_power_gpiof); } else if ((port) == &stm_gpiog) { - stm_rcc.ahb1enr |= (1 << STM_RCC_AHB1ENR_IOPGEN); + stm_rcc_ahb1_clk_enable(1 << STM_RCC_AHB1ENR_IOPGEN); ao_power_register(&ao_power_gpiog); } else if ((port) == &stm_gpioh) { - stm_rcc.ahb1enr |= (1 << STM_RCC_AHB1ENR_IOPHEN); + stm_rcc_ahb1_clk_enable(1 << STM_RCC_AHB1ENR_IOPHEN); ao_power_register(&ao_power_gpioh); } } @@ -280,28 +279,28 @@ static inline void ao_enable_port(struct stm_gpio *port) static inline void ao_disable_port(struct stm_gpio *port) { if ((port) == &stm_gpioa) { - stm_rcc.ahb1enr &= ~(1 << STM_RCC_AHB1ENR_IOPAEN); + stm_rcc_ahb1_clk_disable(1 << STM_RCC_AHB1ENR_IOPAEN); ao_power_unregister(&ao_power_gpioa); } else if ((port) == &stm_gpiob) { - stm_rcc.ahb1enr &= ~(1 << STM_RCC_AHB1ENR_IOPBEN); + stm_rcc_ahb1_clk_disable(1 << STM_RCC_AHB1ENR_IOPBEN); ao_power_unregister(&ao_power_gpiob); } else if ((port) == &stm_gpioc) { - stm_rcc.ahb1enr &= ~(1 << STM_RCC_AHB1ENR_IOPCEN); + stm_rcc_ahb1_clk_disable(1 << STM_RCC_AHB1ENR_IOPCEN); ao_power_unregister(&ao_power_gpioc); } else if ((port) == &stm_gpiod) { - stm_rcc.ahb1enr &= ~(1 << STM_RCC_AHB1ENR_IOPDEN); + stm_rcc_ahb1_clk_disable(1 << STM_RCC_AHB1ENR_IOPDEN); ao_power_unregister(&ao_power_gpiod); } else if ((port) == &stm_gpioe) { - stm_rcc.ahb1enr &= ~(1 << STM_RCC_AHB1ENR_IOPEEN); + stm_rcc_ahb1_clk_disable(1 << STM_RCC_AHB1ENR_IOPEEN); ao_power_unregister(&ao_power_gpioe); } else if ((port) == &stm_gpiof) { - stm_rcc.ahb1enr &= ~(1 << STM_RCC_AHB1ENR_IOPFEN); + stm_rcc_ahb1_clk_disable(1 << STM_RCC_AHB1ENR_IOPFEN); ao_power_unregister(&ao_power_gpiof); } else if ((port) == &stm_gpiog) { - stm_rcc.ahb1enr &= ~(1 << STM_RCC_AHB1ENR_IOPGEN); + stm_rcc_ahb1_clk_disable(1 << STM_RCC_AHB1ENR_IOPGEN); ao_power_unregister(&ao_power_gpiog); } else if ((port) == &stm_gpioh) { - stm_rcc.ahb1enr &= ~(1 << STM_RCC_AHB1ENR_IOPHEN); + stm_rcc_ahb1_clk_disable(1 << STM_RCC_AHB1ENR_IOPHEN); ao_power_unregister(&ao_power_gpioh); } } @@ -336,5 +335,25 @@ static inline void ao_disable_port(struct stm_gpio *port) void ao_usart_init(void); +void +start(void); + +char +ao_serial6_getchar(void); + +void +ao_serial6_putchar(char c); + +int +_ao_serial6_pollchar(void); + +uint8_t +_ao_serial6_sleep_for(uint16_t timeout); + +void +ao_serial6_set_speed(uint32_t speed); + +void +ao_serial6_drain(void); #endif /* _AO_ARCH_FUNCS_H_ */