【极海APM32F407 Tiny Board】GPIO应用
[复制链接]
本帖最后由 尹小舟 于 2023-5-23 19:41 编辑
GPIO应用
说明
按键按下点亮LED
硬件原理图
函数说明
函数名称 |
RCM_EnableAHB1PeriphClock |
函数原形 |
void RCM_EnableAHB1PeriphClock(uint32_t AHB1Periph) |
功能描述 |
使能AHB1外设时钟 |
输入参数{in} |
AHB1Periph |
指定的外设时钟 |
函数名称 |
GPIO_ConfigStructInit |
函数原形 |
void GPIO_ConfigStructInit(GPIO_Config_T* gpioConfig) |
功能描述 |
用默认值填充每个gpioConfig成员。 |
输入参数{in} |
gpioConfig |
指向将被初始化的GPIO_Config_T结构的指针。 |
函数名称 |
GPIO_Config |
函数原形 |
void GPIO_Config(GPIO_T* port, GPIO_Config_T* gpioConfig) |
功能描述 |
GPIO配置函数 |
输入参数{in} |
port |
GPIO端口。 |
gpioConfig |
GPIO配置结构体的指针 |
函数名称 |
GPIO_SetBit |
函数原形 |
void GPIO_SetBit(GPIO_T* port, uint16_t pin) |
功能描述 |
设置所选数据端口位 |
输入参数{in} |
port |
GPIO端口。 |
函数名称 |
GPIO_WriteBitValue |
函数原形 |
void GPIO_WriteBitValue(GPIO_T* port, uint16_t pin, uint8_t bitVal) |
功能描述 |
设置指定的某引脚 |
输入参数{in} |
pin |
选择指定引脚。 |
port |
GPIO端口 |
bitVal |
指定要写入端口输出数据寄存器的值。* 此参数可以是以下值之一: |
函数名称 |
GPIO_ReadInputBit |
函数原形 |
uint8_t GPIO_ReadInputBit(GPIO_T* port, uint16_t pin) |
功能描述 |
读取指定的输入端口引脚。 |
输入参数{in} |
port |
GPIO端口。 |
pin |
指定的引脚 |
#include "main.h"
#include "Board.h"
#define LED2(x) GPIO_WriteBitValue(GPIOE, GPIO_PIN_5,x)
#define LED3(x) GPIO_WriteBitValue(GPIOE, GPIO_PIN_6,x)
#define KEY1 GPIO_ReadInputBit(GPIOC,GPIO_PIN_10)
#define KEY2 GPIO_ReadInputBit(GPIOC,GPIO_PIN_11)
void LED_GPIO_Config(void)
{
GPIO_Config_T configStruct;
/** 开启GPIO_LED时钟 */
RCM_EnableAHB1PeriphClock(RCM_AHB1_PERIPH_GPIOE);
/** 配置GPIO_LED引脚 */
GPIO_ConfigStructInit(&configStruct);
configStruct.pin = GPIO_PIN_5; //不支持或
configStruct.mode = GPIO_MODE_OUT;
configStruct.speed = GPIO_SPEED_50MHz;
GPIO_Config(GPIOE, &configStruct);
configStruct.pin = GPIO_PIN_6; //不支持或
GPIO_Config(GPIOE, &configStruct);
//设置GPIO为低电平,不点亮LED
GPIO_SetBit(GPIOE, GPIO_PIN_5);
GPIO_SetBit(GPIOE, GPIO_PIN_6);
}
void KEY_GPIO_Config(void)
{
GPIO_Config_T configStruct;
/** 开启GPIO_LED时钟 */
RCM_EnableAHB1PeriphClock(RCM_AHB1_PERIPH_GPIOC);
/** 配置GPIO_LED引脚 */
GPIO_ConfigStructInit(&configStruct);
configStruct.pin = GPIO_PIN_10; //不支持或
configStruct.mode = GPIO_MODE_IN;
configStruct.speed = GPIO_SPEED_50MHz;
GPIO_Config(GPIOC, &configStruct);
configStruct.pin = GPIO_PIN_11; //不支持或
GPIO_Config(GPIOC, &configStruct);
}
void KEY_Input(void)
{
LED2(KEY1);
LED3(KEY2);
}
/*!
* @brief Main program
*
* @param None
*
* @retval None
*/
int main(void)
{
LED_GPIO_Config();
KEY_GPIO_Config();
while (1)
{
KEY_Input();
}
}
|