提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、原理图
- 1.STM32F103C8T6
- 2.BELL蜂鸣器
- 二、Keil代码
- 1.Beep.c
- 2.Beep.h
- 3.main.c
- 总结
前言
基于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<n;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下编程实现蜂鸣器的长鸣的原理图和代码。
更多推荐
STM32Keil下编程实现蜂鸣器长鸣
发布评论