根据LED修改峰鸣器驱动程序|学习笔记

简介: 快速学习根据LED修改峰鸣器驱动程序

开发者学堂课程【嵌入式之RFID开发与应用2020版根据LED修改峰鸣器驱动程序】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/665/detail/11152


根据LED修改峰鸣器驱动程序

 

回去看 LED的初始化,为什么要把它配置成推广输出?为了让灯变得更亮,推动能力更强,为什么不选择其他的输入输出方式?不同的配置带来不同的效果。

把程序简单修改一下,让它不再是驱动一个LED灯,而是让它去驱动一个蜂鸣器。如原理图所示,把蜂鸣器接到了B11上面。

image.png

Void led-int(void)

{

GPIO-InitTypeDef   GPIO-InitStructure;

RCC-APB2PeriphclockCmd(RCC-XXX-LED, ENABLE);

GPIO-InitStructure,GPIO-Pin=GPIO-XXX-LED;

GPIO-InitStructure,GPIO-Mode=GPIO-Mode-Out-PP;

GPIO-InitStructure,GPIO-Speed=GPIO-Speed-2MHZ;

GPIO-Init(GPIO-XXX-LED-PORT,& GPIO-InitStructure);

GPIO-XXX-LED-OFF():

}

操作B11复制上面的代码,将LED改为beep,多了一个输出beeo_init()并且操作的这些广角也重新复制一份:

/*LED*/

#define RCC-XXX-LED RCC-APB2Periph-GPIOC

#define GPIO-XXX-LED-PORT GPIOC

#define GPIO-XXX-LED GIO-Pin-13

将LED统一改为BEEP,并且真正的BEEP的广角不再是c了,而是B11,所以要把GPIOC首先改GPIOB, GIO-Pin-13改成GIO-Pin-11。这些值在stm32f10x文件里面, 把所有的io所有的计算机定义个变,官方的,直接用。

#define BEEP_xxx_ON()

GPIO_ResetBits(GPIO_XxXx_LED_PORT,GPIO_xXx_LED)//点亮

#define BEEP_xxx_OFF()

GPIO_SetBits(GPIo_xxx_LED_PORT,GPIO_xxx_LED)//熄灭

改一下LED为BEEP的开关,点亮和熄灭删掉,是发声和不发声。其余也是改LED为BEEP。但是风鸣器不知道是高电频的时候响还是低电频的时候响。

image.png

按上图所示电路来看,它是低电平的时候会响,刚好跟这个灯匹配的,但如果不是这个电路,可能就反过来了,b11就完成

Main函数改为下面所示,让这个灯和蜂鸣器一起一个在闪,一个在响:

Int main(void)

{

Led-int();

Beep-init();

Whie(1){

LED-XXX-ON();

BEEP-XXX-ON();

delay-ms(300);

LED-XXX-ON();

BEEP-XXX-ON();

delay-ms(300);

}

重新编一下程序,直接下载,复位。听到声音。这个是根据GPIO改出来的封鸣器,掌握了基本原理,改成另一个功能的程序非常容易的。还可以去做一个按键。以上是根据LED修改蜂鸣器的驱动程序。

相关文章
|
存储 安全 Ubuntu
群控软件代理,群控服务器配置要求
群控软件代理,群控服务器配置要求
518 8
|
存储 索引 Python
一文掌握python数组numpy的全部用法(零基础学python(二))
一文掌握python数组numpy的全部用法(零基础学python(二))
|
Cloud Native Devops 持续交付
云原生架构的演进与实践
本文深入探讨了云原生架构的核心概念、技术组件及其在现代软件开发中的应用。通过分析容器化、微服务、持续集成/持续部署(CI/CD)等关键技术,揭示了这些技术如何共同促进应用程序的灵活性、可扩展性和高可用性。文章还讨论了云原生架构实施过程中面临的挑战和最佳实践,旨在为开发者和企业提供一套实用的指导方针,以便更有效地利用云计算资源,加速数字化转型的步伐。
379 5
|
机器学习/深度学习 人工智能 程序员
大模型时代的思考:小心陷入ChatLLMs构建的蜜糖陷阱-基于人类反馈的间接(反向)驯化-你是否有注意到?
本文探讨了大模型基于人类反馈训练的原理及其潜在风险,特别是大模型在迎合用户需求时可能带来的“蜜糖陷阱”。通过实际案例分析,强调了理性使用大模型的重要性,提出了保持批判性思维、明确人机协作边界、提升人类判断力和创新能力等建议,旨在让大模型真正为人类服务,而不是限制人类思维。
456 4
|
安全 Go C语言
Go常量的定义和使用const,const特性“隐式重复前一个表达式”,以及iota枚举常量的使用
这篇文章介绍了Go语言中使用`const`定义常量的方法,包括常量的特性“隐式重复前一个表达式”,以及如何使用`iota`实现枚举常量的功能。
|
数据采集 分布式计算 DataWorks
DataWorks产品使用合集之odps如何使用正则表达式匹配字段的内容
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
447 0
|
人工智能 开发者 Python
Firefly:开源大模型训练工具助力AI技术进步,让你轻松训练各种主流大模型!
Firefly:开源大模型训练工具助力AI技术进步,让你轻松训练各种主流大模型!
914 1
|
机器学习/深度学习 算法 Go
朋友们,这篇JCR一区6分非肿瘤诊断模型的工作量,看完自我怀疑了
本文分享了一篇发表在《Computational and Structural Biotechnology Journal》上的研究,通过机器学习方法识别了败血症的潜在诊断和预后生物标志物。研究者分析了脓毒症和对照组的转录组数据,鉴定了11个差异表达基因,并通过LASSO和SVM-RFE算法选出了4个关键基因(YOD1、GADD45A、BCL11B和IL1R2)。这些基因显示出优秀的诊断和预后能力,且与免疫相关过程显著关联。此外,通过小鼠模型验证了这些基因的表达变化,为败血症的机制理解提供了新见解。
354 0
|
关系型数据库 MySQL 数据库
MySQL事务与并发控制:确保数据一致性与高效性能
本文深入探讨了MySQL数据库中的事务与并发控制,重点介绍了事务的概念与特性、ACID属性与事务隔离级别,以及事务的管理(BEGIN、COMMIT、ROLLBACK)和锁机制。事务作为数据库操作的基本单位,确保了数据的一致性和完整性,同时MySQL提供了多个事务隔离级别以平衡并发性与数据一致性。通过实际的代码示例,您可以了解如何在MySQL中开始、提交和回滚事务,以及如何使用锁机制来解决并发问题。深入理解这些概念和技术,读者将能够在数据库管理中保证数据的正确性和高效性能,为应用程序提供稳定可靠的数据基础。
1260 0
|
运维 Devops 开发工具
bug怎样算修完,浅谈团队分布式bug管理 git-poison简单易用的bug管理工具
介绍基于go-git开发实现通用化的git-poison,通过分布式源码管理bug追溯、查询。
46751 16

热门文章

最新文章