依次从右向左看有两个保护二极管上面接3.3V下面接0V如果电压大于3.3V上方保护二极管导通如果小于0V下面二极管导通处于0V-3.3V二极管均不会导通。对于输入电路我们能看到一个上拉电阻和一个下拉电阻。分别闭合任意一个开关即输入上拉或者输入下拉两者都不闭合即为输入浮空容易受到外界信号干扰。施密特触发器的作用对输入电压进行整形原理即为大于某一电压即为高电平小于某一电压即为低电平如果位于高低电平判断电压之间即保持原电平不变。输出部分通过输出控制来控制两个MOS管的开关。设置输出推挽 输出高电平的话P-MOS会闭合N-MOS会断开输出低电平的话P-MOS会断开N-MOS会闭合。设置输出开漏 P-MOS会失能当N-MOS闭合时输出低电平N-MOS断开时引脚处于高阻抗状态。初始化PA0的代码#include stm32f10x.h // Device header #include Delay.h int main(void) { //开启GPIOA的时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //创建初始化GPIOA的结构体设置输出上拉 引脚0 速度为50MHz GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.GPIO_Mode GPIO_Mode_Out_PP; GPIO_InitStruct.GPIO_Pin GPIO_Pin_0; GPIO_InitStruct.GPIO_Speed GPIO_Speed_50MHz; GPIO_Init(GPIOA,GPIO_InitStruct); while(1) { //通过GPIO_WriteBit操作PA0(BitAction)0等价于BIT_RESET控制引脚输出低电平,(BitAction)1等价于BIT_SET控制引脚输出高电平 GPIO_WriteBit(GPIOA,GPIO_Pin_0,(BitAction)0); Delay_s(1); GPIO_WriteBit(GPIOA,GPIO_Pin_0,(BitAction)1); Delay_s(1); } }在这里学会了对枚举的深入理解枚举的标准写法enum 枚举名 { 常量1, 常量2, 常量3 };枚举值的自增enum Color { RED, // 0 GREEN, // 1 BLUE // 2 }; //这里RED0,GREEN1,BLUE2。如果不手动赋值默认枚举的第一个值为0后面依次1手动赋初值enum Light { OFF 0, ON 1 };在STM32当中简化写法GPIO_WriteBit(GPIOA,GPIO_Pin_0,(BitAction)0); GPIO_WriteBit(GPIOA,GPIO_Pin_0,(BitAction)1); //上面两条代码等价 //GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET); //GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET); typedef enum { Bit_RESET 0, Bit_SET 1 } BitAction; //typedef 原类型 新名字; //便于理解有下面这个例子 typedef enum {A0,B1} Test; int num 1; Test t (Test)num; // 这里的Test t (Test)num; 因为在枚举当中B 1故等价Test t B;