MOS管不可加交流电,而且需要散热
继电器不需要散热,而且可以通过高电压大电流
FT表示可以容忍5V电压 没有就只代表只接收3.3V
VSS接地 VDD接正极 一般遇到供电电路都会加上一个滤波电容,可以保证电压供电稳定
STM32一般主晶振都是8MHZ,然后经过锁相倍频得到72MHZ,再接20PF的电容作为起振电容
bash
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //开启GPIOC的时钟
//使用各个外设前必须开启时钟,否则对外设的操作无效
/*GPIO初始化*/
GPIO_InitTypeDef GPIO_InitStructure; //定义结构体变量
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //GPIO模式,赋值为推挽输出模式
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; //GPIO引脚,赋值为第13号引脚
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //GPIO速度,赋值为50MHz
GPIO_Init(GPIOC, &GPIO_InitStructure); //将赋值后的构体变量传递给GPIO_Init函数
//函数内部会自动根据结构体的参数配置相应寄存器
//实现GPIOC的初始化
/*设置GPIO引脚的高低电平*/
/*若不设置GPIO引脚的电平,则在GPIO初始化为推挽输出后,指定引脚默认输出低电平*/
// GPIO_SetBits(GPIOC, GPIO_Pin_13); //将PC13引脚设置为高电平
GPIO_ResetBits(GPIOC, GPIO_Pin_13); //将PC13引脚设置为低电平
/*
以下就是非常常用的一段代码,非常之简单,就是这样用就可以相当于解方程之前先写一个解字
stm32使用外设都需要打开时钟,否则对外设的操作无效
因此就是先写这一句:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
开启了时钟之后就开始对该GPIO端口进行初始化操作
GPIO_InitTypeDef GPIO_InitStructure; //定义结构体变量 因为GPIO_Init需要传入一个结构体变量因此需要申明一个
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //GPIO模式,赋值为推挽输出模式
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; //GPIO引脚,赋值为第13号引脚
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //GPIO速度,赋值为50MHz
GPIO_Init(GPIOC, &GPIO_InitStructure);
一下是分别设置为高低电平代码
GPIO_SetBits(GPIOC, GPIO_Pin_13); //将PC13引脚设置为高电平
GPIO_ResetBits(GPIOC, GPIO_Pin_13); //将PC13引脚设置为低电平
*/
GPIO:通用输入输出口
可以配置8种输入输出模式
引脚电平:3.3V 部分引脚可以容忍5V
输出模式下可控制端口输出高低电平,用来驱动LED,控制蜂鸣器,模拟通信协议
输入模式下可读取端口的高低电平用来读取按键的输入,外接模块电平信号的输入,ADC电压采集,模拟通信协议
为了避免引脚的悬空导致输入数据的不确定,我们就需要再这里加入上拉或者下拉电阻,就相当于增加一个标志位用来标定高低电平
上拉就是高电平 下拉就是低电平输入
施密特触发器对输入电压进行整形,高于电压输出高 低于电压输出低 用来界定0和1,因为输入进来的电压波形不是很整齐的,因此添加一个施密特触发器用来整形信号
MOS管就是一种电子开关
推挽输出高低电平均有驱动能力,开漏输出相当于高阻态模式只有低电平驱动能力