当前位置: 首页 > news >正文

战舰开发板V4——蜂鸣器

战舰开发板V4——蜂鸣器

image-20260729213159699

image-20260729213238156

image-20260729213254277

LED驱动代码:

#include "Led.h"  /* 蜂鸣器高电平触发 *//*** @brief   初始化LED相关IO口,并使能时钟* @param   无* @retval  无*/
void Led_Init(void)
{GPIO_InitTypeDef GPIO_Init_Struct;LED0_GPIO_CLK_ENABLE();                             /* LED0 时钟使能 */LED1_GPIO_CLK_ENABLE();                             /* LED1 时钟使能 */GPIO_Init_Struct.Pin = LED0_GPIO_PIN;               /* LED0 引脚 */GPIO_Init_Struct.Mode = GPIO_MODE_OUTPUT_PP;        /* 推挽输出 */GPIO_Init_Struct.Pull = GPIO_PULLUP;                /* 上拉 */GPIO_Init_Struct.Speed = GPIO_SPEED_FREQ_HIGH;      /* 高速 */HAL_GPIO_Init(LED0_GPIO_PORT, &GPIO_Init_Struct);   /* LED0引脚 初始化 */GPIO_Init_Struct.Pin = LED1_GPIO_PIN;               /* LED1 引脚 */HAL_GPIO_Init(LED1_GPIO_PORT, &GPIO_Init_Struct);   /* LED1引脚 初始化 */LED0(1);                                            /* 关闭 LED0 */LED1(1);                                            /* 关闭 LED1 */	
}
#ifndef __LED_H
#define __LED_H#include "main.h"/* 定义 引脚 */#define LED0_GPIO_PORT                  GPIOB
#define LED0_GPIO_PIN                   GPIO_PIN_5
#define LED0_GPIO_CLK_ENABLE()          do{ __HAL_RCC_GPIOB_CLK_ENABLE(); }while(0)   /* PB口时钟使能 */#define LED1_GPIO_PORT                  GPIOE
#define LED1_GPIO_PIN                   GPIO_PIN_5
#define LED1_GPIO_CLK_ENABLE()          do{ __HAL_RCC_GPIOE_CLK_ENABLE(); }while(0)   /* PE口时钟使能 *//* LED端口定义 */#define LED0(x)        do{x ?\HAL_GPIO_WritePin(LED0_GPIO_PORT, LED0_GPIO_PIN, GPIO_PIN_SET):\HAL_GPIO_WritePin(LED0_GPIO_PORT, LED0_GPIO_PIN, GPIO_PIN_RESET);\}while(0);   /* LED0 翻转 */#define LED1(x)        do{x ?\HAL_GPIO_WritePin(LED1_GPIO_PORT, LED1_GPIO_PIN, GPIO_PIN_SET):\HAL_GPIO_WritePin(LED1_GPIO_PORT, LED1_GPIO_PIN, GPIO_PIN_RESET);\}while(0);   /* LED1 翻转 */
/* LED取反定义 */
#define LED0_TOGGLE()  do{ HAL_GPIO_TogglePin(LED0_GPIO_PORT, LED0_GPIO_PIN)); }while(0);   /* 翻转LED0 */
#define LED1_TOGGLE()  do{ HAL_GPIO_TogglePin(LED1_GPIO_PORT, LED1_GPIO_PIN)); }while(0);   /* 翻转LED1 *//* 外部函数接口 */
void Led_Init(void);      /* 初始化 */#endif

蜂鸣器驱动代码:

#include "Beep.h"/*** @brief  初始化 BEEP 相关 IO 口,并使能时钟* @param  无* @retval 无*/// 蜂鸣器初始化函数 BEEP_Init()void Beep_Init(void)
{GPIO_InitTypeDef GPIO_Init_Struct;                /* 定义 GPIO 结构体名 */BEEP_GPIO_CLK_ENABLE();							  /* BEEP 时钟使能 */GPIO_Init_Struct.Pin = BEEP_GPIO_PIN;             /* 蜂鸣器引脚 */GPIO_Init_Struct.Mode = GPIO_MODE_OUTPUT_PP;      /* 推完输出 */GPIO_Init_Struct.Pull = GPIO_NOPULL;              /* 悬空 */GPIO_Init_Struct.Speed = GPIO_SPEED_FREQ_HIGH ;   /* 高速 */HAL_GPIO_Init(BEEP_GPIO_PORT, &GPIO_Init_Struct); /* 初始化蜂鸣器引脚 */BEEP(0);                                          /* 关闭蜂鸣器 */
}
#ifndef __BEEP_H
#define __BEEP_H#include "main.h"/* 引脚定义 */
#define BEEP_GPIO_PORT            GPIOB
#define BEEP_GPIO_PIN             GPIO_PIN_8/* PB 口时钟使能 */
#define BEEP_GPIO_CLK_ENABLE()    do{ __HAL_RCC_GPIOB_CLK_ENABLE(); }while(0)  // do { ... } while(0) 是 C 语言宏定义标准写法,专门解决宏在分支语句下的语法 BUG
// __HAL_RCC_GPIOB_CLK_ENABLE();    __内部私有接口、底层定义,不建议用户直接修改/* 蜂鸣器控制 */
#define BEEP(x)           do{ x ? \HAL_GPIO_WritePin(BEEP_GPIO_PORT, BEEP_GPIO_PIN, GPIO_PIN_SET) : \HAL_GPIO_WritePin(BEEP_GPIO_PORT, BEEP_GPIO_PIN, GPIO_PIN_RESET); \}while(0)     /* BEEP状态翻转 */
#define BEEP_TOGGLE()     do{ HAL_GPIO_TogglePin(BEEP_GPIO_PORT, BEEP_GPIO_PIN);\}while(0)/* 外部接口函数 */												
void Beep_Init(void);   #endif

主函数代码:

/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h"     // 主头文件
#include "gpio.h"     // 引入 GPIO初始化文件
#include "Beep.h"     // 引入 BEEP头文件
#include "Led.h"      // 引入 LED头文件
/* Initialize all configured peripherals */
MX_GPIO_Init();  // 初始化GPIO(CubeMX生成)
/* USER CODE BEGIN 2 */// 用户代码区 2Beep_Init();     // 蜂鸣器 初始化Led_Init();      // LED 初始化
while (1)   //无限主循环,程序主体在这里循环执行
{/* USER CODE END WHILE *//* USER CODE BEGIN 3 *///循环内部,所有业务逻辑写这里BEEP(0);LED0(0);HAL_Delay(500);BEEP(1);LED0(1);HAL_Delay(500);

image-20260729214042038

http://www.jsqmd.com/news/1289693/

相关文章:

  • 阿里云国际站(云老大):Linux高并发TCP连接耗尽调优
  • 夏威夷果的营养益处
  • 物业运维太累?社区公共照明搭载无线动能开关,后期零维护成本
  • C++ 原子操作完全指南 + 单例模式实战
  • 上海浦东公司附近汽修保养怎么选?3类门店实测对比+FAQ - qiqi1113
  • 跨境网站线上客服海外隐私合规设置规范
  • 2026年南京GEO服务商五强榜单:谁在真正帮品牌抢占AI搜索答案位? - 天涯视角
  • 从零实现一个可观测的 Python 异步任务重试器:超时、退避、日志与指标
  • 2026年广州糖水加盟怎么选?黄氏同信帮你避坑 - 天涯视角
  • Ninjabrain-Bot界面详解:自定义主题与设置优化指南
  • Antho-RPamide I ;LPPGPLPRP-NH₂
  • Blind Index常见问题解答:开发者必知的10个要点
  • 单片机毕业设计-基于 STM32F103 的加湿设备智能控制系统设计 基于 DHT11 的环境监测与继电器控制装置设计(011601)
  • Inspectus入门教程:3步上手LLM注意力矩阵分析
  • 2026江苏公考机构实力横评:粉笔综合96.8分断层领跑,华图中公紧随其后 - 天涯视角
  • RK3506 软件解码播放视频
  • 2026年真空除氧器行业实力厂家与供应商综合解析 - 优企名品
  • Web安全实战:从信息搜集到权限提升的完整渗透测试路径解析
  • 2026实力之选:长沙市智行地坪工程有限公司——球场地坪施工领域的专业化服务力量 - 优企名品
  • LeCun强推了一个3b小模型,你的cpu都能跑
  • 日记第19天——思考
  • 企业AI落地服务杭州懂自己BOSS增长营设备预测维护AI方案:从数据采集到故障预警的系统架构与实战路径
  • 2026 年现阶段二道有实力的球场围网定制选哪家,你家球场的隐形屏障,居然藏着这么多省钱的小门道?-博才金属网业 - 企业推荐官【认证】
  • 上海黄浦区公寓装修哪家强?这家设计团队超牛的公司了解下
  • 舆情预警失效真相(千万级舆情漏报事件深度复盘)
  • Ubiquity视图引擎全解析:Twig、Micro与自定义模板技巧
  • 全硅皮沙发公司 - 米諾
  • 做海报还在等设计排期?2026年七夕海报用什么AI工具可以做?6款工具横评 - 子柔传媒
  • 在 Seq2Seq 模型中,编码器和解码器各负责什么功能?
  • 使用Frida-trace逆向分析iOS应用Apple服务认证签名机制