合肥中科深谷嵌入式项目实战——人工智能与机械臂(三)

  • 订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000+
  • python项目实战

    Python编程基础教程系列(零基础小白搬砖逆袭)

  • 作者:爱吃饼干的小白鼠。Python领域优质创作者,2022年度博客新星top100入围,荣获多家平台专家称号。

 最近更新

合肥中科深谷嵌入式项目实战——人工智能与机械臂(二)

我们上一节,我们介绍了keil软件安装教程,本文接下来介绍LED灯闪烁的功能。

⭐️STM32控制GPIO完成点亮LED灯

我们这里使用的是STM32芯片,我们用STM32控制GPIO完成点亮LED灯。

什么是GPIO?

那么,什么是GPIO呢?

GPIO是指通用输入输出,它是一种数字接口,可以让单片机和其他电子设备交换数据。具体来说,GPIO是一组用于控制电路的引脚,其可以通过软件进行配置,从而实现输入和输出功能。通过GPIO,可以实现与外部设备的通信,如LED灯,按钮,传感器等等。GPIO在嵌入式系统和单片机控制中应用广泛,是控制硬件的重要手段之一。

GPIO基本结构

GPIO是General Purpose Input/Output的缩写,意为通用输入/输出,是一种用于嵌入式系统中的输入输出接口。GPIO通常由一组输入/输出引脚组成,可以用来读取传感器数据、控制电机等外部设备。GPIO的基本结构可以分为以下几个部分:

  1. 输入/输出引脚:GPIO通常包含多个输入/输出引脚,引脚数量和类型取决于具体的芯片型号和应用需求。

  2. 数据方向控制器:GPIO可以通过数据方向控制器来控制输入和输出方向。当GPIO被配置为输入时,数据方向控制器将向外部设备输出一定的信号来指示其为输入模式。当GPIO被配置为输出时,数据方向控制器将向外部设备输出一定的信号来指示其为输出模式。

  3. 状态寄存器:GPIO可以通过状态寄存器来记录GPIO的当前状态,例如输入或输出状态、电平状态等。

  4. 中断控制器:GPIO可以通过中断控制器来实现中断功能。当GPIO状态发生变化时,中断控制器会产生一个中断信号,从而使系统执行相应的中断处理程序。

  5. 编程接口:GPIO可以通过一种编程接口来进行配置和控制,通常使用各种编程语言来实现,例如C语言、Python等。

总的来说,GPIO是一种非常灵活的输入输出接口,可以广泛地应用于各种嵌入式系统中。下面是对于的结构图:

合肥中科深谷嵌入式项目实战——人工智能与机械臂(三)_第1张图片

GPIO 功能模式

STM32F103系列的I/O引脚共有8种工作模式,其中输出模式有四种:推挽输出、开漏输出、复用推挽输出、复用开漏输出;输入模式有四种:上拉输入、下拉输入、浮空输入、模拟输入。

  • 推挽输出模式的引脚输出高低电平时,直接输出高电平或低电平,适合连接到外部电路或器件的输入端。
  • 开漏输出模式的引脚输出高电平时,不输出电压,在输出低电平时,将端口与地相连,适合连接到晶体管、继电器等需要开关控制的器件。
  • 复用推挽输出模式和复用开漏输出模式都是在要使用定时器、USART等外设时选择的模式。复用推挽输出模式和推挽输出模式类似,输出高低电平时直接输出高电平或低电平;而复用开漏输出模式和开漏输出模式类似,输出高电平时不输出电压,在输出低电平时将端口与地相连。
  • 上拉输入模式和下拉输入模式都是用来连接开关等输入设备的,其中上拉输入模式在输入端口与VCC之间连接一个电阻,下拉输入模式在输入端口与地之间连接一个电阻。
  • 浮空输入模式和模拟输入模式都是用来连接传感器等模拟信号源的,浮空输入模式下引脚不与任何电路相连,使用前需要外部加电源或信号源,模拟输入模式下引脚内部连接一个数据采集电路,可以直接将外部模拟信号转换为数字信号。

⭐️硬件及原理图

我们可以对照开发板原理图,找到对应的引脚。

合肥中科深谷嵌入式项目实战——人工智能与机械臂(三)_第2张图片

合肥中科深谷嵌入式项目实战——人工智能与机械臂(三)_第3张图片

我们可以看到控制LED的接口是PB9,我们接下来开始写代码。

⭐️代码实现

LED.C

#include "include.h"

void LED_Init(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;	//推挽输出
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;			//LED0-->PC.2 端口配置
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOB, &GPIO_InitStructure);
}

LED.H

#ifndef __LED_H
#define __LED_H

void LED_Init(void);

#endif

MAIN.C

#include "include.h"

int main(void)
{
	LED_Init();//初始化 	
	while (1)
	{
		GPIO_ResetBits(GPIOB, GPIO_Pin_9);//点亮
		Delay_ms(3000);
		GPIO_SetBits(GPIOB, GPIO_Pin_9);//熄灭
		Delay_ms(1000);
    }
}

⭐️总结

我们学习了STM32怎么通过控制GPIO完成点亮LED灯,我们文末代码实现的是闪烁,通过原理图,找到对应的GPIO口,来实现LED灯闪烁。

下节预告

我们今天介绍了实现LED灯闪烁的功能。下一篇会介绍实现stm32通过GPIO控制蜂鸣器响。

你可能感兴趣的:(合肥中科深谷嵌入式项目实战,stm32,嵌入式硬件,arm开发)