当前位置:网站首页>STM32 --- GPIO configuration & GPIO related library functions

STM32 --- GPIO configuration & GPIO related library functions

2022-07-05 08:15:00 chen_ bx

gpio file

The header file :stm32f10x_gpio.h

Source file :stm32f10x_gpio.c


To configure GPIO step

① Can make IO Port clock .

Call function

RCC_APB2PeriphColckCmd();

Different IO Group , The clock enable function called is different .


② Initialization function


     void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);

effect : Initialize one or more IO mouth ( The same group ) How and speed .
This function mainly operates GPIO_CRL(CRH) register , Pull up or down
When is it set BSRR perhaps BRR register

GPIOx: GPIOA~GPIOG


The initialization structure is as follows

 typedef struct
   {
    
     uint16_t GPIO_Pin;                           // Specify the to initialize IO mouth  
    GPIOSpeed_TypeDef GPIO_Speed; // Set up IO Port output speed 
    GPIOMode_TypeDef GPIO_Mode;    // Set the working mode :8 One of the species 
   }GPIO_InitTypeDef;

Be careful : peripherals ( Include GPIO) Before use , Almost always enable the corresponding clock first .


GPIO Initialization example :

 GPIO_InitTypeDef  GPIO_InitStructure;
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);// open GPIOB The clock 
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->PB.5  port configuration 
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  // Push pull output 
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO The mouth speed is 50MHz
 GPIO_Init(GPIOB, &GPIO_InitStructure);	 // Initialize according to the set parameters GPIOB.5

You can initialize one at a time IO Multiple under group IO, The premise is that these IO The configuration of ports is the same .

GPIO Related library functions

2 A read input level function :

uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

effect : Read something GPIO The input level of . The actual operation is GPIOx_IDR register .

for example :

GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_5);// Read GPIOA.5 The input level of 

uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);

effect : Read a group GPIO The input level of . The actual operation is GPIOx_IDR register .
for example :

 GPIO_ReadInputData(GPIOA);// Read GPIOA All in the group io Port input level 

2 A read output level function :

uint8_t GPIO_ReadOutputDataBit (GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

effect : Read something GPIO Output level of . The actual operation is GPIO_ODR register .

for example :

  GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_5);// Read GPIOA.5 Output level of 

uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);

effect : Read a group GPIO Output level of . The actual operation is GPIO_ODR register .
for example :

 GPIO_ReadOutputData(GPIOA);// Read GPIOA All in the group io Port output level 

4 Set the output level function :

void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

effect : Set up a IO The output of the port is high (1). Actual operation BSRR register

void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

effect : Set up a IO The output of the port is low (0). In practice BRR register .

void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);

These two functions are not commonly used , It's also used to set up IO Port output level .


This article refers to the notes on punctual atoms

原网站

版权声明
本文为[chen_ bx]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202140545026584.html