Created
August 24, 2017 09:48
-
-
Save hunandy14/a496b1b635116a161f182b8cf0d47e4e to your computer and use it in GitHub Desktop.
STM32F469I Arduino D0~D15 Define and Use
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*---------------------------------------------------------------- | |
Arduino背板初始化設定函式 | |
----------------------------------------------------------------*/ | |
/* 腳位定義 */ | |
#define ArD0_GPIO_PORT ((GPIO_TypeDef*)GPIOG) | |
#define ArD1_GPIO_PORT ((GPIO_TypeDef*)GPIOG) | |
#define ArD2_GPIO_PORT ((GPIO_TypeDef*)GPIOG) | |
#define ArD3_GPIO_PORT ((GPIO_TypeDef*)GPIOA) | |
#define ArD4_GPIO_PORT ((GPIO_TypeDef*)GPIOG) | |
#define ArD5_GPIO_PORT ((GPIO_TypeDef*)GPIOA) | |
#define ArD6_GPIO_PORT ((GPIO_TypeDef*)GPIOA) | |
#define ArD7_GPIO_PORT ((GPIO_TypeDef*)GPIOG) | |
#define ArD8_GPIO_PORT ((GPIO_TypeDef*)GPIOG) | |
#define ArD9_GPIO_PORT ((GPIO_TypeDef*)GPIOA) | |
#define ArD10_GPIO_PORT ((GPIO_TypeDef*)GPIOH) | |
#define ArD11_GPIO_PORT ((GPIO_TypeDef*)GPIOB) | |
#define ArD12_GPIO_PORT ((GPIO_TypeDef*)GPIOB) | |
#define ArD13_GPIO_PORT ((GPIO_TypeDef*)GPIOD) | |
#define ArD14_GPIO_PORT ((GPIO_TypeDef*)GPIOB) | |
#define ArD15_GPIO_PORT ((GPIO_TypeDef*)GPIOB) | |
#define ArD0_PIN ((uint32_t)GPIO_PIN_9) | |
#define ArD1_PIN ((uint32_t)GPIO_PIN_14) | |
#define ArD2_PIN ((uint32_t)GPIO_PIN_13) | |
#define ArD3_PIN ((uint32_t)GPIO_PIN_1) | |
#define ArD4_PIN ((uint32_t)GPIO_PIN_12) | |
#define ArD5_PIN ((uint32_t)GPIO_PIN_2) | |
#define ArD6_PIN ((uint32_t)GPIO_PIN_6) | |
#define ArD7_PIN ((uint32_t)GPIO_PIN_11) | |
#define ArD8_PIN ((uint32_t)GPIO_PIN_10) | |
#define ArD9_PIN ((uint32_t)GPIO_PIN_7) | |
#define ArD10_PIN ((uint32_t)GPIO_PIN_6) | |
#define ArD11_PIN ((uint32_t)GPIO_PIN_15) | |
#define ArD12_PIN ((uint32_t)GPIO_PIN_14) | |
#define ArD13_PIN ((uint32_t)GPIO_PIN_3) | |
#define ArD14_PIN ((uint32_t)GPIO_PIN_9) | |
#define ArD15_PIN ((uint32_t)GPIO_PIN_8) | |
/* 群組化腳位定義 */ | |
GPIO_TypeDef* ArD_GPIO_PORT[16] = {ArD0_GPIO_PORT, | |
ArD1_GPIO_PORT, | |
ArD2_GPIO_PORT, | |
ArD3_GPIO_PORT, | |
ArD4_GPIO_PORT, | |
ArD5_GPIO_PORT, | |
ArD6_GPIO_PORT, | |
ArD7_GPIO_PORT, | |
ArD8_GPIO_PORT, | |
ArD9_GPIO_PORT, | |
ArD10_GPIO_PORT, | |
ArD11_GPIO_PORT, | |
ArD12_GPIO_PORT, | |
ArD13_GPIO_PORT, | |
ArD14_GPIO_PORT, | |
ArD15_GPIO_PORT}; | |
uint32_t ArD_GPIO_PIN[16] = {ArD0_PIN, | |
ArD1_PIN, | |
ArD2_PIN, | |
ArD3_PIN, | |
ArD4_PIN, | |
ArD5_PIN, | |
ArD6_PIN, | |
ArD7_PIN, | |
ArD8_PIN, | |
ArD9_PIN, | |
ArD10_PIN, | |
ArD11_PIN, | |
ArD12_PIN, | |
ArD13_PIN, | |
ArD14_PIN, | |
ArD15_PIN}; | |
/* Arduino 腳位定義 */ | |
typedef enum | |
{ | |
ArD0, | |
ArD1, | |
ArD2, | |
ArD3, | |
ArD4, | |
ArD5, | |
ArD6, | |
ArD7, | |
ArD8, | |
ArD9, | |
ArD10, | |
ArD11, | |
ArD12, | |
ArD13, | |
ArD14, | |
ArD15, | |
} ArD_TypeDef; | |
/* 初始化時脈 */ | |
void Ard_CLK_ENABLE(ArD_TypeDef ArD){ | |
switch(ArD) | |
{ | |
case ArD0 : | |
__HAL_RCC_GPIOG_CLK_ENABLE(); | |
break; | |
case ArD1 : | |
__HAL_RCC_GPIOG_CLK_ENABLE(); | |
break; | |
case ArD2 : | |
__HAL_RCC_GPIOG_CLK_ENABLE(); | |
break; | |
case ArD3 : | |
__HAL_RCC_GPIOA_CLK_ENABLE(); | |
break; | |
case ArD4 : | |
__HAL_RCC_GPIOG_CLK_ENABLE(); | |
break; | |
case ArD5 : | |
__HAL_RCC_GPIOA_CLK_ENABLE(); | |
break; | |
case ArD6 : | |
__HAL_RCC_GPIOA_CLK_ENABLE(); | |
break; | |
case ArD7 : | |
__HAL_RCC_GPIOG_CLK_ENABLE(); | |
break; | |
case ArD8 : | |
__HAL_RCC_GPIOG_CLK_ENABLE(); | |
break; | |
case ArD9 : | |
__HAL_RCC_GPIOA_CLK_ENABLE(); | |
break; | |
case ArD10 : | |
__HAL_RCC_GPIOH_CLK_ENABLE(); | |
break; | |
case ArD11 : | |
__HAL_RCC_GPIOB_CLK_ENABLE(); | |
break; | |
case ArD12 : | |
__HAL_RCC_GPIOB_CLK_ENABLE(); | |
break; | |
case ArD13 : | |
__HAL_RCC_GPIOD_CLK_ENABLE(); | |
break; | |
case ArD14 : | |
__HAL_RCC_GPIOB_CLK_ENABLE(); | |
break; | |
case ArD15 : | |
__HAL_RCC_GPIOB_CLK_ENABLE(); | |
break; | |
default : | |
break; | |
} | |
} | |
/* 初始化程序 */ | |
void Ard_LED_Init(ArD_TypeDef ArD) | |
{ | |
GPIO_TypeDef* port; | |
uint16_t pin; | |
/* 設定腳位 */ | |
port = ArD_GPIO_PORT[ArD]; | |
pin = ArD_GPIO_PIN[ArD]; | |
Ard_CLK_ENABLE(ArD); | |
/* 初始化結構設定 */ | |
GPIO_InitTypeDef GPIO_InitStruct; | |
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; | |
GPIO_InitStruct.Pull = GPIO_PULLUP; | |
GPIO_InitStruct.Speed = GPIO_SPEED_FAST; | |
/* 初始化腳位 */ | |
GPIO_InitStruct.Pin = pin; | |
HAL_GPIO_Init(port, &GPIO_InitStruct); | |
HAL_GPIO_WritePin(port, pin, GPIO_PIN_RESET); | |
} | |
/* 點亮LED */ | |
void Ard_LED_On(ArD_TypeDef ArD){ | |
if (ArD <= ArD15){ | |
HAL_GPIO_WritePin(ArD_GPIO_PORT[ArD], ArD_GPIO_PIN[ArD], GPIO_PIN_SET); | |
} | |
} | |
/* 關閉LED */ | |
void Ard_LED_Off(ArD_TypeDef ArD){ | |
if (ArD <= ArD15){ | |
HAL_GPIO_WritePin(ArD_GPIO_PORT[ArD], ArD_GPIO_PIN[ArD], GPIO_PIN_RESET); | |
} | |
} | |
/* 按鈕初始化 */ | |
static void Ard_PB_Init(ArD_TypeDef ArD) | |
{ | |
GPIO_TypeDef* port; | |
uint32_t pin; | |
/* 設定腳位 */ | |
port = ArD15_GPIO_PORT; | |
pin = ArD15_PIN; | |
Ard_CLK_ENABLE(ArD); | |
/* Configure PA.00 pin as input floating */ | |
GPIO_InitTypeDef GPIO_InitStructure; | |
GPIO_InitStructure.Mode = GPIO_MODE_IT_RISING; | |
GPIO_InitStructure.Pull = GPIO_NOPULL; | |
GPIO_InitStructure.Pin = pin; | |
HAL_GPIO_Init(port, &GPIO_InitStructure); | |
/* Enable and set EXTI line 0 Interrupt to the lowest priority */ | |
HAL_NVIC_SetPriority(EXTI0_IRQn, 2, 0); | |
HAL_NVIC_EnableIRQ(EXTI0_IRQn); | |
} | |
/* 讀取按鈕 */ | |
uint32_t Ard_PB_GetState(ArD_TypeDef ArD){ | |
return HAL_GPIO_ReadPin(ArD_GPIO_PORT[ArD], ArD_GPIO_PIN[ArD]); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment