XCOSnTh单片机的IO口
如图所示单片机PC13作为输出模式的IO(IO是input(输入)、output(输出)的简称),如图此单片机的PA0-PA15、PB0-PB15、PC13-PC15、PD0-PD1均是IO口,之所以抽PC13出来讲,是因为开发板的PC13接了一个LED灯,通过对IO口的控制,完成对灯控制,LED灯的电路图如下
对此电路做一个简单的分析:
当【PC13为高电平】的时候,LED两端的电压相等,则无电流通过,所以LED会【不亮】。当【PC13为低电平】的时候,LED两端电压不相等,且LED正向导通,有电流通过,所以LED会【亮】,总结:PC13高电平LED不亮,PC13低电平LED亮,什么是高电平,当PC13输出1的时候为高电平,什么是低电平呢?当PC13输出0的时候为低电平
那我们的程序该如何写,才能让PC13输出1或者输出0呢?
#include"STM32F10X.h"
void PC13()
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);//使能GPIOC的时钟GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;GPIO_Init(GPIOC, &GPIO_InitStructure); //初始化PC13 IOGPIO_ResetBits(GPIOC,GPIO_Pin_13);//PC13输出0,即PC13的IO上为低电平GPIO_SetBits(GPIOC,GPIO_Pin_13);//PC13输出1,即PC13的IO上为高电平
}
GPIO_Mode_Out_PP:推挽输出模式
GPIO_Speed_50MHz:最大输出速度为50MHz
上面提到了输出模式为推挽输出,那么什么是推挽输出呢?

由上图可知,当Vin输入为低电平(0)的时候,Vout与GND之间的电压相同,即Vout为0V(低电平);当Vin输入为高电平(1)的时候,Vout与Vdd之间的电压相同,即Vout为Vdd(高电平);电流的流通图如下:

除了推挽输出模式还有什么输出模式呢?
还有开漏输出模式,那什么是开漏输出模式呢?
---------------------------------------------------------------------------------------------------------------------------------
此单片机的IO有8种工作模式:
1、推挽输出
2、开漏输出
3、浮空输入
4、上拉输入
5、下拉输入
------------------------------------
6、模拟输入
7、开漏复用输出
8、推挽复用输出