首页 > 其他分享 >led灯+蜂鸣器操作(用proteus)

led灯+蜂鸣器操作(用proteus)

时间:2023-07-21 17:33:10浏览次数:25  
标签:HAL led PIN 点击 proteus InitStructure GPIO 蜂鸣器

一、编写代码

1、用stm32cubemx生成

选择芯片类型------>设置GPIO的功能图1.1,1.2(我的是输出)------>在project Manage 进行工程设置-----> 生成代码 GENERATE CODE

 图1.1

 图1.2,这里可以设置引脚(GPIO output level是设置引脚的高低电平;GPIO mode 设置模式,这里是推挽输出;GPIO Pull-up/Pull-down 上拉/下拉;输出速度)

2、用keil5进行具体编写。

右击文件夹,新建文件夹HAREWARE

 点击File,新建四个文件led.c, led.h, beep.c, beep.h 保存到文件夹HAREWARE中。

 led.c

这是用的HAL库的函数,可能和网上别人写的不一样,因为库不同。

#include "led.h"
#include "stm32f1xx.h"

void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure = {0};

/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOB_CLK_ENABLE();
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_6,GPIO_PIN_RESET);

/*Configure GPIO pins : PB5 PB6 */
GPIO_InitStructure.Pin = GPIO_PIN_5|GPIO_PIN_6;
GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStructure.Pull = GPIO_NOPULL;
GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_InitStructure);
}

 

beep.c

#include "beep.h"
#include "stm32f1xx.h"

void BEEP_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure = {0};

/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOB_CLK_ENABLE();
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_7,GPIO_PIN_RESET);


/*Configure GPIO pins : PB7 */
GPIO_InitStructure.Pin = GPIO_PIN_7;
GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStructure.Pull = GPIO_NOPULL;
GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_InitStructure);
}

 编写完后,把led.c和beep.c加到HAREWARE中去,右击HAREWARE,选择manager project items......

 

 新建HAREWARE

 点击Add Files, 找到HAREWARE目录下的led.c和beep.c选中,点击Add,然后点击Close,点击OK

 然后点击小魔法棒,到C/C++,点击Include Paths

 新建,选择到led.h和beep.h的上一级目录,点击选择文件夹,就可以了

 对main.c进行编写

添加

#include "led.h"
#include "beep.h"

 就完成了。

二、新建一个对应的proteus工程

以下是用到的部件。

 蜂鸣器选这个

 硬件连接图如下图所示

 对buzzer进行如下设置

 电阻一定要改大点儿,不然对电流要求太大,会导致蜂鸣器不响(可以试试小电阻,他会莫名的把b端拉低)

只要B端比E端大0.7V以上,C、E就可以导通。

 三、烧录程序,开始仿真

1、烧录程序就是:右击芯片---->编辑元件---->Program File(是.hex的路径)点击确定。

 点击小魔法棒----->OUTPUT---->Select Folder for Objects可查看.hex的文件路径。

如果没有.hex的文件,在小魔法棒----->OUTPUT里勾选上Greate HEX File,编译后就生成了。

 2、点击就可进行仿真。

 

 

标签:HAL,led,PIN,点击,proteus,InitStructure,GPIO,蜂鸣器
From: https://www.cnblogs.com/fengzhihean/p/17572047.html

相关文章

  • 'filename.h' file not found with <angled> include, use "quotes" instead. 问
    http://stackoverflow.com/questions/17465902/use-of-external-c-headers-in-objective-c下面有个解释的设置步骤不过不正确好像还是最佳回答吧,正确的设置为 InmyiOSprojectIneedtouseanexternallibrarywritteninC++.TheC++headerfilesareallinoned......
  • LED,OLED和量子点显示未来的发展趋势
    LED、OLED和量子点显示是三种不同的显示技术,它们各有优缺点,未来的发展趋势也各有不同。LED显示LED显示是一种基于发光二极管(LED)的显示技术。LED显示具有高亮度、长寿命、快速响应等优点,同时它的成本相对较低,因此在商业和消费领域得到广泛应用。未来,LED显示的发展趋势将主要体......
  • STM32F103 点亮LED闪烁与仿真
    今天给大家分享一下STM32流水灯简单的仿真吧,我感觉这个提供有用的,但是自己也是第一次使用,主要是感觉曲线很高级。在PWM中查看脉宽很有用。code:led.c#include"led.h"#include"delay.h"/*GPIO的控制寄存器的配置1、配置输出引脚2、打开对应的输出的寄存器的时钟3、配置引脚......
  • Scrapy 部署错误:subprocess.CalledProcessError 以及解决方案
    最近在使用Scrapy和Scrapyd时,我遇到了一个关于subprocess.CalledProcessError的问题。在这篇博文中,我将描述这个错误、找出的原因以及最后的解决方案。错误描述在使用scrapyd-deploy命令部署我的Scrapy项目时,我遇到了如下的错误:subprocess.CalledProcessError:Comma......
  • AP5165B LED降压恒流驱动器 车灯 替代PT4115 支持PWM调光 线性调光
    产品应用原理图5-36V耐压3W射灯应用线路图产品描述AP5165B是一款外围电路简单的连续电流模式的降压型LED恒流驱动芯片。在输入电压高于LED电压时,可以有效地用于驱动一颗或者多颗串联LED。输出电流可调,最大可达1A。适用于3-36V电压范围的非隔离式恒流LED驱动领域。AP5165B......
  • 【雕爷学编程】Arduino动手做(49)---有源和无源蜂鸣器模块5
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题......
  • Interleaving Retrieval with Chain-of-Thought Reasoning for Knowledge-Intensive M
    目录概IRCoT代码TrivediH.,BalasubramanianN.,KhotT.,SabharwalA.Interleavingretrievalwithchain-of-thoughtreasoningforknowledge-intensivemulti-stepquestions.ACL,2023.概CoT(ChainofThought)+检索.IRCoT对于如上的问题,"Inwhatcountry......
  • 写驱动实现LED闪烁及基础概念查看
    2023/7/20初学内核,记录与分享,感叹内核学了后真的感觉很多东西都通透了,但是难度太大,只能浅浅初探。前提内核五大功能➢进程管理:进程的创建,销毁,调度等功能注:可中断,不可中断,就是是否被信号打断。从运行状态怎样改到可中断等待态,和不可中断等待态操作系统开始会对每个进程分配......
  • You don't have either docker-client or docker-client-latest installed. Pleas
    如何安装docker-client或docker-client-latest概述在本文中,我将向您展示如何安装docker-client或docker-client-latest,并解释每一步所需的代码及其用途。无论您是一名刚入行的开发者还是有经验的开发者,这篇文章都将帮助您完成安装过程。准备工作在开始之前,请确保您已经正......
  • Unable to find bundled Java version. macos
    UnabletofindbundledJavaversion.MacOS当在MacOS上运行一个需要Java环境的程序时,有时会遇到"UnabletofindbundledJavaversion"的错误提示。这意味着系统无法找到预装的Java版本。为什么会出现这个错误?在MacOS中,Java并不是预装的。因此,当我们在运行需要Ja......