stm32f103c8t6的PA 6引脚和一个无源蜂鸣器相连,单片机通过PA6引脚控制蜂鸣器,PA 6输出高电平蜂鸣器报警,输出低电平蜂鸣器无反应,分开设计一个蜂鸣器报警十秒钟函数和一个不报警的函数,程序中使用的所有函数都额外写明其内容,并写出c文件和h文件
时间: 2023-12-03 08:45:16 浏览: 35
下面是实现的c文件和h文件,其中包含了蜂鸣器报警和停止报警的函数。
```c
/* 文件名:beep.h */
#ifndef __BEEP_H
#define __BEEP_H
#include "stm32f10x.h"
#define BEEP_GPIO_PORT GPIOA
#define BEEP_GPIO_PIN GPIO_Pin_6
void Beep_Init(void);
void Beep_Alert(void);
void Beep_Stop(void);
#endif
```
```c
/* 文件名:beep.c */
#include "beep.h"
/**
* @brief 初始化蜂鸣器引脚
*/
void Beep_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStruct.GPIO_Pin = BEEP_GPIO_PIN;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(BEEP_GPIO_PORT, &GPIO_InitStruct);
}
/**
* @brief 蜂鸣器报警
*/
void Beep_Alert(void)
{
u8 i = 0;
while (i < 10) {
GPIO_SetBits(BEEP_GPIO_PORT, BEEP_GPIO_PIN);
Delay_ms(500);
GPIO_ResetBits(BEEP_GPIO_PORT, BEEP_GPIO_PIN);
Delay_ms(500);
i++;
}
}
/**
* @brief 停止蜂鸣器报警
*/
void Beep_Stop(void)
{
GPIO_ResetBits(BEEP_GPIO_PORT, BEEP_GPIO_PIN);
}
```
在使用该代码时,需要在主函数里面先调用`Beep_Init()`函数进行初始化,然后即可通过调用`Beep_Alert()`和`Beep_Stop()`函数分别进行蜂鸣器报警和停止报警的操作。