一、实验目的
实现按键按下去的时候蜂鸣器响,并且有流水灯效果,当按下另一个按键的时候,关闭蜂鸣器和流水灯。
二、实验原理
图 5.2.1 蜂鸣器原理图
蜂鸣器与 STM32F4 连接原理图图中我们用到一个 NPN 三极管(S8050)来驱动蜂鸣器,R61 主要用于防止蜂鸣器的误发声。当 PB5 输出高电平的时候,蜂鸣器将发声,当 PB5 输出低电平的时候,蜂鸣器停止发声。
主要仪器设备
GEC-STM32F429开发板和keil 5软件
三、实验内容及步骤
- 首先用keil软件打开实验项目,确保可编译之后。
- 开发板使用usb连接线连接上电脑
- 然后使用点击load加载到开发板上。
- 修改代码
- 以下是main函数代码
#include "stm32f4xx.h"
#include "./led/bsp_led.h"
#include "./key/bsp_key.h"
#include "./beep/bsp_beep.h"
int i=0;
void delay(int time);
int led1 = 1;
int led2 = 0;
void Delay1(__IO u32 nCount);
/**
* @brief 主函数
* @param 无
* @retval 无
*/
int main(void)
{
/* LED 端口初始化 */
LED_GPIO_Config();
/*初始化按键*/
Key_GPIO_Config();
/*峰名器 初始化*/
BEEP_GPIO_Config();
/* 轮询按键状态,若按键按下则反转LED */
while(1)
{
if( Key_Scan(KEY1_GPIO_PORT,KEY1_PIN) == KEY_ON )
{
while(1){
/*LED1反转*/
LED1_TOGGLE;
delay(1000000);
LED2_TOGGLE;
delay(1000000);
LED3_TOGGLE;
delay(1000000);
BEEP_ON;
if( Key_Scan(KEY2_GPIO_PORT,KEY2_PIN) == KEY_ON )
{
/*LED2反转*/
LED1(ON);
delay(1000000);
LED2(ON);
delay(1000000);
LED3(ON);
delay(1000000);
BEEP_OFF;
break;
}
}
}
}
}
void delay(int time){
for(;i<time;i ){
}
i= 0;
}
void Delay1(__IO uint32_t nCount) //延时函数
{
for(; nCount != 0; nCount--);
}
我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!