diff --git a/source/firmware/arch/stm32f4xx/board/board.h b/source/firmware/arch/stm32f4xx/board/board.h index 0991a8c..4b0b320 100755 --- a/source/firmware/arch/stm32f4xx/board/board.h +++ b/source/firmware/arch/stm32f4xx/board/board.h @@ -6,8 +6,8 @@ #ifndef BOARD_H_ #define BOARD_H_ -#ifdef BOARD_STM32F4_DISCOVERY +//#ifdef BOARD_STM32F4_DISCOVERY #include "stm32f4-discovery.h" -#endif +//#endif #endif /* BOARD_H_ */ diff --git a/source/firmware/arch/stm32f4xx/board/board.mk b/source/firmware/arch/stm32f4xx/board/board.mk index 4d66d0a..b267b04 100755 --- a/source/firmware/arch/stm32f4xx/board/board.mk +++ b/source/firmware/arch/stm32f4xx/board/board.mk @@ -1,6 +1,6 @@ INCLUDES += source/firmware/arch/stm32f4xx/board DOC_SRC += source/firmware/arch/stm32f4xx/board -ifeq ($(BOARD), stm32f4-discovery) +#ifeq ($(BOARD), stm32f4-discovery) include source/firmware/arch/stm32f4xx/board/stm32f4-discovery/stm32f4-discovery.mk -endif +#endif diff --git a/source/firmware/arch/stm32f4xx/driver/driver.mk b/source/firmware/arch/stm32f4xx/driver/driver.mk index 5cb834c..8ba1bd1 100755 --- a/source/firmware/arch/stm32f4xx/driver/driver.mk +++ b/source/firmware/arch/stm32f4xx/driver/driver.mk @@ -1,5 +1,2 @@ -CHECK_FOLDER += source/firmware/arch/stm32f4xx/driver -SUB_FOLDER += source/firmware/arch/stm32f4xx/driver +SRC_DIR += source/firmware/arch/stm32f4xx/driver INCLUDES += source/firmware/arch/stm32f4xx/driver/include -DOC_SRC += source/firmware/arch/stm32f4xx/driver -DOC_SRC += source/firmware/arch/stm32f4xx/driver/include diff --git a/source/firmware/arch/stm32f4xx/driver/include/stm32f4_gpio.h b/source/firmware/arch/stm32f4xx/driver/include/stm32f4_gpio.h index de7efc5..f4e2e50 100755 --- a/source/firmware/arch/stm32f4xx/driver/include/stm32f4_gpio.h +++ b/source/firmware/arch/stm32f4xx/driver/include/stm32f4_gpio.h @@ -12,8 +12,6 @@ typedef void* (*gpio_ext_it_cb_t)(void*); struct stm32f4_gpio { GPIO_TypeDef *port; //!< Gpio port const GPIO_InitTypeDef *pin; //!< Gpio pin - const EXTI_InitTypeDef *exti; //!< Gpio exit it (could be NULL) - const NVIC_InitTypeDef *nvic; //!< Gpio nvic (could be NULL) gpio_ext_it_cb_t ext_it_cb; //!< Gpio ext it callback (could be NULL) void *param; //!< Parameter for the callback }; diff --git a/source/firmware/arch/stm32f4xx/driver/stm32_sys_tick.c b/source/firmware/arch/stm32f4xx/driver/stm32_sys_tick._c similarity index 100% rename from source/firmware/arch/stm32f4xx/driver/stm32_sys_tick.c rename to source/firmware/arch/stm32f4xx/driver/stm32_sys_tick._c diff --git a/source/firmware/arch/stm32f4xx/driver/stm32f4_gpio.c b/source/firmware/arch/stm32f4xx/driver/stm32f4_gpio.c index a649a44..4198178 100755 --- a/source/firmware/arch/stm32f4xx/driver/stm32f4_gpio.c +++ b/source/firmware/arch/stm32f4xx/driver/stm32f4_gpio.c @@ -17,6 +17,7 @@ typedef struct { void *param; //!< Parameter for the callback }exti_cb_list_t; +#if 0 //! \brief Contains call back data for all 16 exti lines. static struct { exti_cb_list_t callback_list[16]; //!< Call back data list for the exti lines. @@ -45,83 +46,34 @@ static uint8_t gpio_bin2dec(uint16_t bin) } return ret; } - -static void gpio_init(const struct stm32f4_gpio *gpio) -{ - uint8_t m_port = 0; - uint8_t m_pin = 0; - uint32_t clock = 0; - if(gpio == NULL) - return; - - if(gpio->port == GPIOA) { - clock = RCC_AHB1Periph_GPIOA; - m_port = EXTI_PortSourceGPIOA; - } - else if(gpio->port == GPIOB) { - clock = RCC_AHB1Periph_GPIOB; - m_port = EXTI_PortSourceGPIOB; - } - else if(gpio->port == GPIOC) { - clock = RCC_AHB1Periph_GPIOC; - m_port = EXTI_PortSourceGPIOC; - } - else if(gpio->port == GPIOD) { - clock = RCC_AHB1Periph_GPIOD; - m_port = EXTI_PortSourceGPIOD; - } - else if(gpio->port == GPIOE) { - clock = RCC_AHB1Periph_GPIOE; - m_port = EXTI_PortSourceGPIOE; - } - else if(gpio->port == GPIOF) { - clock = RCC_AHB1Periph_GPIOF; - m_port = EXTI_PortSourceGPIOF; - } - else if(gpio->port == GPIOG) { - clock = RCC_AHB1Periph_GPIOG; - m_port = EXTI_PortSourceGPIOG; - } - else if(gpio->port == GPIOH) { - clock = RCC_AHB1Periph_GPIOH; - m_port = EXTI_PortSourceGPIOH; - } - else if(gpio->port == GPIOI) { - clock = RCC_AHB1Periph_GPIOI; - m_port = EXTI_PortSourceGPIOI; - } - - RCC_AHB1PeriphClockCmd(clock, ENABLE); - m_pin = gpio_bin2dec(gpio->pin->GPIO_Pin); - - SYSCFG_EXTILineConfig(m_port, m_pin); -} - +#endif int stm32f4_gpio_open(const void *gpio) { struct stm32f4_gpio *this; - uint8_t m_pin = 0; if(gpio == NULL) return -1; this = (struct stm32f4_gpio *)gpio; - gpio_init(this); - m_pin = gpio_bin2dec(this->pin->GPIO_Pin); - - GPIO_Init(this->port, (GPIO_InitTypeDef*)this->pin); - - if(this->ext_it_cb != NULL) { - gpio_obj.callback_list[m_pin].callback = this->ext_it_cb; - gpio_obj.callback_list[m_pin].param = this->param; - } - - if((this->exti != NULL) && (this->nvic != NULL)) { - RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE); - EXTI_Init((EXTI_InitTypeDef*)this->exti); - NVIC_Init((NVIC_InitTypeDef*)this->nvic); - } - + if(this->port == GPIOA) + __HAL_RCC_GPIOA_CLK_ENABLE(); + else if(this->port == GPIOB) + __HAL_RCC_GPIOB_CLK_ENABLE(); + else if(this->port == GPIOC) + __HAL_RCC_GPIOC_CLK_ENABLE(); + else if(this->port == GPIOD) + __HAL_RCC_GPIOD_CLK_ENABLE(); + else if(this->port == GPIOE) + __HAL_RCC_GPIOE_CLK_ENABLE(); + else if(this->port == GPIOF) + __HAL_RCC_GPIOF_CLK_ENABLE(); + else if(this->port == GPIOG) + __HAL_RCC_GPIOG_CLK_ENABLE(); + else if(this->port == GPIOH) + __HAL_RCC_GPIOH_CLK_ENABLE(); + else if(this->port == GPIOI) + __HAL_RCC_GPIOI_CLK_ENABLE(); + HAL_GPIO_Init(this->port, (GPIO_InitTypeDef*)this->pin); return 0; } @@ -129,7 +81,8 @@ int stm32f4_gpio_close(const void *gpio) { if(gpio == NULL) return -1; - // TODO: deinit exti, nvic & gpio + struct stm32f4_gpio *this = (struct stm32f4_gpio *)gpio; + HAL_GPIO_DeInit(this->port, this->pin->Pin); return 0; } @@ -140,7 +93,7 @@ char stm32f4_gpio_read(const void *gpio) return 0; this = (struct stm32f4_gpio *)gpio; - return GPIO_ReadOutputDataBit(this->port, this->pin->GPIO_Pin); + return HAL_GPIO_ReadPin(this->port, this->pin->Pin); } void stm32f4_gpio_write(const void *gpio, char byte) { @@ -149,7 +102,7 @@ void stm32f4_gpio_write(const void *gpio, char byte) { return; this = (struct stm32f4_gpio *)gpio; - GPIO_WriteBit(this->port, this->pin->GPIO_Pin, (BitAction)byte); + HAL_GPIO_WritePin(this->port, this->pin->Pin, (GPIO_PinState)(byte & 0x01)); } void stm32f4_gpio_toggle(const void *gpio) @@ -159,16 +112,13 @@ void stm32f4_gpio_toggle(const void *gpio) return; this = (struct stm32f4_gpio *)gpio; - BitAction act = Bit_SET; - if(GPIO_ReadOutputDataBit(this->port, this->pin->GPIO_Pin)) - act = Bit_RESET; - - GPIO_WriteBit(this->port, this->pin->GPIO_Pin, act); + HAL_GPIO_TogglePin(this->port, this->pin->Pin); } int stm32f4_gpio_set_exti_callback(const void *gpio, const void *callback, const void *param) { +#if 0 struct stm32f4_gpio *this; uint8_t pin; if((gpio == NULL) || (callback == NULL)) @@ -179,10 +129,11 @@ int stm32f4_gpio_set_exti_callback(const void *gpio, gpio_obj.callback_list[pin].callback = (gpio_ext_it_cb_t)callback; gpio_obj.callback_list[pin].param = (void*)param; - +#endif return 0; } +#if 0 //! \brief The ISR for the EXTI0_IRQn interrupt. void EXTI0_IRQHandler(void) { @@ -258,3 +209,4 @@ void EXTI9_5_IRQHandler(void) { void EXTI15_10_IRQHandler(void) { // TODO: detect & clear pending bit } +#endif diff --git a/source/firmware/arch/stm32f4xx/driver/stm32f4_pwm.c b/source/firmware/arch/stm32f4xx/driver/stm32f4_pwm._c similarity index 100% rename from source/firmware/arch/stm32f4xx/driver/stm32f4_pwm.c rename to source/firmware/arch/stm32f4xx/driver/stm32f4_pwm._c diff --git a/source/firmware/arch/stm32f4xx/driver/stm32f4_uart.c b/source/firmware/arch/stm32f4xx/driver/stm32f4_uart._c similarity index 100% rename from source/firmware/arch/stm32f4xx/driver/stm32f4_uart.c rename to source/firmware/arch/stm32f4xx/driver/stm32f4_uart._c diff --git a/source/test/src/main.c b/source/test/src/main.c index 04f2886..865c61a 100644 --- a/source/test/src/main.c +++ b/source/test/src/main.c @@ -3,8 +3,6 @@ // Copyright (c) 2014 Liviu Ionescu. // -// ---------------------------------------------------------------------------- - #include #include #include "diag/Trace.h" @@ -12,32 +10,10 @@ #include "Timer.h" #include "BlinkLed.h" -// ---------------------------------------------------------------------------- -// -// Standalone STM32F4 led blink sample (trace via DEBUG). -// -// In debug configurations, demonstrate how to print a greeting message -// on the trace device. In release configurations the message is -// simply discarded. -// -// Then demonstrates how to blink a led with 1 Hz, using a -// continuous loop and SysTick delays. -// -// Trace support is enabled by adding the TRACE macro definition. -// By default the trace messages are forwarded to the DEBUG output, -// but can be rerouted to any device or completely suppressed, by -// changing the definitions required in system/src/diag/trace_impl.c -// (currently OS_USE_TRACE_ITM, OS_USE_TRACE_SEMIHOSTING_DEBUG/_STDOUT). -// - -// ----- Timing definitions ------------------------------------------------- - // Keep the LED on for 2/3 of a second. #define BLINK_ON_TICKS (TIMER_FREQUENCY_HZ * 3 / 4) #define BLINK_OFF_TICKS (TIMER_FREQUENCY_HZ - BLINK_ON_TICKS) -// ----- main() --------------------------------------------------------------- - // Sample pragmas to cope with warnings. Please note the related line at // the end of this function, used to pop the compiler diagnostics status. #pragma GCC diagnostic push @@ -45,38 +21,21 @@ #pragma GCC diagnostic ignored "-Wmissing-declarations" #pragma GCC diagnostic ignored "-Wreturn-type" -int -main(int argc, char* argv[]) +int main(int argc, char* argv[]) { - // Send a greeting to the trace device (skipped on Release). - trace_puts("Hello ARM World!"); - - // At this stage the system clock should have already been configured - // at high speed. - trace_printf("System clock: %u Hz\n", SystemCoreClock); - - timer_start(); - - blink_led_init(); - - uint32_t seconds = 0; - - // Infinite loop - while (1) - { - blink_led_on(); - timer_sleep(seconds == 0 ? TIMER_FREQUENCY_HZ : BLINK_ON_TICKS); - - blink_led_off(); - timer_sleep(BLINK_OFF_TICKS); - - ++seconds; - // Count seconds on the trace device. - trace_printf("Second %u\n", seconds); - } - // Infinite loop, never return. + trace_puts("Hello ARM World!"); + trace_printf("System clock: %u Hz\n", SystemCoreClock); + timer_start(); + blink_led_init(); + uint32_t seconds = 0; + while(1) { + blink_led_on(); + timer_sleep(seconds == 0 ? TIMER_FREQUENCY_HZ : BLINK_ON_TICKS); + blink_led_off(); + timer_sleep(BLINK_OFF_TICKS); + ++seconds; + trace_printf("Second %u\n", seconds); + } } #pragma GCC diagnostic pop - -// ----------------------------------------------------------------------------