STM32单片机入门学习(六)-光敏传感器控制LED

光敏传感器模块和LED接线

LED负极接B12,正极接VCC

光敏传感模块一DO端接B13,GND接GND,VCC接VCC,AO不接。

如图:

主程序代码:main.c
cpp 复制代码
#include "stm32f10x.h"
#include "Delay.h"     //delay函数所在头文件
#include "LED.h"
#include "LightSensor.h"

int main(void)
{	
	LED_Init();   //初始化LED
	LED_OFF();		//默认LED灭
	
	LightSensor_Init(); 	//初始化光敏传感器
	while(1)
		{
			if(get_LightSensorNum() == 1)   //黑暗时LED亮
				{
					LED_ON();
				}
				else
				{
					LED_OFF();
				}
		}
}
LED.h和LED.c

LED.h

cpp 复制代码
#ifndef __LED_H
#define __LED_H


void LED_Init(void);
void LED_ON(void);
void LED_OFF(void);

#endif

LED.c

cpp 复制代码
#include "stm32f10x.h"

void LED_Init(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);  //设置时钟
	
	GPIO_InitTypeDef GPIOInitStruct;
	
	GPIOInitStruct.GPIO_Mode = GPIO_Mode_Out_PP;    //推挽模式
	GPIOInitStruct.GPIO_Pin = GPIO_Pin_12;     //B12
	GPIOInitStruct.GPIO_Speed = GPIO_Speed_50MHz;
	
	GPIO_Init(GPIOB, &GPIOInitStruct);
	
	GPIO_SetBits(GPIOB, GPIO_Pin_12); // 不亮
	
}

void LED_ON(void)
{
	GPIO_ResetBits(GPIOB, GPIO_Pin_12); // 亮
}


void LED_OFF(void)
{
	GPIO_SetBits(GPIOB, GPIO_Pin_12); // 不亮
}
LightSensor.h和LightSensorc

LightSensor.h

cpp 复制代码
#ifndef __LIGHTSENSOR_H
#define __LIGHTSENSOR_H


void LightSensor_Init(void);
unsigned char get_LightSensorNum(void);
	
#endif

LightSensor.c

cpp 复制代码
#include "stm32f10x.h"
#include "Delay.h" 


//初始化LightSensor
void LightSensor_Init(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);  //设置时钟
	
	GPIO_InitTypeDef GPIOInitStruct;
	
	GPIOInitStruct.GPIO_Mode = GPIO_Mode_IPU;    //上拉模式
	GPIOInitStruct.GPIO_Pin = GPIO_Pin_13;     //B13
	GPIOInitStruct.GPIO_Speed = GPIO_Speed_50MHz;
	
	GPIO_Init(GPIOB, &GPIOInitStruct);
}



//获取传感器结果
uint8_t get_LightSensorNum(void)
{
	return GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_13);
}
整体工程文件如下:

相关推荐
Lester_110129 分钟前
STM32 高级定时器PWM互补输出模式--如果没有死区,突然关闭PWM有产生瞬间导通的可能吗
stm32·单片机·嵌入式硬件·嵌入式软件
小李独爱秋2 小时前
“bootmgr is compressed”错误:根源、笔记本与台式机差异化解决方案深度指南
运维·stm32·单片机·嵌入式硬件·文件系统·电脑故障
ASKED_20193 小时前
Langchain学习笔记一 -基础模块以及架构概览
笔记·学习·langchain
(❁´◡`❁)Jimmy(❁´◡`❁)3 小时前
Exgcd 学习笔记
笔记·学习·算法
进击的小头4 小时前
实战案例:51单片机低功耗场景下的简易滤波实现
c语言·单片机·算法·51单片机
云小逸5 小时前
【nmap源码学习】 Nmap网络扫描工具深度解析:从基础参数到核心扫描逻辑
网络·数据库·学习
盐焗西兰花7 小时前
鸿蒙学习实战之路-Reader Kit构建阅读器最佳实践
学习·华为·harmonyos
深蓝海拓7 小时前
PySide6从0开始学习的笔记(二十七) 日志管理
笔记·python·学习·pyqt
慎独4138 小时前
科学赋能,让孩子专注高效爱上学习
学习
LGL6030A8 小时前
Java学习历程26——线程安全
java·开发语言·学习