fengzhihean

导航

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

一、编写代码

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、点击就可进行仿真。

 

 

posted on 2023-07-21 17:30  风止何安,璃月  阅读(839)  评论(0编辑  收藏  举报