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

news2024/9/27 7:25:47
  • 订阅:新手可以订阅我的其他专栏。免费阶段订阅量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是一种非常灵活的输入输出接口,可以广泛地应用于各种嵌入式系统中。下面是对于的结构图:

🌟GPIO 功能模式

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

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

⭐️硬件及原理图

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

我们可以看到控制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控制蜂鸣器响。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1151508.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

postgresql14-sql基础(一)

初始化 在“开始”中运行pgadmin4,输入密码,连接实例,创建测试数据库:hrdb 开启查询工具面板。 https://download.csdn.net/download/hy19930118/88419281 SELECT version() AS "pg版本"简单查询 SELECT first_na…

性能测试支持结果抽样分析,执行机新增运行状态和CPU监控,MeterSphere开源持续测试平台v2.10.8 LTS版本发布

2023年10月30日,MeterSphere一站式开源持续测试平台正式发布v2.10.8 LTS版本。自2023年5月发布v2.10 LTS版本后,MeterSphere开源项目组坚持发布小版本,持续进行问题的修复更新,并针对部分功能进行优化。 本次发布的MeterSphere v…

C/C++ 作业题笔记

请计算下列代码运行结果 解析:

获取服务器或域控登录日志工具

SharpUserIP 功能简介 服务器登陆日志 (需管理员权限) 在域控或远程提取登录日志,快速获取域用户对应的 IP 地址 项目地址:https://github.com/lele8/SharpUserIP 使用说明 ___ _ _ _ ___ ___/ __| |_ __ _ _ _ _ _…

docker解决oracle中ORA-12514和ORA-03113问题

ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务; 1、进入docke容器 docker exec -it 容器id bash 2、找到并修改listener.ora文件 查看oracle的位置 命令:cat /etc/profile 这是listener.ora文件的位置 /home/oracle/app/oracl…

输入输出缓冲区的作用,c++io流介绍,转换运算符(operator+类型)

目录 引入 输入输出缓冲区的作用 流 cio流 介绍 为什么要把流进行面向对象的设计呢? 原理 使用的注意点 istream类型对象转换为逻辑条件判断值 引入 转换运算符 文件io 介绍 示例 注意点 说明 利用字节流特性 字符串io 介绍 istringstream ostringstrea…

七、【图像添加水印】

文章目录 一、制作水印1、先新建图层2、新建文字图层并调好水印文字的大小与角度3、添加图层样式4、添加定义图案 二、添加水印 一、制作水印 1、先新建图层 2、新建文字图层并调好水印文字的大小与角度 3、添加图层样式 1、打开“描边” 2、选择“颜色” 4、添加定义图案 二…

【AI视野·今日NLP 自然语言处理论文速览 第六十期】Mon, 23 Oct 2023

AI视野今日CS.NLP 自然语言处理论文速览 Mon, 23 Oct 2023 (showing first 100 of 108 entries) Totally 100 papers 👉上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Exploring Linguistic Probes for Morphological Generalization Autho…

电商数据采集抓取封装数据、淘宝、天猫、京东等平台商品详情API接口参数详解

电商数据采集抓取数据、淘宝、天猫、京东等平台的电商数据抓取,网页爬虫、采集网站数据、网页数据采集软件、python爬虫、HTM网页提取、APP数据抓包、APP数据采集、一站式网站采集技术、BI数据的数据分析、数据标注等成为大数据发展中的热门技术关键词。那么电商数据…

Android开发笔记(三)—Activity篇

活动组件Activity 启动和结束生命周期启动模式信息传递Intent显式Intent隐式Intent 向下一个Activity发送数据向上一个Activity返回数据 附加信息利用资源文件配置字符串利用元数据传递配置信息给应用页面注册快捷方式 启动和结束 (1)从当前页面跳到新页…

数据库软考知识

分布式数据库透明性 封锁 加上共享锁之后只能加共享锁,加上排他锁之后,啥锁都不能加。 分布式数据库特性 伪传递定理 SQL函数定义,有点冷 来了奥,更冷 存储过程 很重要,下午第二大题也是数据库

解决QtCreator11及更高版本使用JDK17时无法生成APK

1.修改gradle文件,增加如下内容: DEFAULT_JVM_OPTS"-Xmx5120m --add-exportsjava.base/sun.nio.chALL-UNNAMED \ --add-opensjava.base/java.langALL-UNNAMED \ --add-opensjava.base/java.lang.reflectALL-UNNAMED \ --add-opensjava.base/java.io…

用户优先:确保微信小程序手机号授权在新旧版本中无缝衔接

🔭 嗨,您好 👋 我是 vnjohn,在互联网企业担任 Java 开发,CSDN 优质创作者 📖 推荐专栏:Spring、MySQL、Nacos、Java,后续其他专栏会持续优化更新迭代 🌲文章所在专栏&…

SQL注入——二次注入漏洞

文章目录 SQL注入——二次注入漏洞1. 二次注入原理2. 二次注入需要具备的两个条件3. 二次注入实例4. 总结 SQL注入——二次注入漏洞 1. 二次注入原理 在第一次插入恶意数据的时候,只是对其中的特殊字符进行了转义,在写入数据库的时候还是原来的字符&am…

9.多线程之定时器与线程池

定时器与线程池 文章目录 定时器与线程池1. 定时器1.1 定时器的工作原理1.2 定时器的使用2.3 实现定时器 2. 线程池2.1 线程池存的优点2.2 线程池的使用2.3 线程池的原理2.3.1 工厂模式2.3.2 ThreadPoolExecutor类 2.4 实现线程池 1. 定时器 定时器也是软件开发中的一个重要组件…

【GEE】Google Earth Engine(GEE)注册详细教程无需教育邮箱

这个专栏真的是纠结了很久,不知道到底要不要分享自己在学习GEE的时候的一些经验和代码。因为本人在日常中使用Python和ENVI多点,虽然GEE也会用但不至于频繁使用,同时针对GEE其实官网给出了很多接口的使用方法,国内外也有很多人分享…

编译正点原子LINUXB报错make: arm-linux-gnueabihf-gcc:命令未找到

编译正点原子LINUXB报错make: arm-linux-gnueabihf-gcc:命令未找到 1.报错内容2.解决办法3./bin/sh: 1: lzop: not found4.编译成功 1.报错内容 make: arm-linux-gnueabihf-gcc:命令未找到CHK include/config/kernel.releaseCHK include/genera…

全面提升企业管理效率,助力企业持续增长——三叠云进销存解决方案

企业在生产经营过程中,高效的进销存管理是企业成功的关键因素之一。它不仅能够优化企业的资金流动,避免库存积压和断货现象,提高客户满意度,而且可以优化供应链,减少运营成本,提高生产和物流效率。三叠云正…

C语言 数据的存储2

如图所示代码: 代码运行结果为: 这是什么原因呢? 解析: 因为unsigned int是无符号整形,而我们的for循环的条件是 所以我们会一直循环下去,至于我们的结果为什么会是 一个unsigned int类型是4个字节,38位&am…

论文范文:论基于架构的软件设计方法及应用

注意:范文只适用于帮助大家打开写作思路,并不能作为素材直接用于平时练习、考试中。考试中直接使用范文的素材,会有被认定为雷同卷的风险。 摘要: 2022年4月,本人所在单位计划研发生态集装箱管理控制平台项目。该平台主要用于与现有公司生态集装箱产品做对接,达到远程控制…