2016-07-28 19:02:54 +00:00
|
|
|
/*! \file stm32f4-discovery.h
|
|
|
|
* \author tkl
|
|
|
|
* \date Mai 7, 2012
|
|
|
|
* \brief Header file of the board definition for the STM32F4-Discovery board.
|
|
|
|
*/
|
|
|
|
#ifndef BSP_STM32F4_DISCOVERY_H_
|
|
|
|
#define BSP_STM32F4_DISCOVERY_H_
|
|
|
|
|
|
|
|
#define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */
|
|
|
|
|
|
|
|
#include <stddef.h>
|
|
|
|
#include <stdint.h>
|
|
|
|
|
|
|
|
#include "driver.h"
|
|
|
|
#include "gpio.h"
|
2016-08-09 10:35:56 +00:00
|
|
|
#include "pwm.h"
|
2016-07-28 19:02:54 +00:00
|
|
|
#include "timer.h"
|
|
|
|
#include "uart.h"
|
|
|
|
#include "ringbuffer.h"
|
|
|
|
#include "sys_tick.h"
|
|
|
|
#include "stm32f4xx.h"
|
|
|
|
#include "stm32f4_gpio.h"
|
2016-08-09 10:35:56 +00:00
|
|
|
#include "stm32f4_pwm.h"
|
2016-07-28 19:02:54 +00:00
|
|
|
#include "stm32f4_uart.h"
|
|
|
|
#include "stm32_sys_tick.h"
|
|
|
|
|
2016-08-09 10:35:56 +00:00
|
|
|
|
2016-07-28 19:02:54 +00:00
|
|
|
// SYSTEM TICK
|
|
|
|
static const enum stm32_sys_tick_time_base stm23_sys_tick_time_base =
|
|
|
|
STM32_SYS_TICK_TIME_BASE_MS;
|
|
|
|
static const struct stm32_sys_tick stm32_sys_tick = {
|
|
|
|
&stm23_sys_tick_time_base,
|
|
|
|
NULL,
|
|
|
|
NULL
|
|
|
|
};
|
|
|
|
|
|
|
|
static const struct loki_timer timer_1 = {
|
|
|
|
(void*)&stm32_sys_tick,
|
|
|
|
&timer_fp
|
|
|
|
};
|
|
|
|
|
2016-08-09 10:35:56 +00:00
|
|
|
// PWM CHANNEL 4
|
|
|
|
/* apb1 clock = 84MHz */
|
|
|
|
/* period_reg = src_clk / presc / cnt_clk */
|
|
|
|
/* 4199 = 84MHZ / (0 + 1) / 20kHz - 1 */
|
|
|
|
static const TIM_TimeBaseInitTypeDef timer_4_cfg = {
|
|
|
|
.TIM_RepetitionCounter = 0x0000,
|
|
|
|
.TIM_Prescaler = 0,
|
|
|
|
.TIM_ClockDivision = TIM_CKD_DIV1,
|
|
|
|
.TIM_CounterMode = TIM_CounterMode_Up,
|
|
|
|
.TIM_Period = 4199
|
|
|
|
};
|
|
|
|
|
|
|
|
static const TIM_OCInitTypeDef t4_output_compare_cfg = {
|
|
|
|
.TIM_OutputNState = TIM_OutputNState_Disable,
|
|
|
|
.TIM_OCNPolarity = TIM_OCPolarity_High,
|
|
|
|
.TIM_OCIdleState = TIM_OCIdleState_Reset,
|
|
|
|
.TIM_OCNIdleState = TIM_OCNIdleState_Set,
|
|
|
|
.TIM_OCMode = TIM_OCMode_PWM1,
|
|
|
|
.TIM_OCPolarity = TIM_OCPolarity_High,
|
|
|
|
.TIM_OutputState = TIM_OutputState_Enable,
|
|
|
|
.TIM_Pulse = 0 // Initiale Pulsweite in Millisekunden
|
|
|
|
};
|
|
|
|
|
|
|
|
static const GPIO_InitTypeDef port_cfg = {
|
|
|
|
.GPIO_Pin = GPIO_Pin_15,
|
|
|
|
.GPIO_Mode = GPIO_Mode_AF,
|
|
|
|
.GPIO_OType = GPIO_OType_PP,
|
|
|
|
.GPIO_PuPd = GPIO_PuPd_UP,
|
|
|
|
.GPIO_Speed = GPIO_Speed_100MHz,
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct stm32f4_pwm str32f4_pwm = {
|
|
|
|
.timer = TIM4,
|
|
|
|
.timer_cfg = &timer_4_cfg,
|
|
|
|
.output_compare_cfg = &t4_output_compare_cfg,
|
|
|
|
.port = GPIOD,
|
|
|
|
.pin_src = GPIO_PinSource15,
|
|
|
|
.port_cfg = &port_cfg,
|
|
|
|
.channel = channel_4,
|
|
|
|
};
|
|
|
|
|
|
|
|
static const struct pwm pwm_ch4 = {
|
|
|
|
.arch_dep_device = &str32f4_pwm,
|
|
|
|
.fp = &stm32f4_pwm_fp,
|
|
|
|
};
|
|
|
|
|
|
|
|
// UART 1
|
2016-07-28 19:02:54 +00:00
|
|
|
static char console_linear_buffer[80];
|
|
|
|
static struct ringbuffer console_buffer = {
|
|
|
|
console_linear_buffer,
|
|
|
|
console_linear_buffer,
|
|
|
|
console_linear_buffer,
|
|
|
|
sizeof(console_linear_buffer),
|
|
|
|
0
|
|
|
|
};
|
|
|
|
static const GPIO_InitTypeDef stm32f4_discovery_uart1_gpio = {
|
|
|
|
GPIO_Pin_6 | GPIO_Pin_7,
|
|
|
|
GPIO_Mode_AF,
|
|
|
|
GPIO_Speed_50MHz,
|
|
|
|
GPIO_OType_PP,
|
|
|
|
GPIO_PuPd_UP
|
|
|
|
};
|
|
|
|
|
|
|
|
static const USART_InitTypeDef stm32f4_discovery_uart1_usart_init = {
|
|
|
|
115200,
|
|
|
|
USART_WordLength_8b,
|
|
|
|
USART_StopBits_1,
|
|
|
|
USART_Parity_No,
|
|
|
|
USART_Mode_Tx | USART_Mode_Rx,
|
|
|
|
USART_HardwareFlowControl_None,
|
|
|
|
};
|
|
|
|
|
|
|
|
static const NVIC_InitTypeDef stm32f4_discovery_uart1_nvic_init = {
|
|
|
|
USART1_IRQn,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
ENABLE,
|
|
|
|
};
|
|
|
|
|
|
|
|
static const struct stm32f4_uart stm32f4_uart1 = {
|
|
|
|
&stm32f4_discovery_uart1_gpio,
|
|
|
|
GPIOB,
|
|
|
|
GPIO_PinSource7,
|
|
|
|
GPIO_PinSource6,
|
|
|
|
&stm32f4_discovery_uart1_usart_init,
|
|
|
|
USART1,
|
|
|
|
USART_IT_RXNE /* | USART_IT_TXE*/,
|
|
|
|
&stm32f4_discovery_uart1_nvic_init,
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
static const struct uart __uart_1 = {
|
|
|
|
&stm32f4_uart1,
|
|
|
|
&stm32f4_uart_fp,
|
|
|
|
&console_buffer,
|
|
|
|
};
|
|
|
|
|
2016-08-02 12:10:11 +00:00
|
|
|
#ifdef TEST_APP
|
|
|
|
static const struct driver uart_1 = {
|
|
|
|
#else
|
2016-07-28 19:02:54 +00:00
|
|
|
const struct driver uart_1 = {
|
2016-08-02 12:10:11 +00:00
|
|
|
#endif
|
2016-07-28 19:02:54 +00:00
|
|
|
DRIVER_TYPE_UART,
|
|
|
|
&__uart_1,
|
|
|
|
};
|
|
|
|
|
|
|
|
// LED 3
|
|
|
|
static const GPIO_InitTypeDef stm32_f4_discovery_led_3_gpio = {
|
|
|
|
GPIO_Pin_12,
|
|
|
|
GPIO_Mode_OUT,
|
|
|
|
GPIO_Speed_100MHz,
|
|
|
|
GPIO_OType_PP,
|
|
|
|
GPIO_PuPd_NOPULL
|
|
|
|
};
|
|
|
|
|
|
|
|
static const struct stm32f4_gpio stm32_f4_discovery_led_3 = {
|
|
|
|
GPIOD,
|
|
|
|
&stm32_f4_discovery_led_3_gpio,
|
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
|
NULL
|
|
|
|
};
|
|
|
|
|
|
|
|
static const struct gpio __led_3 = {
|
|
|
|
(void*)&stm32_f4_discovery_led_3,
|
|
|
|
&gpio_fp
|
|
|
|
};
|
|
|
|
|
2016-08-03 09:36:55 +00:00
|
|
|
#ifdef TEST_APP
|
2016-08-02 12:10:11 +00:00
|
|
|
static const struct driver led_3 = {
|
2016-08-03 09:36:55 +00:00
|
|
|
#else
|
|
|
|
const struct driver led_3 = {
|
|
|
|
#endif
|
2016-07-28 19:02:54 +00:00
|
|
|
DRIVER_TYPE_GPIO,
|
|
|
|
&__led_3,
|
|
|
|
};
|
|
|
|
|
|
|
|
// LED 4
|
|
|
|
static const GPIO_InitTypeDef stm32_f4_discovery_led_4_gpio = {
|
|
|
|
GPIO_Pin_13,
|
|
|
|
GPIO_Mode_OUT,
|
|
|
|
GPIO_Speed_100MHz,
|
|
|
|
GPIO_OType_PP,
|
|
|
|
GPIO_PuPd_NOPULL
|
|
|
|
};
|
|
|
|
|
|
|
|
static const struct stm32f4_gpio stm32_f4_discovery_led_4 = {
|
|
|
|
GPIOD,
|
|
|
|
&stm32_f4_discovery_led_4_gpio,
|
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
|
NULL
|
|
|
|
};
|
|
|
|
|
|
|
|
static const struct gpio __led_4 = {
|
|
|
|
(void*)&stm32_f4_discovery_led_4,
|
|
|
|
&gpio_fp
|
|
|
|
};
|
|
|
|
|
2016-08-02 12:10:11 +00:00
|
|
|
#ifdef TEST_APP
|
|
|
|
static const struct driver led_4 = {
|
|
|
|
#else
|
2016-07-28 19:02:54 +00:00
|
|
|
const struct driver led_4 = {
|
2016-08-02 12:10:11 +00:00
|
|
|
#endif
|
2016-07-28 19:02:54 +00:00
|
|
|
DRIVER_TYPE_GPIO,
|
|
|
|
&__led_4,
|
|
|
|
};
|
|
|
|
|
|
|
|
// LED 5
|
|
|
|
static const GPIO_InitTypeDef stm32_f4_discovery_led_5_gpio = {
|
|
|
|
GPIO_Pin_14,
|
|
|
|
GPIO_Mode_OUT,
|
|
|
|
GPIO_Speed_100MHz,
|
|
|
|
GPIO_OType_PP,
|
|
|
|
GPIO_PuPd_NOPULL
|
|
|
|
};
|
|
|
|
|
|
|
|
static const struct stm32f4_gpio stm32_f4_discovery_led_5 = {
|
|
|
|
GPIOD,
|
|
|
|
&stm32_f4_discovery_led_5_gpio,
|
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
|
NULL
|
|
|
|
};
|
|
|
|
|
|
|
|
static const struct gpio __led_5 = {
|
|
|
|
(void*)&stm32_f4_discovery_led_5,
|
|
|
|
&gpio_fp
|
|
|
|
};
|
|
|
|
|
2016-08-02 12:10:11 +00:00
|
|
|
#ifdef TEST_APP
|
|
|
|
static const struct driver led_5 = {
|
|
|
|
#else
|
2016-07-29 04:54:34 +00:00
|
|
|
const struct driver led_5 = {
|
2016-08-02 12:10:11 +00:00
|
|
|
#endif
|
2016-07-28 19:02:54 +00:00
|
|
|
DRIVER_TYPE_GPIO,
|
|
|
|
&__led_5,
|
|
|
|
};
|
|
|
|
|
|
|
|
// LED 6
|
|
|
|
static const GPIO_InitTypeDef stm32_f4_discovery_led_6_gpio = {
|
|
|
|
GPIO_Pin_15,
|
|
|
|
GPIO_Mode_OUT,
|
|
|
|
GPIO_Speed_100MHz,
|
|
|
|
GPIO_OType_PP,
|
|
|
|
GPIO_PuPd_NOPULL
|
|
|
|
};
|
|
|
|
|
|
|
|
static const struct stm32f4_gpio stm32_f4_discovery_led_6 = {
|
|
|
|
GPIOD,
|
|
|
|
&stm32_f4_discovery_led_6_gpio,
|
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
|
NULL
|
|
|
|
};
|
|
|
|
|
|
|
|
static const struct gpio __led_6 = {
|
|
|
|
(void*)&stm32_f4_discovery_led_6,
|
|
|
|
&gpio_fp
|
|
|
|
};
|
|
|
|
|
2016-08-02 12:10:11 +00:00
|
|
|
#ifdef TEST_APP
|
|
|
|
static const struct driver led_6 = {
|
|
|
|
#else
|
2016-07-28 19:02:54 +00:00
|
|
|
const struct driver led_6 = {
|
2016-08-02 12:10:11 +00:00
|
|
|
#endif
|
2016-07-28 19:02:54 +00:00
|
|
|
DRIVER_TYPE_GPIO,
|
|
|
|
&__led_6,
|
|
|
|
};
|
|
|
|
|
|
|
|
// BUTTON
|
|
|
|
static const GPIO_InitTypeDef stm32_f4_discovery_user_button_gpio = {
|
|
|
|
GPIO_Pin_0,
|
|
|
|
GPIO_Mode_IN,
|
|
|
|
GPIO_Speed_100MHz,
|
|
|
|
GPIO_OType_PP,
|
|
|
|
GPIO_PuPd_NOPULL
|
|
|
|
};
|
|
|
|
|
|
|
|
static const EXTI_InitTypeDef stm32_f4_discovery_user_button_exti = {
|
|
|
|
EXTI_Line0,
|
|
|
|
EXTI_Mode_Interrupt,
|
|
|
|
EXTI_Trigger_Rising_Falling,
|
|
|
|
ENABLE
|
|
|
|
};
|
|
|
|
|
|
|
|
static const NVIC_InitTypeDef stm32_f4_discovery_user_button_nvic = {
|
|
|
|
EXTI0_IRQn,
|
|
|
|
0x0F,
|
|
|
|
0x0F,
|
|
|
|
ENABLE
|
|
|
|
};
|
|
|
|
|
|
|
|
static const struct stm32f4_gpio stm32_f4_discovery_user_button = {
|
|
|
|
GPIOA,
|
|
|
|
&stm32_f4_discovery_user_button_gpio,
|
|
|
|
&stm32_f4_discovery_user_button_exti,
|
|
|
|
&stm32_f4_discovery_user_button_nvic,
|
|
|
|
NULL,
|
|
|
|
NULL
|
|
|
|
};
|
|
|
|
|
|
|
|
static const struct gpio user_button = {
|
|
|
|
(void*)&stm32_f4_discovery_user_button,
|
|
|
|
&gpio_fp
|
|
|
|
};
|
|
|
|
|
|
|
|
//! \brief Setup the hardware of the stm32f4-discovery board.
|
|
|
|
void board_init(void);
|
|
|
|
|
|
|
|
#endif /* BSP_STM32F4_DISCOVERY_H_ */
|