stm32f103c8t6学习 光敏电阻控制蜂鸣器

main.c 

#include "stm32f10x.h"                  // Device header
#include "buzzer.h"
#include "lightsensor.h"

int main(void)
{
	buzzer_init();//初始化外设
	lightsensor_init();
	while(1)//死循环
	{
		if(lightsensor_get()==1)//光线暗
		{
			buzzer_on();
		}
		else
			buzzer_off();
	}
}

 buzzer.c

#include "stm32f10x.h"                  // Device header

void buzzer_init(void)//初始化buzzer外设
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//开启gpio_b时钟
	
	GPIO_InitTypeDef GPIO_InitStruct;//定义结构体 配置端口模式中一参数
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出 高低电平均能驱动 
	//GPIO_Mode_Out_OD 开漏输出 高电平无驱动能力 
	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_12;//使用gpio_b12
	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOB,&GPIO_InitStruct);//初始化gpio
	
	GPIO_SetBits(GPIOB,GPIO_Pin_12);//默认高电平熄灭
}
void buzzer_on(void)
{
	GPIO_ResetBits(GPIOB,GPIO_Pin_12);
}
void buzzer_off(void)
{
	GPIO_SetBits(GPIOB,GPIO_Pin_12);
}
void buzzer_Negation(void)
{
	if(GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_0)==0)//读取当前gpio_a0输出
	{
		GPIO_SetBits(GPIOB,GPIO_Pin_12);//取反当前输出
	}
	else
	{
		GPIO_ResetBits(GPIOB,GPIO_Pin_12);
	}
}

buzzer.h

#ifndef __buzzer_h
#define __buzzer_h

void buzzer_init(void);
void buzzer_on(void);
void buzzer_off(void);
void buzzer_Negation(void);

#endif

lightsensor.c 

#include "stm32f10x.h"                  // Device header

void lightsensor_init(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//开启gpio_b时钟
	
	GPIO_InitTypeDef GPIO_InitStruct;//定义结构体 配置端口模式中一参数
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IPU;//上拉输入
	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_13;//使用gpio_b0和gpio_b10
	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOB,&GPIO_InitStruct);//初始化gpio
}
uint8_t lightsensor_get(void)
{
	return GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13);//光线暗输出高电平 光线亮输出低电平
}

lightsensor.h

#ifndef __lightsensor_h
#define __lightsensor_h

void lightsensor_init(void);
uint8_t lightsensor_get(void);

#endif

运行效果

光敏电阻控制蜂鸣器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值