用的是四针脚光敏传感器
不同型号的STM32 ADC通道的选择也不一样
我使用的是STM32F103RCT6单片机 选择了ADC2 通道6 对应的是PA6引脚。
希望对大家有帮助
它具有四个引脚,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的。
使用ISP下载时必须使用串口1,启动模式必须设成system Flash模式,下载完再改成main Flash模式,ISP软件可使用ST官方提供的
stm32自带的系统时钟是32mhz的,但是可以倍频,这样既可以支持低频外设,又可以提供高频信号。stm32支持dma传输,不经过cpu速度很快,你可以用gpio设置成232或者485来接收数据
VDDA是STM32的AD电源输入引脚,电容是滤波的,滤除电源的高频谐波,因为STM32对电源要求比较高,所以让电源尽可能纯净。至于那个电阻,感觉就画蛇添足了,他可能是想组成各RC低通滤波,但是完全没必要,而且STM的推荐设计里也没这个电阻。
找个其他单片机的c移植一下咯,还有注意cs引脚和其他引脚的配置,有时候配置为上拉等会有影响
1.看右边的电路,KEY0,1,2都接入地,需要上拉电阻。KEY_UP接入电源需要下拉电阻。
(这里介绍下上拉的意思,就是上拉就是把一个不确定的信号钳在高电平,下拉就是把一个不确定的信号钳在低电平,当我们按键没有按下的时候,信号就是不确定的,就会根据上拉还是下拉输出信号,故为了让一个按键按下和放开有两种状态,你接入电源,就需要下拉,接入地,就需要上拉)
2.KEY0,1,2分别接入芯片PH3,PH2,PC13
KEY_UP接入PA0
本文标签:stm32连接ad7705原理图