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);
}
整体工程文件如下:

相关推荐
垂杨有暮鸦⊙_⊙5 分钟前
阅读2020-2023年《国外军用无人机装备技术发展综述》笔记_技术趋势
笔记·学习·无人机
Mephisto.java40 分钟前
【大数据学习 | HBASE高级】region split机制和策略
数据库·学习·hbase
Bio Coder1 小时前
学习用 Javascript、HTML、CSS 以及 Node.js 开发一个 uTools 插件,学习计划及其周期
javascript·学习·html·开发·utools
Allen zhu1 小时前
【PowerHarmony】电鸿蒙学习记录-准备工作
学习·华为·harmonyos
华清远见成都中心1 小时前
物联网学习路线来啦!
物联网·学习
hgy89692 小时前
Ekman理论回归
学习
坚硬果壳_2 小时前
《硬件架构的艺术》笔记(一):亚稳态
笔记·学习
BT-BOX2 小时前
STM32仿真proteus位带操作和keil增加头文件C文件
c语言·stm32·proteus
糊涂君-Q2 小时前
Python小白学习教程从入门到入坑------第三十一课 迭代器(语法进阶)
python·学习·程序人生·考研·职场和发展·学习方法·改行学it
qiyi.sky2 小时前
JavaWeb——Web入门(8/9)- Tomcat:基本使用(下载与安装、目录结构介绍、启动与关闭、可能出现的问题及解决方案、总结)
java·前端·笔记·学习·tomcat