STM32F103RB 实作笔记(二)- Beep/Buzzer蜂鸣器

发布者:MindfulCreator最新更新时间:2022-07-21 来源: csdn关键字:STM32F103RB  Beep  蜂鸣器 手机看文章 扫描二维码
随时随地手机看文章

延续上一篇 ”STM32F103RB 实作笔记(一)- 跑马灯(正点原子 STM32F103 nano开发板)程式解析“,我们今天进行第二个程式解析。


和上一篇一样,进入找到 USER 的档案夹,直接点开 BEEP 项目档,并且进行编译和执行。

在这里插入图片描述

硬件配置

先看一下 线路图,可以知道


选择 PB8 来控制这个蜂鸣器。

BEEP 要用低电平 来驱动。

从原厂附上的资源配置图片,表明左下角的 BEEP 是”有源“型式的。

有源型式的 BEEP 在百度查得的说明如下图,就是”给他电力就会直接叫“。

在这里插入图片描述

主程式 Main.c

主程式 Main.c 的内容如下:


#include "sys.h"

#include "delay.h"

#include "led.h" 

#include "beep.h" 


/************************************************

************************************************/


int main(void)

{

Stm32_Clock_Init(9); // 

delay_init(72);       //

LED_Init();       //

BEEP_Init();            // 

while(1)

{

LED0=0;

BEEP=0;   

delay_ms(300);// 

LED0=1;   

BEEP=1;  

delay_ms(300);// 

}

 }


程式很单纯,就是 LED0、BEEP 开 300ms, 然后 关 300ms。比较需要的是了解 LED_Init()、BEEP_Init() 这两个副程式;


先看看 LED_Init(),是在 LED.c 里面

#include "led.h"


//   

//    

void LED_Init(void)

{

RCC->APB2ENR|=1<<4;    // 

GPIOC->CRL&=0X00000000; //清除PC0~7设定

GPIOC->CRL|=0X33333333;//设定 PC0~7  的 CNFy=00,MODEy=11·

   GPIOC->ODR|=(1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7);//PC.0~7  

}


上一篇文章没有对 LED_Init() 做解析,这一次就追以下是怎么写的。

第一个是 APB2ENR,把第四 bit 设成 ”1“,就是把 GPIOC 打开。

再过来是把GPIO 的 CRL/CHL 做个设定。

在这里插入图片描述

GPIO是用 16 bits脚位 做资料的输出入,CRL/CHL 是控制这些脚位的设定,每个脚位用 4 个 bit 就要 16 * 2 * 2个 bit 来控制,CRL 是低 8 个脚位的控制, CRH 是高 8 个脚位的控制。

CRL/CHL 的设定又分 两种 CNFy[1:0] 和MODEy[1:0]

在这里插入图片描述
在这里插入图片描述

从程式里面可以看到 GPIOC的输出被设定为:


MODE=11:输出模式,最大速度50MHz 

CNF=00:通用推挽输出模式-- ”在输出模式(MODE[1:0]>00)“


然后输出在高电平’1‘。


再看看 BEEP_Init(),是在 BEEP.c 里面

#include "beep.h"

//   

//   

void BEEP_Init(void)

{

  RCC->APB2ENR|=1<<3;    // 选择 GPIOB   

  GPIOB->CRH&=0XFFFFFFF0; //清除 bit 0~3.其他 bit 不变

  GPIOB->CRH|=0X00000003;//PB8 设定成 ’0011‘ 

  GPIOB->ODR|=1<<8;//PB8 再设定在高电平输出

}


前面解释完 LED.c 后 再看 BEEP.c 就简单多了。

OK ! 这个程式说明完了!

关键字:STM32F103RB  Beep  蜂鸣器 引用地址:STM32F103RB 实作笔记(二)- Beep/Buzzer蜂鸣器

上一篇:STM32F103RB 实作笔记(四)- LED 7 节显示
下一篇:STM32F103RB 实作笔记(一)- GPIOC LED 跑马灯

推荐阅读最新更新时间:2024-11-12 20:06

蜂鸣器报警声C51程序
蜂鸣器报警声C51程序 #define uchar unsigned char //宏定义一下方便使用 #define uint unsigned int #define ulong unsigned long #include //包括一个52标准内核的头文件 sbit BEEP=P0^7; //蜂鸣器输出脚 /******************************************************************** 函 数 名:main() 功 能:主程序 说 明: 入口参数:无 返 回 值:无 修 改: 日 期: *****************************************
[单片机]
51单片机程序——让蜂鸣器响起来吧
#include reg52.h #define uint unsigned int //宏定义 sbit SPK=P3^5; //定义喇叭端口 void delay(uint z) { uint x,y; for(x=z;x 0;x--) for(y=110;y 0;y--); } void main() { while(1) { delay(100); SPK=0; delay(100); SPK=1; } }
[单片机]
STM32Keil下编程实现蜂鸣器长鸣
前言 基于STM32F103C8T6在Keil下编程实现蜂鸣器的长鸣 一、原理图 1.STM32F103C8T6 STM32F103C8T6是ST在2007年发布的一款MCU,截止目前ST已经发布了速度高达400MHz的STM32H7。三点好处,一是封装比较大,方便初学者焊接,二是价格低廉,学习成本比较低,三是网上有大量的资料供初学者学习使用。 2.BELL蜂鸣器 二、Keil代码 1.Beep.c 代码如下: #include stm32f10x.h #include Beep.h void BEEP_Init(void) { GPIO_InitTypeDef GPIO_Structure;/
[单片机]
STM32Keil下编程实现<font color='red'>蜂鸣器</font>长鸣
STM32F103RB 实作笔记(四)- LED 7 节显示
这一篇,我们延续解析 LED 7 节显示 的寄存器设定方法。虽然 Header 档 被 include 了好多个,却没有全部都用到;所以,我们还是从 main() 的主程式寻找那些被用到的 变数与涵式做解析。 我们从下面三个出发: 1. LED_SMG_Init(); // 2. LED_Init(); //LED 3. TIM3_Init(19,7199);// (其中 Stm32_Clock_Init(9); 、 delay_init(72); 和 uart_init(72,115200); 这三个不在这次说明。) 先分析线路图 从 MCU 的配置了解到 GPIOB 3/4/5 输出到 74HC595 的 SCKL
[单片机]
<font color='red'>STM32F103RB</font> 实作笔记(四)- LED 7 节显示
用51单片机驱动蜂鸣器
#include reg51.h //头文件 sbit BEEP=P1^5;//位定义P1的第五个端口为蜂鸣器 void delay() //延时函数 { unsigned char a,b; for(a=0;a 200;a++) for(b=0;b 200;b++); } void main()//主函数 { while(1) { BEEP=~BEEP;//取反符号 delay(); //延时 } } 注:该单片机通过ULN2003驱动蜂鸣器,其管口接于P1口的5端口。
[单片机]
PIC单片机之蜂鸣器和继电器
一、蜂鸣器实验 在很多的单片机系统中除了显示器件外经常还有发声器件,最常见的发声器件是蜂鸣器。蜂鸣器一般用于一些要求不高的声音报警及按键操作提示音等场合。 蜂鸣器的形状一般如图1 所示。 虽然它有自己的固有谐振频率,但是它也可以被加以不同频率的方波,从而编制一些简单的音乐。 图1 蜂鸣器实物图 1.实例功能 本实例就是来实现蜂鸣器发声,通过本小节的实验,可以使读者熟练掌握蜂鸣器的应用。硬件照片如图2 所示。 图2 蜂鸣器和继电器实验演示图 2.器件和原理 有源蜂鸣器和普通扬声器相比,最重要一个特点是只要按照极性要求加上合适的直流电压,就可以发出固有频率的声音,因此使用起来比扬声器简单
[单片机]
PIC单片机之<font color='red'>蜂鸣器</font>和继电器
【51单片机】STC89C52蜂鸣器实验,含c代码(4)
1.参考教程: 清翔51单片机教程 2.基本原理 : 若vcc是5v,p23低电平,使得R10流过大于1mA的电流,则CE导通,蜂鸣器响。P23为高电频反之。 3.C程序代码 : #include reg52.h #include intrins.h //标准库函数 #define uint unsigned int #define uchar unsigned char sbit beep = P2^3; //毫秒级延时函数定义 void delay(uint z) { uint x,y; for(x = z; x 0; x--) for(y = 114; y 0; y--); } void ma
[单片机]
【51单片机】STC89C52<font color='red'>蜂鸣器</font>实验,含c代码(4)
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(1)
    做任何事情之前,一定要想好目标。没有目标的事情是做不好的,也做不成。我的目标就是学习ARM开发,当然是深入的学习。目标如下 :1、学习A ...
  • 学习ARM开发(2)
    天是星期天,刚好在家里休息。又是学习ARM的大好时机了。早上起得很早,因为都想着怎么样搞好这个ARM开发环境,总是心急的。搞得睡觉,也睡 ...
  • 学习ARM开发(4)
    已经把CPU大体架构学会了,当然我之前已经学习过80X86的结构,所以对于像RISC的计算机,也能想像到它是什么样的东西。如果没有学习过《微机 ...
  • 学习ARM开发(6)
    上一次,说到要学习ARM汇编,好,现在就开始。目前我的引导程序是在UBOOT1 1 2上修改过来的,大家可以下载UBOOT的源程序,也许你们会问在那 ...
  • 学习ARM开发(7)
    上一次,学习到第一段代码,这次接着学习第二段代码,而第二段代码主要作用于保存数据的。 ********************************************* ...
  • 学习ARM开发(8)
  • 学习ARM开发(9)
  • 学习ARM开发(10)
  • 学习ARM开发(11)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved