add button for stm32f407 and stm32f411 board

This commit is contained in:
hathach 2019-09-02 14:58:46 +07:00
parent f2bbb75695
commit 6268f395eb
2 changed files with 64 additions and 47 deletions

View File

@ -29,8 +29,13 @@
#include "stm32f4xx.h" #include "stm32f4xx.h"
#include "stm32f4xx_hal_conf.h" #include "stm32f4xx_hal_conf.h"
#define LED_PORT GPIOD #define LED_PORT GPIOD
#define LED_PIN GPIO_PIN_14 #define LED_PIN GPIO_PIN_14
#define LED_STATE_ON 1
#define BUTTON_PORT GPIOA
#define BUTTON_PIN GPIO_PIN_0
#define BUTTON_STATE_ACTIVE 1
/** /**
* @brief System Clock Configuration * @brief System Clock Configuration
@ -101,11 +106,32 @@ void board_init(void)
// Notify runtime of frequency change. // Notify runtime of frequency change.
SystemCoreClockUpdate(); SystemCoreClockUpdate();
// Enable USB OTG clock __HAL_RCC_GPIOA_CLK_ENABLE(); // button, USB D+/D-
__HAL_RCC_USB_OTG_FS_CLK_ENABLE(); __HAL_RCC_GPIOD_CLK_ENABLE(); // LED
GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitTypeDef GPIO_InitStruct;
// LED
__HAL_RCC_GPIOD_CLK_ENABLE();
GPIO_InitStruct.Pin = LED_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
HAL_GPIO_Init(LED_PORT, &GPIO_InitStruct);
board_led_write(false);
// Button
GPIO_InitStruct.Pin = BUTTON_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
HAL_GPIO_Init(BUTTON_PORT, &GPIO_InitStruct);
// Enable USB OTG clock
__HAL_RCC_USB_OTG_FS_CLK_ENABLE();
// USB Pin Init // USB Pin Init
// PA9- VUSB, PA10- ID, PA11- DM, PA12- DP // PA9- VUSB, PA10- ID, PA11- DM, PA12- DP
__HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE();
@ -131,19 +157,6 @@ void board_init(void)
GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF10_OTG_FS; GPIO_InitStruct.Alternate = GPIO_AF10_OTG_FS;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
// Init the LED
__HAL_RCC_GPIOD_CLK_ENABLE();
GPIO_InitStruct.Pin = LED_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
HAL_GPIO_Init(LED_PORT, &GPIO_InitStruct);
board_led_write(false);
// TODO Button
} }
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
@ -152,16 +165,14 @@ void board_init(void)
void board_led_write(bool state) void board_led_write(bool state)
{ {
HAL_GPIO_WritePin(LED_PORT, LED_PIN, state); HAL_GPIO_WritePin(LED_PORT, LED_PIN, state ? LED_STATE_ON : (1-LED_STATE_ON));
} }
uint32_t board_button_read(void) uint32_t board_button_read(void)
{ {
// TODO implement return BUTTON_STATE_ACTIVE == HAL_GPIO_ReadPin(BUTTON_PORT, BUTTON_PIN);
return 0;
} }
#if CFG_TUSB_OS == OPT_OS_NONE #if CFG_TUSB_OS == OPT_OS_NONE
volatile uint32_t system_ticks = 0; volatile uint32_t system_ticks = 0;
void SysTick_Handler (void) void SysTick_Handler (void)

View File

@ -29,8 +29,13 @@
#include "stm32f4xx.h" #include "stm32f4xx.h"
#include "stm32f4xx_hal_conf.h" #include "stm32f4xx_hal_conf.h"
#define LED_PORT GPIOD #define LED_PORT GPIOD
#define LED_PIN GPIO_PIN_13 #define LED_PIN GPIO_PIN_13
#define LED_STATE_ON 1
#define BUTTON_PORT GPIOA
#define BUTTON_PIN GPIO_PIN_0
#define BUTTON_STATE_ACTIVE 1
/** /**
* @brief System Clock Configuration * @brief System Clock Configuration
@ -101,16 +106,32 @@ void board_init(void)
// Notify runtime of frequency change. // Notify runtime of frequency change.
SystemCoreClockUpdate(); SystemCoreClockUpdate();
// Enable USB OTG clock __HAL_RCC_GPIOA_CLK_ENABLE(); // button, USB D+/D-
__HAL_RCC_USB_OTG_FS_CLK_ENABLE(); __HAL_RCC_GPIOD_CLK_ENABLE(); // LED
/* Configure USB FS GPIOs */
__HAL_RCC_GPIOA_CLK_ENABLE();
GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitTypeDef GPIO_InitStruct;
/* Configure DM DP Pins */ // LED
GPIO_InitStruct.Pin = LED_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
HAL_GPIO_Init(LED_PORT, &GPIO_InitStruct);
board_led_write(false);
// Button
GPIO_InitStruct.Pin = BUTTON_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
HAL_GPIO_Init(BUTTON_PORT, &GPIO_InitStruct);
// Enable USB OTG clock
__HAL_RCC_USB_OTG_FS_CLK_ENABLE();
/* Configure USB FS GPIOs */
/* Configure USB D+ D- Pins */
GPIO_InitStruct.Pin = GPIO_PIN_11 | GPIO_PIN_12; GPIO_InitStruct.Pin = GPIO_PIN_11 | GPIO_PIN_12;
GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
@ -131,19 +152,6 @@ void board_init(void)
GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF10_OTG_FS; GPIO_InitStruct.Alternate = GPIO_AF10_OTG_FS;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
// Init the LED
__HAL_RCC_GPIOD_CLK_ENABLE();
GPIO_InitStruct.Pin = LED_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
HAL_GPIO_Init(LED_PORT, &GPIO_InitStruct);
board_led_write(false);
// TODO Button
} }
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
@ -152,16 +160,14 @@ void board_init(void)
void board_led_write(bool state) void board_led_write(bool state)
{ {
HAL_GPIO_WritePin(LED_PORT, LED_PIN, state); HAL_GPIO_WritePin(LED_PORT, LED_PIN, state ? LED_STATE_ON : (1-LED_STATE_ON));
} }
uint32_t board_button_read(void) uint32_t board_button_read(void)
{ {
// TODO implement return BUTTON_STATE_ACTIVE == HAL_GPIO_ReadPin(BUTTON_PORT, BUTTON_PIN);
return 0;
} }
#if CFG_TUSB_OS == OPT_OS_NONE #if CFG_TUSB_OS == OPT_OS_NONE
volatile uint32_t system_ticks = 0; volatile uint32_t system_ticks = 0;
void SysTick_Handler (void) void SysTick_Handler (void)