STM32_驱动蜂鸣器自定义库

STM32_驱动蜂鸣器自定义库

功能说明:
1、可以实现设置蜂鸣器的音调
2、可以设置蜂鸣器连续鸣响次数
3、设置连续鸣响时间间隔

main.c

#include "mymain.h"
#include "dev_control.h"int main(void)
{HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_TIM2_Init();devInit();devBuzzerSetNum(3);		//设置鸣响次数3devBuzzerSetLevel(unsigned char level);	//设置音调等级while (1){devTask();HAL_Delay(1);}
}

buzzer.c

#include "dev_control.h"#define DEV_TASK_PERIOD 1 //调用devTask的周期
devBuzzer_t devBuzzer = {0};void devInit(void)
{/*************************蜂鸣器************************/devBuzzer.devBuzzerEnable = STATE_ENABLE;devBuzzer.devBuzzerPeriod = 200;				//周期200msdevBuzzer.devBuzzerDuty = 100;				//鸣响100ms
}void devTask(void)
{if(devBuzzer.devBuzzerEnable == STATE_ENABLE){if(devBuzzer.devBuzzerNumber > 0){devBuzzer.devBuzzerCount += DEV_TASK_PERIOD;if(devBuzzer.devBuzzerCount <= devBuzzer.devBuzzerDuty){HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_3);}else {HAL_TIM_PWM_Stop(&htim2,TIM_CHANNEL_3);}if(devBuzzer.devBuzzerCount == devBuzzer.devBuzzerPeriod){devBuzzer.devBuzzerCount = 0;devBuzzer.devBuzzerNumber--;}}}
}void devBuzzerSetLevel(unsigned char level)
{switch(level){case BUZZER_LEVEL_0:devBuzzer.devBuzzerLevel = level;__HAL_TIM_SET_PRESCALER(&htim2, 144-1);//设置时钟频率0.5Khzbreak;case BUZZER_LEVEL_1:devBuzzer.devBuzzerLevel = level;__HAL_TIM_SET_PRESCALER(&htim2, 72-1);//1Khzbreak;case BUZZER_LEVEL_2:devBuzzer.devBuzzerLevel = level;__HAL_TIM_SET_PRESCALER(&htim2, 36-1);//2Khzbreak;default:break;}
}

buzzer.h

#ifndef __DEV_CONTROL_H
#define __DEV_CONTROL_H
#include "main.h"
#include "gpio.h"enum{STATE_DISABLE,STATE_ENABLE
};enum{BUZZER_LEVEL_0,BUZZER_LEVEL_1,BUZZER_LEVEL_2
};//蜂鸣器控制结构体
typedef struct
{unsigned char devBuzzerEnable;		//使能unsigned char devBuzzerLevel;		//音调水平unsigned char devBuzzerNumber;		//连续鸣响次数unsigned int devBuzzerDuty;			//单次鸣响时长unsigned int devBuzzerPeriod;		//单次鸣响控制周期unsigned int devBuzzerCount;		//计数用于控制
} devBuzzer_t;void devBuzzerSetNum(unsigned char num);		//设置鸣响次数
void devBuzzerSetLevel(unsigned char level);	//设置音调等级#endif

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

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

相关文章

Linux高性能服务器编程 学习笔记 第十三章 多进程编程

我们将讨论Linux多进程编程的以下内容&#xff1a; 1.复制进程映像的fork系统调用和替换进程映像的exec系列系统调用。 2.僵尸进程以及如何避免僵尸进程。 3.进程间通信&#xff08;Inter Process Communication&#xff0c;IPC&#xff09;最简单的方式&#xff1a;管道。 …

SSM - Springboot - MyBatis-Plus 全栈体系(二十六)

第六章 SpringBoot 快速启动框架&#xff1a;SpringBoot3 实战 一、SpringBoot3 介绍 1. SpringBoot3 简介 SpringBoot 版本&#xff1a;3.0.5 到目前为止已经学习了多种配置 Spring 程序的方式。但是无论使用 XML、注解、Java 配置类还是他们的混合用法&#xff0c;都会觉…

String、StringBuilder、StringBuffer区别

String、StringBuilder、StringBuffer区别 面试官&#xff1a;请你谈谈String、StringBuilder、StringBuffer区别 作为经典Java八股&#xff0c;是面试必考的热门点。 下面让我们一起来看一下他们的区别吧&#xff01; 主要是测试他们的效率和应用场景&#xff0c;具体语法不在…

浅谈机器学习中的概率模型

浅谈机器学习中的概率模型 其实&#xff0c;当牵扯到概率的时候&#xff0c;一切问题都会变的及其复杂&#xff0c;比如我们监督学习任务中&#xff0c;对于一个分类任务&#xff0c;我们经常是在解决这样一个问题&#xff0c;比如对于一个n维的样本 X [ x 1 , x 2 , . . . .…

Git问题汇总

1.取消全局代理 一般报错Failed to connect to github.com port 443 after 21089 ms: Couldn’t connect to server 取消全局代理&#xff1a; git config --global --unset http.proxygit config --global --unset https.proxy####2.git 推送出现 "fatal: The remote e…

Google云平台构建数据ETL任务的最佳实践

在数据处理中&#xff0c;我们经常需要构建ETL的任务&#xff0c;对数据进行加载&#xff0c;转换处理后再写入到数据存储中。Google的云平台提供了多种方案来构建ETL任务&#xff0c;我也研究了一下这些方案&#xff0c;比较方案之间的优缺点&#xff0c;从而找到一个最适合我…

MongoDB的作用和安装方法

MongoDB是一种非关系型数据库&#xff0c;其作用是存储和管理非结构化数据&#xff0c;例如文档、图像和视频等多媒体数据。它有以下几个特点&#xff1a; 数据存储的格式是类似JSON的文档格式&#xff0c;易于理解、存储和查询。可扩展性强&#xff0c;可以在多个服务器上分布…

[资源推荐] 复旦大学张奇老师科研分享

刷B站的时候首页给我推了这个&#xff1a;【直播回放】复旦大学张奇教授亲授&#xff1a;人工智能领域顶会论文的发表指南先前也散漫地读了些许论文&#xff0c;但没有在一些宏观的方法论下去训练&#xff0c;读的时候能感觉出一些科研的套路&#xff0c;论文写作的套路&#x…

C++算法:图中的最短环

题目 现有一个含 n 个顶点的 双向 图&#xff0c;每个顶点按从 0 到 n - 1 标记。图中的边由二维整数数组 edges 表示&#xff0c;其中 edges[i] [ui, vi] 表示顶点 ui 和 vi 之间存在一条边。每对顶点最多通过一条边连接&#xff0c;并且不存在与自身相连的顶点。 返回图中 …

Kafka保证消息幂等以及解决方案

1、幂等的基本概念 幂等简单点讲&#xff0c;就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的&#xff0c;不会产生任何副作用。幂等分很多种&#xff0c;比如接口的幂等、消息的幂等&#xff0c;它是分布式系统设计时必须要考虑的一个方面。 查询操作(天然幂等…

【VR开发】【Unity】0-课程简介和概述

【说明】 这是我录制的一套VR基础开发课程的文字版本&#xff0c;更加便于快速参考。 应大家在后台所提的需求&#xff0c;从今天开始&#xff0c;我计划带给大家一套完整达40课时的VR开发基础课程。 在开始学习前需要注意如下几点&#xff1a; 本教程基于Unity2022.2.1f1版…

SqlServer安装教程

百度网盘地址: 链接&#xff1a;https://pan.baidu.com/s/1ntqoK9uVc6fBVTm7twh8kw 提取码&#xff1a;grdt 安装: 双击:SQLEXPRADV_x64_CHS.exe ,等待;点击计划,系统配置检查器,根据要求修改(我被要求重启了)点击安装,全新SQL Server独立安装或向现有安装添加功能,接受功能选…

2023年09月 C/C++(七级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C编程&#xff08;1~8级&#xff09;全部真题・点这里 Python编程&#xff08;1~6级&#xff09;全部真题・点这里 第1题&#xff1a;红与黑 有一间长方形的房子&#xff0c;地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上&#xff0c;只能向相邻的黑色…

线性筛的简单证明

原理 线性筛是一种可以在线性时间内将素数筛选出来的算法&#xff0c;其中的主要思想在于保证合数只会被它的最小质因数筛掉并且筛掉一次。 代码 下面是线性筛的算法CPP实现&#xff1a; vector<int> generate_primes_linear_time(int n) {vector<int> lp(n 1…

kafka详解(三)

2.2 Kafka命令行操作 2.2.1 主题命令行操作 1&#xff09;查看操作主题命令参数 [aahadoop102 kafka]$ bin/kafka-topics.sh2&#xff09;查看当前服务器中的所有topic (配置了环境变量不需要写bin/) [aahadoop102 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop10…

SpringBoot-黑马程序员-学习笔记(五)

74.自定义bean属性绑定以及第三方bean属性绑定 自定义bean属性绑定 1.自定义一个bean Data Component public class ServerConfig {private String ipAddress;private int port;private long timeout; } 2.在yml配置文件中中定义一组值 3.在bean中进行属性绑定 加上这个注…

mysql中的几种排名函数

mysql中的排名函数 mysql里面的排名函数&#xff0c;涉及有以下几个&#xff1a; rank()、dense_rank()、row_number() 1、rank() 函数 RANK() OVER (PARTITION BY <expression>[{,<expression>...}]ORDER BY <expression> [ASC|DESC], [{,<expression…

【Nginx32】Nginx学习:随机索引、真实IP处理与来源处理模块

Nginx学习&#xff1a;随机索引、真实IP处理与来源处理模块 完成了代理这个大模块的学习&#xff0c;我们继续其它 Nginx 中 HTTP 相关的模块学习。今天的内容都比较简单&#xff0c;不过最后的来源处理非常有用&#xff0c;可以帮我们解决外链问题。另外两个其实大家了解一下就…

C#开发的OpenRA游戏之金钱系统(1)

C#开发的OpenRA游戏之金钱系统(1) 设计一个游戏,肯定要有一个唯一的资源,用这个资源来管理整个游戏的进度,以及相互争夺的焦点。在OpenRA里,就是使用矿产资源。所以在地图上分布几个矿场,玩家就需要相互争夺矿场,谁开采多谁就更有钱,谁有钱了就可以升级更好的科技,以…

Linux Kernel 4.13 RC6发布:正式版9月3日发布

美国当地时间上周末&#xff0c;大神Linus Torvalds发布了Linux Kernel 4.13内核的又一候选版本。上周发布的RC5版本更新幅度也要比上上周的RC4要小&#xff0c;Linus Torvalds表示本周发布的RC6版本属于常规更新&#xff0c;在过去一周的开发过程中并没有出现任何意外。RC6版本…