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

相关推荐
写点什么呢14 分钟前
使用PE安装Win10系统
学习
('-')17 分钟前
《从根上理解MySQL是怎样运行的》第十二章学习笔记
笔记·学习·mysql
Bona Sun1 小时前
单片机手搓掌上游戏机(十六)—pico运行fc模拟器之程序修改烧录
c语言·c++·单片机·游戏机
摆烂积极分子1 小时前
安卓开发学习-安卓版本
android·学习
Bona Sun3 小时前
单片机手搓掌上游戏机(十三)—pico运行fc模拟器之硬件准备
c语言·c++·单片机·游戏机
Bona Sun3 小时前
单片机手搓掌上游戏机(十八)—pico运行fc模拟器之更大屏幕
c语言·c++·单片机·游戏机
2***s6723 小时前
【Go】Go语言基础学习(Go安装配置、基础语法)
服务器·学习·golang
韩曙亮4 小时前
【人工智能】AI 人工智能 技术 学习路径分析 ① ( Python语言 -> 微积分 / 概率论 / 线性代数 -> 机器学习 )
人工智能·python·学习·数学·机器学习·ai·微积分
辞旧 lekkk4 小时前
【c++】封装红黑树实现mymap和myset
c++·学习·算法·萌新
freemote4 小时前
超、超、超小型温度传感器TMP118
单片机·i2c·温度传感器·tmp118·超小型温度传感器