Experimento del zumbador STM32F103ZET6
Directorio de artículos
Prefacio
El aprendizaje de STM32 se puede dividir en 3 versiones.
1. Versión de registro
2. Versión de función de biblioteca
3. Versión de biblioteca HAL
Por motivos personales, elijo la versión de función de biblioteca para aprender STM32.
Consejo: ¡No se explicarán problemas como la instalación del software! ! !
1. Esquemático
El diagrama esquemático muestra que PB8 corresponde a BEEP.
En segundo lugar, el código fuente del programa
1.beep.h
el código se muestra a continuación:
#ifndef _BEEP_H
#define _BEEP_H
void Beep_Init(void);
#endif
2.beep.c
el código se muestra a continuación:
#include "beep.h"
#include "stm32f10x.h"
void Beep_Init(void)
{
GPIO_InitTypeDef GPIO_Initstr;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE);//时钟使能
GPIO_Initstr.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Initstr.GPIO_Pin=GPIO_Pin_8;
GPIO_Initstr.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_Initstr);
GPIO_ResetBits(GPIOB, GPIO_Pin_8);//初始化蜂鸣器关闭
}
3.main.c
el código se muestra a continuación:
#include "stm32f10x.h"
#include "led.h"
#include "delay.h"
#include "beep.h"
int main(void)
{
delay_init();
LED_Init();
Beep_Init();
while(1)
{
//库函数
GPIO_ResetBits(GPIOB, GPIO_Pin_5);//LED1点亮,蜂鸣器不响
GPIO_SetBits(GPIOE, GPIO_Pin_5);
GPIO_ResetBits(GPIOB, GPIO_Pin_8);
delay_ms(300);
GPIO_SetBits(GPIOB, GPIO_Pin_5);//LED2点亮,蜂鸣器响
GPIO_ResetBits(GPIOE, GPIO_Pin_5);
GPIO_SetBits(GPIOB, GPIO_Pin_8);
delay_ms(300);
//位操作
// PBout(5)=0;
// PEout(5)=1;
// PBout(8)=0;
// delay_ms(300);
// PBout(5)=1;
// PEout(5)=0;
// PBout(8)=1;
// delay_ms(300);
}
}
3. Resultados experimentales
Cuando el LED1 está encendido, el zumbador está apagado; cuando el LED2 está encendido, el zumbador está encendido.
para resumir
¡La perseverancia es la victoria! ! !
Los pasos de implementación del programa son los siguientes:
1. Habilitación del reloj
2. Inicialización de GPIO
3. Controle el registro ODR para generar niveles altos y bajos