1.实验目的
驱动蜂鸣器以 500ms 间隔鸣响。
2.硬件清单
- STM32
- ST-Link
- 蜂鸣器
3.硬件连接
4.代码
4.1beep.c
#include "beep.h"
#include "sys.h"
//初始化GPIO函数
void beep_init(void)
{
GPIO_InitTypeDef gpio_initstruct;
//打开时钟
__HAL_RCC_GPIOA_CLK_ENABLE();
//调用GPIO初始化函数
gpio_initstruct.Pin = GPIO_PIN_8;
gpio_initstruct.Mode = GPIO_MODE_OUTPUT_PP;
gpio_initstruct.Pull = GPIO_PULLUP;
gpio_initstruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOA,&gpio_initstruct);
//关闭蜂鸣器
beep_off();
}
//打开蜂鸣器的函数
void beep_on(void)
{
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,GPIO_PIN_RESET);
}
//关闭蜂鸣器的函数
void beep_off(void)
{
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,GPIO_PIN_SET);
}
这个代码和点亮LED的代码几乎一模一样,我将函数的名字都换为了beep,然后是驱动GPIOA的8引脚驱动蜂鸣器。
4.2beep.h
#ifndef __BEEP_H__
#define __BEEP_H__
void beep_init(void);
void beep_on(void);
void beep_off(void);
#endif
这个没什么可说的
4.3main.c
#include "sys.h"
#include "delay.h"
#include "beep.h"
int main(void)
{
HAL_Init(); /* 初始化HAL库 */
stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */
beep_init();
while(1)
{
beep_on();
delay_ms(500);
beep_off();
delay_ms(500);
}
}
这个就是让蜂鸣器间隔0.5秒响一次,也很简单。
完结