网站推广注册,电力建设监理招聘网站,小企业公司网站建设,平面设计有哪些网站GPIO简介
GPIO#xff08;General Purpose Input Output#xff09;通用输入输出口8种输入输出模式输出模式可控制端口输出高电平#xff0c;驱动LED、蜂鸣器、模拟通信协议输出时许等输入模式可读取端口的高低电平或电压#xff0c;用于读取按键输入、外接模块电平信号输…GPIO简介
GPIOGeneral Purpose Input Output通用输入输出口8种输入输出模式输出模式可控制端口输出高电平驱动LED、蜂鸣器、模拟通信协议输出时许等输入模式可读取端口的高低电平或电压用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等 GPIO基本结构 GPIO位结构 最左边是寄存器中间是驱动器右边是引脚。
上面是输入下面是输出。
先说上面VDD为上拉电阻VSS为下拉电阻。
上拉电阻默认为高电平输入模式。
下拉电阻默认为低电平输入模式。
施密特触发器只有高于上限或低于下限输出才发生变化类似于下图。 通过设置位设置和位清除寄存器如果对某一位置1操作在设置寄存器的对应位写1即可剩下不需要设置的置0。 推挽输出模式下P-MOS和N-MOS均有效数据寄存器为1时上管导通下管断开输出直接接到VDD就是输出高电平。数据寄存器为0时上管断开下管导通输出直接接到VSS就是输出低电平。 开漏输出模式下P-MOS无效只有N-MOS在工作数据寄存器为1时下管断开输出相当于断开也就是高阻模式数据寄存器为0时下管导通输出直接接到VSS输出低电平。开漏模式可以作为通信协议的驱动方式。
8种模式
浮空输入可读取引脚电平若引脚悬空则电平不确定上拉输入可读取引脚电平内部连接上拉电阻悬空时默认为高电平下拉输入可读取引脚电平内部连接下拉电阻悬空时默认为低电平模拟输入GPIO无效引脚直接接入内部ADC开漏输出可输出引脚电平高电平为高阻态低电平接VSS推挽输出可输出引脚电平高电平为VDD低电平接VSS复用开漏输出由片上外设控制可输出引脚电平高电平为高阻态低电平接VSS复用推挽输出由片上外设控制可输出引脚电平高电平为VDD低电平接VSS 按键简介 按键抖动由于按键内部使用的是机械式弹簧片来进行通断的所以在按下和松手的瞬间会伴随有一连串的抖动。 传感器模块介绍 传感器模块传感器元件光敏电阻/热敏电阻/红外接收管等的电阻会随外界模拟量的变化而变化通过与定值电阻分压即可得到模拟电压输出再通过电压比较器进行二值化即可得到数字电压输出。 为什要接上拉如果PA0没有接上拉就会变成浮空所以必须要接上拉。 这个既可以接上拉也可也接浮空上拉就是双电阻更稳定相应的损耗也大一些。 复习C语言
C语言数据类型 C语言宏定义
关键字#define 用途用一个字符串代替一个数字便于理解防止出错提取程序中经常出现的参数便于快速修改 定义宏定义 #define ABC 12345 引用宏定义 int a ABC; //等效于int a 12345; C语言typedef
关键字typedef 用途将一个比较长的变量类型名换个名字便于使用 定义typedef typedef unsigned char uint8_t; 引用typedef uint8_t a; //等效于unsigned char a; C语言结构体
关键字struct 用途数据打包不同类型变量的集合 因为结构体变量类型较长所以通常用typedef更改变量类型名引用结构体成员 typedef struct{ char x; int y; float z;
} StructName_t;
C语言枚举
关键字enum 用途定义一个取值受限制的整型变量用于限制变量取值范围宏定义的集合 定义枚举变量 因为枚举变量类型较长所以通常用typedef更改变量类型名引用枚举成员 代码部分
配置流程
1、时钟开启
2、配置端口。 GPIO配置部分
1 // 时钟开启
2 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
3
4 // 配置端口
5 GPIO_InitTypeDef GPIO_InitStruct;
6 GPIO_InitStruct.GPIO_Mode GPIO_Mode_Out_PP; // 推挽输出
7 GPIO_InitStruct.GPIO_Pin GPIO_Pin_1;
8 GPIO_InitStruct.GPIO_Speed GPIO_Speed_50MHz;
9 GPIO_Init(GPIOA, GPIO_InitStruct);
为什么要用APB2可以点击RCC_APB2PeriphClockCmd查看定义可以看到所以用APB2。