STM32与4脚光敏电阻的简单使用——初学

2023-05-16

       这是我第一次写CSDN,排版可能有许多问题,描述的可能也有不清楚的地方,有问题的小伙伴可以私聊我,一起学习共同进步。

       今天发现了一个很有意思的传感器——光敏传感器,它可以判断光线的亮暗,当然亮暗是个相对的说法,它可以自己设定阈值,今天来聊聊他最简单的使用。

 

  它具有四个引脚,VCC可以连接STM32板的3.3V或者5.0V电压接口。GND可以连接STM32单片机的GND。DO口是开关输出,可以输出1和0,代表高低电平。AO口是模拟量输出,可以利用STM32的ADC来读取他的电压,从而得出需要的数据。

  今天只是简单的认识和使用光敏电阻模块,所以只使用DO接口,AO接口可以不用连接,过几天我会发布AO接口的使用方法。

  按照接线VCC连接单片机3.3V,GND连接单片机的GND,DO接口连接单片机的PA6接口。接法如图(考虑有很多刚入门的兄弟,所以尽量的简单和详细):

连线就是这么简单,光敏电阻自带LED灯,连接好线时,当光线暗的时候,背面只会亮一个灯,当光线足够亮时,背面的两个灯都会亮起来。通过对光线亮暗的控制可以控制DO输出高低电平。可以通过库函数GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_6);来读取此时DO输出的状态。为了更好的展示实验结果,当光线暗时,LED0不亮灯,光线足够时LED0亮。

实现通过光线亮暗来控制LED0亮灭的代码为:

 u8 value;
value=GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_6); 
if(value == 0)
	GPIO_ResetBits(GPIOA,GPIO_Pin_8);    //¹âÏß°µµÆÃð
			
else
	GPIO_SetBits(GPIOA,GPIO_Pin_8);      //¹âÏßÁÁµÆÁÁ

初始化PA6为输入状态:

#ifndef __RED_H
#define __RED_H	 
#include "sys.h"


#define PA6 PAout(6)	

void RED_Init(void);

 				    
#endif
#include "red.h"

void RED_Init()
{
 
 GPIO_InitTypeDef  GPIO_InitStructure;
 	
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);	 	
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;				 
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; 		 
 GPIO_Init(GPIOA, &GPIO_InitStructure);					 
 GPIO_ResetBits(GPIOA,GPIO_Pin_6);
}
 

还要记得调用正点原子自带的led.h文件里的led_Init()函数,不然LED0是不会亮的,它里面包含了PA8引脚的初始化,单片机内部默认PA8是控制LED0的。

已经写的非常的简单易懂了,还有什么问题的私聊我。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32与4脚光敏电阻的简单使用——初学 的相关文章

  • STM32在Debug时程序运行时间不对,Debug时定时器中断每次进入断点时间不对,定时器一开启就进入中断的解决办法

    一 Debug时程序时间不对解决办法 1 点击魔术棒 2 点击Debug 点击Settings 3 点击Trace 在Core Clock里修改为你的系统时钟 二 Debug时定时器中断每次进入断点时间不对 在Debug时 程序停下来 定时
  • 51单片机 数码管中断操作

    实践目的 1 掌握中断的概念和思想 2 掌握51单片机中断系统和相关软硬件设计 实践内容 1 利用单片机的P0口接数码管的字段脚 P1 0脚接共阴极 P3 2 P3 3引脚接独立按键产生外部中断信号 编写程序 当程序正常运行时数码管显示H字
  • 初始化 ST-Link 设备时出错 - 无法连接到设备

    我目前正在使用 ST Link 调试器对我的 STM32F3 Discovery 板进行编程 我使用的IDE是Atollic TrueStudio 5 5 2 现在我面临一个非常奇怪的问题 那就是我不断收到消息 初始化 ST Link 设备
  • 在地址“0xXXXXXX”处中断,没有可用的调试信息,或在程序代码之外

    配置 使用 Nucleo L476RG 使用 GNU ARM Eclipse 我从 STM32CubeMX 生成了一个极简代码 我已经在我的板载 ST Link 中刷新了 J link 驱动程序 一直在尝试为我的代码运行调试器 但我的程序计
  • 在没有 IDE 的情况下如何使用 CMSIS?

    我正在使用 STM32F103C8T6 并想使用 CMSIS 这本质上只是寄存器定义 没有代码 让我的生活更轻松 同时仍保持在较低水平 问题是我不知道如何安装该库以便在命令行上使用 Makefile 使用 所有文档似乎都与特定于供应商的 I
  • 优化 ARM Cortex M3 代码

    我有一个 C 函数 它尝试将帧缓冲区复制到 FSMC RAM 这些函数将游戏循环的帧速率降低至 10FPS 我想知道如何分析反汇编的函数 我应该计算每个指令周期吗 我想知道CPU把时间花在哪里 在哪个部分 我确信该算法也是一个问题 因为它的
  • Push_back() 导致程序在进入 main() 之前停止

    我正在为我的 STM32F3 Discovery 板使用 C 进行开发 并使用 std deque 作为队列 在尝试调试我的代码 直接在带有 ST link 的设备上或在模拟器中 后 代码最终在 main 中输入我的代码之前在断点处停止 然
  • STM32用一个定时器执行多任务写法

    文章目录 main c include stm32f4xx h uint32 t Power check times 电量检测周期 uint32 t RFID Init Check times RFID检测周期 int main Timer
  • STM32F103

    提示 来源正点原子 参考STM32F103 战舰开发指南V1 3PDF资料 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 提示 这里可以添加本文要记录的大概内容 开发环境硬件普中科技 接线图在g
  • [MM32硬件]搭建灵动微MM32G0001A6T的简易开发环境

    作为学习单片机的经典 自然是通过GPIO点亮LED 或者是响应按钮的外部中断例程 这我们看看SOP8封装的芯片MM32G0001A6T得引脚 除了VDD和GND固定外 我们可以使用PA14 PA1 PA13 PA15 PA2 PA3这六个G
  • 解决KEIL编译慢问题

    两种方案 使用v6版本的ARM Compiler 如果v6版本编译不过 必须使用v5版本的 则可以勾选掉Browse Information选项 提升很明显 1分多钟能优化到几秒 看代码量 但是这个有个弊端 在KEIL中会影响函数跳转 建议
  • 串口通讯第一次发送数据多了一字节

    先初始化IO再初始化串口 导致第一次发送时 多出一个字节数据 优化方案 先初始化串口再初始化IO 即可正常通讯
  • STM32F4XX的12位ADC采集数值超过4096&右对齐模式设置失败

    文章目录 一 前言 二 问题1 数值超过4096 三 问题1的排错过程 四 问题2 右对齐模式设置失败 五 问题2的解决方法 5 1 将ADC ExternalTrigConv设置为0 5 2 使用ADC StructInit 函数 一 前
  • 从没有中断引脚并且在测量准备好之前需要一些时间的传感器读取数据的最佳方法

    我正在尝试将压力传感器 MS5803 14BA 与我的板 NUCLEO STM32L073RZ 连接 根据 第 3 页 压力传感器需要几毫秒才能准备好读取测量值 对于我的项目 我对需要大约 10 毫秒来转换原始数据的最高分辨率感兴趣 不幸的
  • 通过JTAG恢复STM32 MCU磨掉的标记

    我有一块可能带有 STM32 MCU 的板 我想为该板制作定制固件 因为库存板有很多问题 不幸的是 电路板制造商很友善地磨掉了所有标记 有没有办法通过 jtag 获取设备 系列 ID 并将其交叉引用到型号 我能找到的一切都是关于获取芯片的唯
  • 嵌入式 C++11 代码 — 我需要 volatile 吗?

    采用 Cortex M3 MCU STM32F1 的嵌入式设备 它具有嵌入式闪存 64K MCU固件可以在运行时重新编程闪存扇区 这是由闪存控制器 FMC 寄存器完成的 所以它不像a b那么简单 FMC 获取缓冲区指针并将数据刻录到某个闪存
  • STM32 上的 ADC 单次转换

    我正在研究 STM32 F103x 上的 ADC 编程 并从最简单的情况 单次转换开始 测量内部温度传感器 连接到 ADC1 的值 并使用 USART 将其发送到 COM 端口 目标似乎很明确 但是当我尝试将源代码下载到闪存时 它不会向 C
  • PWM DMA 到整个 GPIO

    我有一个 STM32F4 我想对一个已与掩码进行 或 运算的 GPIO 端口进行 PWM 处理 所以 也许我们想要 PWM0b00100010一段时间为 200khz 但随后 10khz 后 我们现在想要 PWM0b00010001 然后
  • STM32F0、ST-link v2、OpenOCD 0.9.0:打开失败

    我在用着发射台 http www ti com ww en launchpad about htmlgcc arm none eabi 4 9 2015q2 为 STM32F0 进行编译 现在我想使用该集合中的 arm none eabi
  • STM32 传输结束时,循环 DMA 外设到存储器的行为如何?

    我想问一下 在以下情况下 STM32 中的 DMA SPI rx 会如何表现 我有一个指定的 例如 96 字节数组 名为 A 用于存储从 SPI 接收到的数据 我打开循环 SPI DMA 它对每个字节进行操作 配置为 96 字节 是否有可能

随机推荐

  • 汇总:使用keil5所遇见的一些常见问题以及解决方法

    一 新建keil5工程时出现这个警告 解决方法 xff1a 右键单击Keil STM32F1xx DFP pdsc xff0c 然后点开属性界面 xff0c 由于Keil STM32F1xx DFP pdsc文件是只读文件 xff0c 将只
  • 自定义串口协议

    文章目录 前言一 有限状态机有限状态机代码接收数据缓冲缓冲要求循环队列 一 循环队列代码实现循环队列头文件 xff1a 源文件 xff1a 二 有限状态机与解码有限状态机核心实现代码有限状态机与解码头文件源文件 三 使用小例子总结 前言 此
  • stm32f1串口发送与接收

    目录 串口配置 串口发送 1使用SendString函数发送 2使用printf函数发送 串口接收 串口配置 首先对串口进行初始化 包括使能串口时钟 xff0c 这里我使用的是usart2 xff0c 使能GPIO时钟 xff0c 这里我用
  • 串口通讯详解

    这篇文章包含了串口通讯里面的大部分概念问题 目录 串口通讯线 同步串行 xff08 ISP xff09 异步串行 xff08 UART xff09 波特率 数据帧 串口通讯线 串口通信线最少需要2根 xff08 GND和信号线 xff09
  • 包罗万象!V3Det:1.3W类全新目标检测数据集(港中文&上海AI Lab)

    作者 CV君 编辑 我爱计算机视觉 点击下方卡片 xff0c 关注 自动驾驶之心 公众号 ADAS巨卷干货 xff0c 即可获取 点击进入 自动驾驶之心 目标检测 技术交流群 后台回复 2D检测综述 获取鱼眼检测 实时检测 通用2D检测等近
  • stm32f4串口接收与发送

    之前有写一篇stm32f1串口接收与发送的文章 xff0c stm32f4与f1只有配置上的一点不同 xff0c 今天把f4的串口接收与发送代码分享一下 详细解释推荐大家看f1那篇 xff0c 都是一样的 xff0c stm32f1串口发送
  • -> 在c语言中是什么意思?

    gt 是一个整体 xff0c 它是用于指向结构体子数据的指针 xff0c 用来取子数据 换种说法 xff0c 如果我们在C语言中定义了一个结构体 xff0c 然后申明一个指针指向这个结构体 xff0c 那么我们要用指针取出结构体中的数据 x
  • C++中 i<<=1是什么意思

    左移赋值运算 变量i 左移1位 xff0c 结果仍然保存到变量i 举个栗子 xff1a i 61 101001 执行 xff1a i span class token operator lt lt 61 span span class to
  • 详解KITTI数据集

    详解KITTI数据集 一 KITTI数据集发布方 2011年 xff0c Andreas Geiger xff08 KIT xff09 Philip Lenz xff08 KIT xff09 Raquel Urtasun xff08 TTI
  • OpenCV各版本差异

    Opencv2标志着opencv革命性的改变 xff0c Opencv2带来了全新的C 43 43 接口 xff0c 将Opencv的能力无限放大 在2 0时代 xff0c opencv增加了新的平台支持 xff0c 包括iOS和Andro
  • realsense D435 D435i D415深度相机在ros下获得RGB图、左右红外摄像图、深度图、IMU数据

    首先你要你确保你的相机驱动已经安装好 xff0c 环境配置可以看我的另一篇文章 xff1a https blog csdn net weixin 46195203 article details 119205851 第一步 xff1a 新建
  • LaTex学习之算法如何写以及常用语句IF、FOR、WHILE

    首先是在头文件中加上 usepackage span class token punctuation span algorithm span class token punctuation span algorithmic span cla
  • latex报错:Missing delimiter (. inserted). ... {\xi \left( {p,{p_q}} \right)} \right|}}

    理想中的公式 xff0c begin span class token punctuation span equation span class token punctuation span span class token punctua
  • sort函数第三个参数cmp必须声明为static

    span class token keyword bool span span class token keyword static span span class token function comp span span class t
  • linux下Tinyhttpd安装运行

    tinyhttpd 超轻量型 Http Server tinyhttpd 全部代码在500 行左右 xff0c 是一个超轻量型 Http Server xff0c 这是是学习C C 43 43 入门非常棒的一个开源项目 xff0c 可以帮助
  • CVPR 2023|DropKey:两行代码高效缓解ViT过拟合(美图&国科大)

    编辑 CV技术指南 点击下方卡片 xff0c 关注 自动驾驶之心 公众号 ADAS巨卷干货 xff0c 即可获取 点击进入 自动驾驶之心 全栈算法 技术交流群 前言 美图影像研究院 xff08 MT Lab xff09 与中国科学院大学突破
  • C++并发与多线程学习笔记--线程启动、结束,创建线程多法

    一 范例演示线程运行的开始 程序运行起来 xff0c 生成一个进程 xff0c 该进程所属的主线程开始自动运行 xff1b 当主线程从main xff08 xff09 函数返回 xff0c 则整个进程执行完毕 主线程从main xff08
  • 顶层const和底层const

    概念解释 表示声明常量的const都是顶层const 用于声明引用的const都是底层const 顶层const是 xff1a 指针本身是常量 底层const是 xff1a 指针所指的对象是常量 即是顶层const又是底层const xff
  • c++中从出年月日的字符串提取整形int

    在C 43 43 中字符串有两种 xff0c 不过提取方式类似 xff0c 具体如下 xff1a 一 以 0 结束的字符数组 对于以 0 结束的字符数组 xff0c 可以有如下两种方式 xff1a 1 通过自定义函数提取 由于格式固定 xf
  • STM32与4脚光敏电阻的简单使用——初学

    这是我第一次写CSDN xff0c 排版可能有许多问题 xff0c 描述的可能也有不清楚的地方 xff0c 有问题的小伙伴可以私聊我 xff0c 一起学习共同进步 今天发现了一个很有意思的传感器 光敏传感器 xff0c 它可以判断光线的亮暗