国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【STM32】STM32學(xué)習(xí)筆記-按鍵控制LED 光敏傳感器控制蜂鳴器(08)

這篇具有很好參考價(jià)值的文章主要介紹了【STM32】STM32學(xué)習(xí)筆記-按鍵控制LED 光敏傳感器控制蜂鳴器(08)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

00. 目錄

01. 按鍵控制LED接線圖

stm32無源蜂鳴器led按鍵模塊原理圖,STM32F103,stm32,學(xué)習(xí),筆記,江科大,江科大stm32,stm32學(xué)習(xí)筆記,單片機(jī)

02. 按鍵控制LED程序示例

led.h

#ifndef __LED_H__
#define __LED_H__

void led_init(void);
void led1_on(void);
void led1_off(void);
void led1_turn(void);

void led2_on(void);
void led2_off(void);
void led2_turn(void);

#endif /*__LED_H__*/

led.c

#include "led.h"

#include "stm32f10x.h"                  // Device header


//LED初始化
void led_init(void)
{
	GPIO_InitTypeDef GPIO_InitStruct;
	
	//使能時(shí)鐘
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	
	//A1  A2
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2;
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStruct);
	
	//設(shè)置為高電平
	GPIO_SetBits(GPIOA, GPIO_Pin_1);
	GPIO_SetBits(GPIOA, GPIO_Pin_2);
}

//LED1亮
void led1_on(void)
{
	GPIO_ResetBits(GPIOA, GPIO_Pin_1);
}

//LED1滅
void led1_off(void)
{
	GPIO_SetBits(GPIOA, GPIO_Pin_1);
}

//LED翻轉(zhuǎn)
void led1_turn(void)
{
	if (GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_1) == 0)
	{
		GPIO_SetBits(GPIOA, GPIO_Pin_1);
	}
	else
	{
		GPIO_ResetBits(GPIOA, GPIO_Pin_1);
	}
}


//LED2亮
void led2_on(void)
{
	GPIO_ResetBits(GPIOA, GPIO_Pin_2);
}

//LED2滅
void led2_off(void)
{
	GPIO_SetBits(GPIOA, GPIO_Pin_2);
}

//LED2翻轉(zhuǎn)
void led2_turn(void)
{
	if (GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_2) == 0)
	{
		GPIO_SetBits(GPIOA, GPIO_Pin_2);
	}
	else
	{
		GPIO_ResetBits(GPIOA, GPIO_Pin_2);
	}
}

key.h

#ifndef __KEY_H__
#define __KEY_H__

#include "stm32f10x.h"                  // Device header

void key_init(void);

uint8_t key_scan(void);

#endif /*__KEY_H_*/


key.c

#include "key.h"


#include "delay.h"


//按鍵初始化
void key_init(void)
{
	GPIO_InitTypeDef GPIO_InitStruct;
	
	//使能時(shí)鐘
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
	
	//B1 B11
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU; //上拉輸入
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_11;
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //對于輸入用途不大
	GPIO_Init(GPIOB, &GPIO_InitStruct);
}

//按鍵掃描
uint8_t key_scan(void)
{
	uint8_t ret = 0;
	
	if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_1) == 0)
	{
		delay_ms(10);
		
		//等待按鍵抬起
		while(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_1) == 0);
		
		delay_ms(10);
		ret = 1;
	}
	
	
	if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11) == 0)
	{
		delay_ms(10);
		
		//等待按鍵抬起
		while(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11) == 0);
		
		delay_ms(10);
		ret = 2;
	}
	
	return ret;
}

main.c

#include "stm32f10x.h"

#include "delay.h"
#include "led.h"
#include "key.h"


 int main(void)
 {	
	led_init();
	key_init();
	 
	 while(1)
	 {
		if (key_scan() == 1)
		{
			led1_turn();
		}
		
		if (key_scan() == 2)
		{
			led2_turn();
		}
	 }
	  
	 return 0;
 }

03. 光敏傳感器控制Buzzer接線圖

stm32無源蜂鳴器led按鍵模塊原理圖,STM32F103,stm32,學(xué)習(xí),筆記,江科大,江科大stm32,stm32學(xué)習(xí)筆記,單片機(jī)

04. 有源蜂鳴器原理圖

電路圖:
stm32無源蜂鳴器led按鍵模塊原理圖,STM32F103,stm32,學(xué)習(xí),筆記,江科大,江科大stm32,stm32學(xué)習(xí)筆記,單片機(jī)

實(shí)物圖:

stm32無源蜂鳴器led按鍵模塊原理圖,STM32F103,stm32,學(xué)習(xí),筆記,江科大,江科大stm32,stm32學(xué)習(xí)筆記,單片機(jī)

05. 光敏傳感器控制Buzzer示例

buzzer.h

#ifndef __BUZZER_H__

#define __BUZZER_H__

#include "stm32f10x.h"  


//蜂鳴器初始化 B12
void buzzer_init(void);


//on
void buzzer_on(void);


//off
void buzzer_off(void);



#endif

buzzere.c

#include "buzzer.h"



//蜂鳴器初始化 B12
void buzzer_init(void)
{
	GPIO_InitTypeDef GPIO_InitStruct;
	
	//使能時(shí)鐘
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
	
	//B12
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; 
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_12;
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_10MHz; 
	GPIO_Init(GPIOB, &GPIO_InitStruct);
	
	//設(shè)置為高電平
	GPIO_SetBits(GPIOB, GPIO_Pin_12);
}

//on
void buzzer_on(void)
{
	GPIO_ResetBits(GPIOB, GPIO_Pin_12);
}


//off
void buzzer_off(void)
{
	//設(shè)置為高電平
	GPIO_SetBits(GPIOB, GPIO_Pin_12);	
}

lightsensor.h


#ifndef __LIGHT_SENSOR_H__
#define __LIGHT_SENSOR_H__


#include "stm32f10x.h"

void lightsensor_init(void);

uint8_t lightsensor_get(void);


#endif /*__LIGHT_SENSOR_H__*/

lightsensor.cpp

#include "lightsensor.h"

//B13
void lightsensor_init(void)
{
	GPIO_InitTypeDef GPIO_InitStruct;
	
	//使能時(shí)鐘
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
	
	//B1 B11
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU; //上拉輸入
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13;
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //對于輸入用途不大
	GPIO_Init(GPIOB, &GPIO_InitStruct);
	
}

uint8_t lightsensor_get(void)
{
	return GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_13);
}

main.c

#include "stm32f10x.h"

#include "delay.h"
#include "led.h"
#include "key.h"
#include "buzzer.h"
#include "lightsensor.h"

 int main(void)
 {	

	buzzer_init();
	lightsensor_init();
	 
	 while(1)
	 {
		 if (lightsensor_get() == 1)
		 {
			buzzer_on();
		 }
		 else
		 {
			buzzer_off();
		 }
	 }
	 
	 
	 return 0;
 }


 

06. 程序示例下載

04-Key控制LED.rar

05-光敏傳感器控制蜂鳴器.rar

07. 附錄

參考: 【STM32】江科大STM32學(xué)習(xí)筆記匯總文章來源地址http://www.zghlxwxcb.cn/news/detail-856566.html

到了這里,關(guān)于【STM32】STM32學(xué)習(xí)筆記-按鍵控制LED 光敏傳感器控制蜂鳴器(08)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包