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学习笔记的主要内容,如果未能解决你的问题,请参考以下文章