STM32研究ノート(4)

STM32F103ZET6ブザー実験



序文

STM32の学習は3つのバージョンに分けることができます。
1.登録バージョン
2.ライブラリ関数バージョン
3.HALライブラリバージョン
個人的な理由により、STM32を学習するためにライブラリ関数バージョンを選択します。


ヒント:ソフトウェアのインストールなどの問題は説明されません!

1.回路図

回路図は、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);
	}
}

3.実験結果

LED1がオンのときはブザーがオフになり、LED2がオンのときはブザーがオンになります。


総括する

粘り強さは勝利です!

プログラムの実装手順は次のとおりです
。1。クロックの有効
化2.GPIOの初期化
3.ODRレジスタを制御して高レベルと低レベルを出力する

おすすめ

転載: blog.csdn.net/weixin_44935259/article/details/112494239