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

news2024/9/27 5:49:31
  • 订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000+
  • python项目实战

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

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

🌟 最近更新

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

⭐️STM32控制GPIO实现蜂鸣器响

我们这里使用的是STM32芯片,我们用STM32控制GPIO实现蜂鸣器响。(关于GPIO我们在前面介绍过了,这里给新人看的。可以直接从原理图开始看)

🌟什么是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之间连接一个电阻,下拉输入模式在输入端口与地之间连接一个电阻。
  • 浮空输入模式和模拟输入模式都是用来连接传感器等模拟信号源的,浮空输入模式下引脚不与任何电路相连,使用前需要外部加电源或信号源,模拟输入模式下引脚内部连接一个数据采集电路,可以直接将外部模拟信号转换为数字信号。

⭐️硬件及原理图

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

我们可以看到控制蜂鸣器的接口是PC13,我们接下来开始写代码。

⭐️代码实现

🌟Buzzer.c

#include "include.h"

void BEEP_Init(void)
{   
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);	
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;	//推挽输出
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;			//LED0-->PC.2 端口配置
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOC, &GPIO_InitStructure);

}

🌟Buzzer.h

#ifndef __LED_H
#define __LED_H

void BEEP_Init(void);

#endif

🌟main.c

#include "include.h"


int main(void)
{

	BEEP_Init();
	
	while(1)
	{
		
		GPIO_ResetBits(GPIOC, GPIO_Pin_13);
		Delay_ms(2000);
		GPIO_SetBits(GPIOC, GPIO_Pin_13);
		Delay_ms(2000);
		
	}
}
  1. GPIO_ResetBits(GPIOC, GPIO_Pin_13);:调用一个名为GPIO_ResetBits的函数,它将重置与GPIOC和GPIO_Pin_13相关的位。使蜂鸣器发出声响。
  2. Delay_ms(2000);:调用一个名为Delay_ms的函数,它将使程序暂停执行2000毫秒(即2秒)。这通常用于控制程序的执行速度或等待外部设备的响应。
  3. GPIO_SetBits(GPIOC, GPIO_Pin_13);:调用一个名为GPIO_SetBits的函数,它将设置与GPIOC和GPIO_Pin_13相关的位。
  4. Delay_ms(2000);:再次调用Delay_ms函数,使程序暂停执行2000毫秒。

 

⭐️总结

我们学习了STM32怎么通过控制GPIO实现蜂鸣器响,通过原理图,找到对应的GPIO口,来实现蜂鸣器响。其实,这里的代码和我们上一篇的代码差不多,主要是管脚不一样。

🌟下节预告

我们今天介绍了实现stm32通过GPIO控制蜂鸣器响。下一篇会介绍定时器原理和按键消抖的相关知识。

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

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

相关文章

后门程序分析1

临时补充一个内容,这是一个后门程序,通过IDA分析,之后把里面收集的信息点全部整理出来(包括:反虚拟机,系统信息等等)pass:guet 用IDA打开先看看主函数的样子 查阅一些这些API InternetOpenA&…

C++入门06—结构体

1. 结构体基本概念 结构体属于用户自定义的数据类型,允许用户存储不同的数据类型 2. 结构体定义和使用 语法:struct 结构体名 { 结构体成员列表 }; 通过结构体创建变量的方式有三种(相当于python中的实例化对象): struct 结构体…

图像无损放大画质修复工具 Topaz Photo AI「Mac」

Topaz Photo AI是一款适用于Mac的图像处理软件,它使用人工智能技术对照片进行编辑和优化。该软件提供了多种强大的功能,帮助用户轻松地改善图像质量,并实现自定义的效果。 Topaz Photo AI支持多种文件格式,包括JPEG、TIFF、PNG、R…

BLIP2中Q-former详解

简介 Querying Transformer,在冻结的视觉模型和大语言模型间进行视觉-语言对齐。 为了使Q-Former的学习达到两个目标: 学习到和文本最相关的视觉表示。 这种表示能够为大语言模型所解释。 需要在Q-Former结构设计和训练策略上下功夫。具体来说&…

氧化铜纳米线 纳米氧化铜 Cupric oxide 瑞禧

氧化铜纳米线 中文名称:纳米氧化铜 英文名称:Cupric oxide CAS:1317-38-0 保存条件:密封保存于干燥、阴凉的环境中 产品特点 1.氧化铜可溶于稀酸、NH4Cl、(NH4)2CO3、氰化钾溶液,不溶于水,在醇、氨溶液中溶解缓慢。高温遇氢或一氧化碳,可…

如何实现树莓派Raspberry Pi无公网IP环境下远程访问?

文章目录 前言如何通过 SSH 连接到树莓派步骤1. 在 Raspberry Pi 上启用 SSH步骤2. 查找树莓派的 IP 地址步骤3. SSH 到你的树莓派步骤 4. 在任何地点访问家中的树莓派4.1 安装 Cpolar内网穿透4.2 cpolar进行token认证4.3 配置cpolar服务开机自启动4.4 查看映射到公网的隧道地址…

想喝一点汤 - 如何看懂新闻联播

看懂新闻联播 埋头苦干、辛苦劳作是挣不到钱的,要去离钱近的地方。在中国需要靠近政府。 告知性新闻 告知性的新闻往往隐藏着机会. 国际新闻各国领导人来访 潜台词:双边可能达成了某种协议,需要重要领导见证签字。 普通人机会 外贸机会…

Pr2022安装教程(超级好用)附网盘资源(正版教程)

文末资源自提 一.简介 Premiere是由Adobe Systems开发的专业视频编辑软件,被广泛用于电影制作、电视节目制作、广告制作和个人视频编辑等领域。它提供了丰富的工具和功能,使用户能够进行视频剪辑、调色、特效添加和输出等操作。 下面是对Premiere的详…

【Linux】多路IO复用技术①——select详解如何使用select模型在本地主机实现简易的一对多服务器(附图解与代码实现)

这一篇的篇幅可能有点长,但真心希望大家能够静下心来看完,相信一定会有不小的收获。那么话不多说,我们这就开始啦!!! 目录 一对一服务器中的BUG 如何实现简易的一对多服务器 实现简易一对多服务器的大体…

web前端常见开发工具汇总 你用过几个?

搬运旗下公众号的内容~ 目录 1.记事本 2.Visual studio code 3.Hbuilder 4.Eclipse 5.Webstorm 6.Notepad 随着信息时代的不断进步,互联网在人类社会中所占的地位愈发举足轻重。大大小小的网站,构成了如今光怪陆离的网络社会。我们知道&#xff0c…

上海中优城市万豪酒店推出全新国际IP童趣主题房,独特住宿体验中国首秀

2023年10月30日,中国上海 – 近日,上海中优城市万豪酒店正式推出由全球品牌娱乐公司孩之宝官方授权打造的小马宝莉和变形金刚主题客房,以创意客房、新奇体验和丰富礼遇,为童游家庭或年轻的动漫迷们开启沉浸式入住之旅,…

直击电商商城内核!一站式解决方案

作为一家深耕电商运营多年的软件开发公司,我们拥有先进的轻量级电商中台系统,且100%开源,包含B2C、B2B2C、S2B2C、O2O和社区团购等多种商业模式,无论在技术、业务架构、功能、设计还是售后支持上,我们都秉承着追求极致…

函数栈帧的创建和销毁(以C语言代码为例,汇编代码的角度分析)

函数栈帧的创建和销毁[以C语言代码为例,汇编代码的角度分析] 一.前言1.几个问题2.几个说明 二.相关寄存器和汇编命令的简要说明三.从汇编代码调试的角度逐步分析函数栈帧的创建于销毁1.函数栈区的知识:2.逐步调试分析1.保存__tmainCRTStartup这个函数栈帧的栈底地址2.正式进入m…

【Linux】centOS7安装配置及Linux的常用命令---超详细

一,centOS 1.1 centOS的概念 CentOS(Community Enterprise Operating System)是一个由社区支持的企业级操作系统,它是以Red Hat Enterprise Linux(RHEL)源代码为基础构建的。CentOS提供了一个稳定、可靠且…

解决计算机msvcp120.dll文件丢失的5种方法,亲测有效

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“msvcp120.dll丢失”。这个错误提示可能会给我们带来很大的困扰,影响我们的正常使用。本文将详细介绍msvcp120.dll丢失的原因、解决方法以及预防措施,帮助大家更好地…

python读取shadow文件脚本

python读取shadow文件脚本 该脚本源代码为kali中执行的源代码 from dataclasses import fieldswith open(/etc/shadow,r)as file:for line in file:listline.split(:)if list[1]!"*" and list[1]!"!" and list[1]!"!*":paslist[1].split($)sal…

基于FMCW雷达的人体复杂动作识别

基于FMCW雷达的人体复杂动作识别

【Python算法】算法练习(一)

❤️博客主页: iknow181 🔥系列专栏: Python、JavaSE、JavaWeb、CCNP 🎉欢迎大家点赞👍收藏⭐评论✍ 目录 1、输出n以内的质数 2、求n以内最大的m个质数的和,并打印这些质数以及它们的和 方法一 方法二…

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

订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000 python项目实战 Python编程基础教程系列(零基础小白搬砖逆袭) 作者:爱吃饼干的小白鼠。Python领域优质创作者,2022年度博客新星top100入围,荣获多家平台专家称号。…

postgresql14-sql基础(一)

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