其他分享
首页 > 其他分享> > STM32 库函数 学习笔记

STM32 库函数 学习笔记

作者:互联网

【前言】

之前学过C、Matlab以及Python,包括现在的STM32库函数,对于函数的学习,我基本是学习函数的定义、输入是啥、输出是啥、注意事项这些。如果比较重要的函数或者是封装好的函数,还会学习里面的算法。

最近在学习STM32,里面涉及到了很多库函数,所以想借知乎平台写文章记录下来嘿嘿。


【正文】

  1. void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)
#define IS_GET_GPIO_PIN(PIN) (((PIN) == GPIO_Pin_0) || \
                              ((PIN) == GPIO_Pin_1) || \
                              ((PIN) == GPIO_Pin_2) || \
                              ((PIN) == GPIO_Pin_3) || \
                              ((PIN) == GPIO_Pin_4) || \
                              ((PIN) == GPIO_Pin_5) || \
                              ((PIN) == GPIO_Pin_6) || \
                              ((PIN) == GPIO_Pin_7) || \
                              ((PIN) == GPIO_Pin_8) || \
                              ((PIN) == GPIO_Pin_9) || \
                              ((PIN) == GPIO_Pin_10) || \
                              ((PIN) == GPIO_Pin_11) || \
                              ((PIN) == GPIO_Pin_12) || \
                              ((PIN) == GPIO_Pin_13) || \
                              ((PIN) == GPIO_Pin_14) || \
                              ((PIN) == GPIO_Pin_15))

GPIO_Mode:用来指定每个引脚的工作模式,输入输出共有八种工作模式。我们引用内部的代码看看八种模式是怎么书写的。

#define IS_GPIO_MODE(MODE) (((MODE) == GPIO_Mode_AIN) || ((MODE) == GPIO_Mode_IN_FLOATING) || \
                            ((MODE) == GPIO_Mode_IPD) || ((MODE) == GPIO_Mode_IPU) || \
                            ((MODE) == GPIO_Mode_Out_OD) || ((MODE) == GPIO_Mode_Out_PP) || \
                            ((MODE) == GPIO_Mode_AF_OD) || ((MODE) == GPIO_Mode_AF_PP))

也就是说,我们输入模式的时候,要按照它所要求的格式进行书写!GPIO_Speed:STM32的引脚主要有如下的三种初始化速度。它用枚举法,把具有的三个速度放置在了一个结构体中。我们输入,在当前萌新时期下,输入这三个速度最好,等到大佬时候再其他速度。最后还是要注意书写格式!!!

typedef enum
{ 
  GPIO_Speed_10MHz = 1,
  GPIO_Speed_2MHz, 
  GPIO_Speed_50MHz
}GPIOSpeed_TypeDef;
GPIO_InitTypeDef GPIO_InitStructure;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOD,&GPIO_InitStructure);

可见,这个程序段是对GPIOD口的2引脚进行工作模式(PP)和工作速度(50MHz)的初始化。

2. uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_8);//读取GPIOD.8的输入电平

3. uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);

GPIO_ReadInputData(GPIOA);//读取GPIOA组中所有io口输入电平

4. uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_8);//读取GPIOD.8的输出电平

5. uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);

GPIO_ReadInputData(GPIOA);//读取GPIOA组中所有io口输入电平

6. void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

GPIO_SetBits(GPIOD,GPIO_Pin_2);//给GPIOD口的2引脚设置了高电平。

7. void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

GPIO_ResetBits(GPIOD,GPIO_Pin_2);//给GPIOD口的2引脚设置了低电平。

8. void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)

#define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE))

可见,我们对于这个变量只能输入ENABLE和DISABLE这两个了。

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);//对D口以这种时钟设置,使能。

标签:TypeDef,函数,Pin,引脚,PIN,笔记,STM32,GPIO,库函数
来源: https://blog.csdn.net/qq_35656655/article/details/123597304