STM32Keil下编程实现蜂鸣器长鸣

最新更新时间:2022-01-14来源: eefocus关键字:STM32  Keil  编程 手机看文章 扫描二维码
随时随地手机看文章

前言

基于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;//调用GPIO_Structure结构体


RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//引脚GPIOB挂载在APB2上的外设作为输入参数


GPIO_Structure.GPIO_Mode=GPIO_Mode_Out_PP;//指定工作方式OUT推挽输出

GPIO_Structure.GPIO_Pin=BEEP_Pin;//Beep指定引脚

GPIO_Structure.GPIO_Speed=GPIO_Speed_10MHz;//指定速度为10MHz

GPIO_Init(BEEP_GPIO,&GPIO_Structure);//调用GPIO_Init 传入&GPIO_Structure(对该引脚初始化)

}


2.Beep.h

代码如下:


#ifndef _BEEP_H_

#define _BEEP_H_

#include "stm32f10x.h"


//宏定义

#define BEEP_GPIO GPIOB //指定BEEP端口为GPIOB

#define BEEP_Pin GPIO_Pin_10  //指定GPIO_Pin_10引脚为BEEP_Pin


#define BEEP_OFF BEEP_GPIO->BRR = BEEP_Pin //BEEP响  SRR下拉

#define BEEP_ON BEEP_GPIO->BSRR = BEEP_Pin //BEEP停  BSRR上拉


//全局函数声明

void BEEP_Init(void);  //初始化


#endif


3.main.c

代码如下:


//#include"Led.h"

#include"stm32f10x.h"

#include"Beep.h"


//typedef unsigned         char uint8_t;

//typedef unsigned short   int uint16_t;

//typedef unsigned         int  uint32_t;

//typedef unsigned      _INT64_uint64_t;


static void delay(uint16_t n )//延时程序

{

uint16_t i,j;

for(i=0;i for(j=0;j<8500;j++);

}


int main(void)

{

//LED_Init();

BEEP_Init();//beep初始化

while(1)

{

// LED2_ON;

//LED3_ON;

// GPIO_ResetBits(GPIOB,GPIO_Pin_10);//GPIO位输出为0

BEEP_ON;

delay(200);

BEEP_OFF;

//GPIO_SetBits(GPIOB,GPIO_Pin_10);//GPIO位输出1

delay(180);

BEEP_ON;

delay(40);

BEEP_OFF;

delay(100);

BEEP_ON;

delay(90);

BEEP_OFF;

delay(150);

//LED2_OFF;

//LED3_OFF;

//delay(200);

}

}


总结

以上就是今天要讲的内容,本文仅仅简单介绍了基于STM32F103C8T6在Keil下编程实现基于STM32F103C8T6在Keil下编程实现蜂鸣器的长鸣的原理图和代码。

关键字:STM32  Keil  编程 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic557778.html

上一篇:STM32 Keil下编程实现LED灯点亮与闪烁
下一篇:STM32F429--EXTI外部中断/事件控制器

推荐阅读

STM32字符串打印
源码xxx.cvoid UART_PutChar(USART_TypeDef* USARTx, uint8_t ch){ while((USARTx->SR&0X40)==0);//循环发送,直到发送完毕 USARTx->DR = (ch & (uint16_t)0x01FF); }void printf_uart(USART_TypeDef* USARTx, uint8_t *str){ while (*str != '' ) { UART_PutChar(USARTx, *str); str++; }}头文件定义xxx.hvoid UART_PutChar(USART_TypeDef* USAR
发表于 2022-09-30
stm32——端口重映射
我们先来看什么是复用功能?我们在《stm32f103rc_datasheet.pdf》中可以看到对I/O口的功能描述表格比如:PC10 I/O口,UART4_TX与SDIO_D2功能都是PC10 I/O口的复用功能。也就是说,PC10 I/O口不仅仅只能进行由内核控制的输入/输出功能,还可以进行由片上外设控制的UART4_TX与SDIO_D2功能。注意:UART4_TX与SDIO_D2功能是来自不同模块的功能。当我们使用复用功能UART4_TX时,那么PC10 I/O口就由UART外设模块控制,此时PC10 I/O口输入/输出的数据就都来自于UART外设模块了,而不是来自于内核或者其他外设模块。注意:下图中BGA144、BGA100
发表于 2022-09-30
<font color='red'>stm32</font>——端口重映射
STM32外围电路硬件解析
复位电路:复位 :让MCU回到最开始的状态。并且从头开始,重新执行程序 我们什么时候需要复位?1.烧录的时候 2.程序跑飞了的时候3.上电复位(上电的时候需要复位) 复位方式:1.上电复位: --- 一定要有MCU的Reset是复位引脚,当这个引脚为低电平时,单片机会产生复位。 2. 按键复位:--- 可有可无(看需求)K10按下,产生复位动作这是阻容复位电路。当复位引脚低电平的时候复位。当上电的瞬间,C13电容开始充电,电容处于短路状态,电容上面的电压为低电平,此时MCU复位引脚被拉低,MCU执行复位,这样就实现了上电的时候复位功能了。实际上,单片机内部也有上电复位电路,那么我们之所以还要在单片机外部加上复位
发表于 2022-09-30
<font color='red'>STM32</font>外围电路硬件解析
STM32中 一些类型的别名
typedef signed char int8_t;typedef signed short int int16_t;typedef signed int int32_t;typedef signed __INT64 int64_t; /* exact-width unsigned integer types */typedef unsigned char uint8_t;typedef unsigned short int uint16_t;typedef int uint32_t;typedef unsigned __INT64 uint64_t; /* 7.18.1.2 */ /* smal
发表于 2022-09-29
51单片机 模块化编程
了解模块化编程1.首先了解一下传统方式编程和模块化编程传统方式编程:所有的函数均放在main.c里,若使用的模块比较多,则一个文件内会有很多的代码,不利于代码的组织和管理,而且很影响编程者的思路 模块化编程:把各个模块的代码放在不同的.c文件里,在.h文件里提供外部可调用函数的声明,其它.c文件想使用其中的代码时,只需要#include "XXX.h"文件即可。使用模块化编程可极大的提高代码的可阅读性、可维护性、可移植性等2. 模块化编程注意事项.c文件:函数、变量的定义.h文件:可被外部调用的函数、变量的声明任何自定义的变量、函数在调用前必须有定义或声明(同一个.c)使用到的自定义函数的.c文件必须添加到工程参
发表于 2022-09-28
51单片机 模块化<font color='red'>编程</font>
STM32+超声波
1.初始化IO口void HC_SR04Init(void){GPIO_InitTypeDef GPIOInit;TIM_TimeBaseInitTypeDef TIMInit; NVIC_InitTypeDef NVICInit;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); //负责发送高电平PB11GPIOInit.GPIO_Mode = GPIO_Mode_Out_PP
发表于 2022-09-28

推荐帖子

测试电感,电路转换问题
我要测试6.8欧姆的电感,应该用什么样的电路转换,才送到单片机里? 6.8欧姆的电感就是线圈(电感)用万用表的欧姆档量的值 [本帖最后由cscl于2009-11-1716:10编辑]测试电感,电路转换问题
cscl 测试/测量
如何选用达到一定压力才输出数字量的传感器?
请问一个系统需要测量一定的压力,当有一定大小压力时认为有人经过,请问应如何选用这样的传感器?如何选用达到一定压力才输出数字量的传感器?
z面朝大海b 传感器
关于DSP28335芯片锁死的解决办法
前几天准备搞个28335的UCOSII移植,由于对CSM的功能不是很了解,导致了28335被锁死。在这要感谢下发烧友的1009109508大神,以及回帖的nicholas1233。用其方法,成功解决了芯片锁死问题!下面我来还原一下事故现场:本人比较懒,所以从网上找了个28335的UCOSII工程文件,通过ccs4.1.2进行编译,结果出现了好多错误,经过不断修改,错误终于减少到了个位数。 关于DSP28335芯片锁死的解决办法
Jacktang 微控制器 MCU
GD32F350--体验之五(关于串口官方一些细节操作)
今晚本来想利用串口自带的块尾中断来接收一帧完整的modbus协议,回来的时候,刚想动手把其调通,没想到突然看了手册,串口1竟然只是实现了官方的部分功能,不支持modbus通信!串口0才全部支持!!! 好了,不支持就算了,我切换到串口0好了,板子上的USB转TTL的串口用的是PA2和PA3。看了以为支持两个串口复用的,利用上帖子的串口函数接口,直接传参串口0的宏定义,发现没log出现,查了时钟,DMA等等都使能了。我个去,这个坑。后来才发现,PA2和PA3要复用为串口0,只有GD32F
RCSN GD32 MCU
大型设备上应用无线模块的特色
安全性在起重机等大型设备工作运行中是需要重点考虑的,无线模块的应用使得无线控制技术在起重机行业上发挥着重要作用,不仅提高了起重机运行时的安全性和便利性,还实现了在起重机的复杂操作。下面,一起来看一下无线模块应用于起重机等大型设备上有哪些优势。   起重机的安全由驾驶员的操作、(电缆线、护套管、拖链)等原件因腐蚀而造成刚度不够等因素决定,为了确保起重机的安全性,采集起重机各个特殊部位的信号,是解决问题的关键。 起重机结构复杂,不容易布线,所以信号的无线连接是解决起重机
dwzt RF/无线
逛安富利新能源技术创新云会展 赢好礼!
逛安富利新能源技术创新云会展赢好礼!>>点击进入报名云会展全球领先的技术分销商和解决方案提供商安富利将于9月19日至11月6日举办“新能源技术创新云会展”。聚焦新能源主题,安富利将携手供应商及合作伙伴全面展示业界在新能源汽车和新能源工业领域的创新成果,共创绿色低碳未来。此次线上云会展是继去年“安富利人工智能云会展”取得圆满成功基础上的又一场云端盛会,将为新能源领域的产业专家、研发人员等搭建展示、沟通和交流的虚拟平台。
EEWORLD社区 汽车电子
小广播
设计资源 培训 开发板 精华推荐

何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved