STM32学习笔记

Posted 黑胡子大叔的小屋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32学习笔记相关的知识,希望对你有一定的参考价值。

STM32笔记

GPIO输出

GPIO(general purpose input output)通用输入输出

引脚电平:0V ~ 3.3V,部分引脚可容忍5V

输出模式下可控制端口输出高低电平,控制LED、蜂鸣器、模拟通信协议输出时序等

输入模式下可读取端口的额高低电平活电压,用于按键读取、外界模块电平信号输入、ADC电压猜忌、模拟通信协议接收数据等

单独操作输出数据寄存器的某一位的方法

  • &=和|=操作,比较麻烦效率不高
  • 操作位设置\\清除寄存器,
  • 读写"位带"区域,在stm32中,专门分配的一段地址区域,这段地址区域映射了RAM和外设寄存器的所有的位,操作相应的地址就相当于操作某一位

GPIO8种模式

代码操作

  • 使用RCC开启GPIO的时钟
  • 使用GPIO_Init函数初始化GPIO
  • 使用输入输出函数控制GPIO

RCC常用函数

// 外设使能或失能
void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState);
void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);
void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);

GPIO常用函数

// GPIO复位
void GPIO_DeInit(GPIO_TypeDef* GPIOx);
void GPIO_AFIODeInit(void);
// GPIO初始化
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct);
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
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);

typedef struct

  uint16_t GPIO_Pin;             /*!< Specifies the GPIO pins to be configured.
                                      This parameter can be any value of @ref GPIO_pins_define */

  GPiospeed_TypeDef GPIO_Speed;  /*!< Specifies the speed for the selected pins.
                                      This parameter can be a value of @ref GPIOSpeed_TypeDef */

  GPIOMode_TypeDef GPIO_Mode;    /*!< Specifies the operating mode for the selected pins.
                                      This parameter can be a value of @ref GPIOMode_TypeDef */
GPIO_InitTypeDef;


推挽开漏

推挽输出高低电平均有驱动能力

开漏高电平相当于高阻态,没有驱动能力,低电平有驱动能力

以上是关于STM32学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

STM32入门笔记——PWM

STM32入门笔记——PWM

STM32学习笔记

stm32 那个管脚是1管脚,A还是B

基于STM32的触摸屏学习笔记

STM32学习笔记——DAC