GPIO端口寄存器
固件库操作
======================================================================
##### Initialization and Configuration #####
======================================================================
void GPIO_DeInit(GPIO_TypeDef* GPIOx)
{
RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOA, ENABLE);
RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOA, DISABLE);
}
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)
void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct)
void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
======================================================================
##### GPIO Read and Write #####
======================================================================
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx)
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx)
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal)
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal)
void GPIO_ToggleBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
===============================================================================
##### bsp_InitLed #####
===============================================================================
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_Pin = GPIO_PIN_LED1;
GPIO_Init(GPIO_PORT_LED1, &GPIO_InitStructure);
寄存器操作
===============================================================================
##### bsp_InitLed #####
===============================================================================
RCC->APB2ENR|=1<<4;
GPIOC->CRH&=0XFFF00FFF;
GPIOC->CRH|=0X00038000;
GPIOC->ODR|=1<<11;
===============================================================================
##### bsp_InitKeyHard#####
===============================================================================
RCC->APB2ENR|=1<<6;
GPIOE->CRL&=0XFFF000FF;
GPIOE->CRL|=0X00088800;
GPIOE->ODR|=7<<2;
搭配使用
void bsp_LedOff(uint8_t _no)
{
_no--;
if (_no == 0)
{
GPIO_PORT_LED1->BSRRL = GPIO_PIN_LED1;
}
}
void bsp_LedToggle(uint8_t _no)
{
if (_no == 1)
{
GPIO_PORT_LED1->ODR ^= GPIO_PIN_LED1;
}
}
uint8_t bsp_IsLedOn(uint8_t _no)
{
if (_no == 1)
{
if ((GPIO_PORT_LED1->ODR & GPIO_PIN_LED1) == 0)
{
return 1;
}
return 0;
}
return 0;
}