单片机的GPIO功能

对于入门单片机而言,点亮第一个led灯是必然的。控制多个IO口高低电平变化,实现流水灯,或者用pwm控制灯亮的大小也叫呼吸灯。

这里我总结GPIO的各种模式和单片机各种片上资源外设使用时需要配置的GPIO

GPIO的结构决定了GPIO可以被配置成以下模式(基于f1系列的): 

    typedef enum     
    {      
        GPIO_Mode_AIN = 0x0, //  模拟输入          
        GPIO_Mode_IN_FLOATING  = 0x04, // 浮空输入          
        GPIO_Mode_IPD  = 0x28, // 下拉输入         
        GPIO_Mode_IPU  = 0x48, // 上拉输入          
        GPIO_Mode_Out_OD  = 0x14, // 开漏输出          
        GPIO_Mode_Out_PP  = 0x10, // 推挽输出          
        GPIO_Mode_AF_OD  = 0x1C, // 复用开漏输出         
        GPIO_Mode_AF_PP = 0x18 // 复用推挽输出        
    } GPIOMode_TypeDef;  

 下面这个和l298n的工作原理相似,都是控制mos管来输出高低电平(控制电机正反转)

这两个mos管(假设上管Q1是P-Mos,下管Q2是N-Mos)就相当于两个开关,可以控制器里的数据寄存器写0,1操作控制他们导通关闭。

下面介绍我用的各种器件所需要配置的GPIO,在stm32Cubemax能快速配置好

pwm 输出,蓝牙等串口通信,编码器配置用 复用推挽输出 AF_PP

软件I²C通信相关的用   开漏输出 Out_OD(如oled,光照传感器bh1750,软件读取mpu6050)

而硬件I²C读取mpu6050用的是复用开漏输出AF_OD

外部中断EXTI像激光计数,红外传感,是上拉输入GPIO_Mode_IPU

AD模数转化等用的是GPIO_Mode_AIN模拟输入

l298n的IN1,IN2、数码管max7219(spi通信,5个引脚VCC,GND,DIO,CS,CLK,后面三个接单片机引脚),温湿度传感器DHT11的data接口,点亮小灯等用的普通输出GPIO_Mode_Out_PP

编码器测速AB相  上拉下拉浮空都可以,上拉下拉如何选择,就看接到这个引脚的外部模块输出的默认电平,如果是高电平,则上拉输入,默认输入高电平(用的较多),反之。

用这段代码改变编码器计数的方向

	//定时器编码器接口配置  //通道不反相
	TIM_EncoderInterfaceConfig(TIM3, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising, TIM_ICPolarity_Falling);

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值