beep.c文件下代码:
#include "beep.h"
//初始化PF8为输出口
//BEEP IO 初始化
void BEEP_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//使能 GPIOF时钟
//初始化蜂鸣器对应引脚 GPIOF8
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;//下拉
GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化 GPIO
GPIO_ResetBits(GPIOF,GPIO_Pin_8); //蜂鸣器对应引脚GPIOF8 拉低,
}
这段代码 仅包含1个函数: void BEEP_Init(void),该函数的作用就是使能PORTF的时钟,然后调用GPIO_Init函数, 配置PF8为推挽输出。 IO口的初始化跟上一讲跑马灯实验非常类似,这里我们就不做过多讲解。
保存 beep.c代码,然后我们按同样的方法,新建一个beep.h 文件,也保存在BEEP 文件夹下面。在 beep.h中输入如下代码:
#ifndef __BEEP_H
#define __BEEP_H
#include "sys.h"
//LED 端口定义
#define BEEP PFout(8) // 蜂鸣器控制 IO
void BEEP_Init(void);//初始化
#endif
和上一章一样,我们这里还是通过位带操作来实现某个 IO 口的输出控制,BEEP 就直接代表了PF8 的输出状态。我们只需要令BEEP=1,就可以让蜂鸣器发声。
回到主界面,在main.c里面编写如下代码:
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "beep.h"
int main(void)
{
delay_init(168); //初始化延时函数
LED_Init(); //初始化 LED 端口
BEEP_Init(); //初始化蜂鸣器端口
while(1)
{
GPIO_ResetBits(GPIOF,GPIO_Pin_9); // DS0拉低,亮 等同 LED0=0;
GPIO_ResetBits(GPIOF,GPIO_Pin_8); //BEEP引脚拉低, 等同 BEEP=0;
delay_ms(300); //延时300ms
GPIO_SetBits(GPIOF,GPIO_Pin_9); // DS0拉高,灭 等同LED0=1;
GPIO_SetBits(GPIOF,GPIO_Pin_8); //BEEP引脚拉高, 等同BEEP=1;
delay_ms(300); //延时 300ms
}
}
注意要将 BEEP 文件夹加入头文件包含路径,不能少,否则编译的时候会报错。这段代码就是通过库函数GPIO_ResetBits和 GPIO_SetBits两个函数实现前面7.1节所阐述的功能,同时加入了 DS0(LED0)的闪烁来提示程序运行(后面的代码,我们基本都会加入这个) ,整个代码比较简单。
上一篇:STM32f4---串口通信实验代码(01)
下一篇:STM32f4---跑马灯实验代码
推荐阅读最新更新时间:2024-03-16 16:14
设计资源 培训 开发板 精华推荐
- TI 中国大学计划20周年官网“幸运雨”了,你还不来抢?
- 有奖问答|ADI技术直通车——电化学传感测量与气体检测
- 【免费申请】英飞凌PSoC 62S4 先锋套件 (CY8CKIT-062S4)
- NI白皮书下载《如何克服复杂待测设备的生产测试挑战》
- ADI有奖下载活动之4 压力变送器解决方案
- 有奖评测:100套东芝最小光继电器TLP3547的评估板免费申请中!
- 学习赢京东卡 | 从12V电池及供电网络优化的角度分析电动汽车E/E架构的趋势
- 发帖赢好礼 | MPS 工程师为您解决DC-DC设计难题
- 福禄克首款热成像万用表Fluke-279FC等你来尝鲜!晒心得享好礼喽!
- 悦读 TI 工业应用精选方案,闯关赢好礼喽!