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

相关推荐
V搜xhliang02462 小时前
AI智能体的数据安全与合规实践
人工智能·学习·数据分析·自动化·ai编程
Mr..Jackey3 小时前
瑞佑 RUI Builder 图形化 UI 设计工具
arm开发·人工智能·单片机·ui·人机交互·ra8889·lcd控制芯片
无敌的牛3 小时前
redis学习过程
数据库·redis·学习
旅僧5 小时前
Π环境部署(运行 且 无理论讲解)
学习
jushi89995 小时前
Lucas Chess R国际象棋、中国象棋、日本将棋、五子棋训练学习工具游戏软件
学习
自传.5 小时前
尚硅谷 Vibe Coding|第一章 AI 编程基础理论 学习笔记
笔记·学习·尚硅谷·vibe coding
西城微科方案开发6 小时前
多品类电子秤一体化PCBA整体方案
单片机·嵌入式硬件·电子秤
吃好睡好便好6 小时前
改变时间轴的跨度
学习·生活
火花页.6 小时前
【正点原子ZYNQ领航者7020】PS端GPIO中断→按键控制LED实验
单片机·嵌入式硬件
ye150127774556 小时前
4.2V升6V1A同步升压WT3213
单片机·嵌入式硬件·其他·硬件工程