STM32F103ZET6之蜂鳴器實驗
文章目錄
- STM32F103ZET6之蜂鳴器實驗
- 前言
- 一、原理圖
- 二、程式原始碼
- 1.beep.h
- 2.beep.c
- 3.main.c
- 三、實驗結果
- 總結
前言
對于STM32的學習可分為3個版本,
1.暫存器版本
2.庫函式版本
3.HAL庫版本
由于個人原因,選擇庫函式版本來進行STM32的學習,
提示:軟體安裝等問題,不進行講解!!!
一、原理圖
原理圖可知,PB8對應BEEP,


二、程式原始碼
1.beep.h
代碼如下:
#ifndef _BEEP_H
#define _BEEP_H
void Beep_Init(void);
#endif
2.beep.c
代碼如下:
#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
代碼如下:
#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);
}
}
三、實驗結果
當LED1點亮時,蜂鳴器關閉;當LED2點亮時,蜂鳴器開啟,
總結
堅持,就是勝利!!!
程式實作步驟如下:
1.時鐘使能
2.GPIO初始化
3.控制ODR暫存器輸出高低電平
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/248160.html
標籤:其他
上一篇:字符和字串課后習題
