如何获取stm32f407从传感器传来的数据

如何获取stm32f407从传感器传来的数据,第1张

传感器获得的数据传送给计算机的方法有两种: 1、模拟方法:传感器将模拟信号输出到计算机的AD板卡(或其他采样装置),AD板卡将模拟量转换为数字量成为计算机可以识别的数据。 2、数字量传送给计算机,这里也有很多种,最直接的方式是传感器带

用的是四针脚光敏传感器

不同型号的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的。

对绝对的地址空间进行读写即可。

比如STM32自身的SRAM地址空间范围是0x20000000-0xXXXXXXXX(结束地址根据不同型号而不同,比如STM32F103ZET6的SRAM地址空间为0x20000000-0x2000FFFF共64KB),对绝对地址进行访问的C语言代码是:

a = *(u8 *)0x20000000//将地址为0x20000000的一个字节数据读取到变量a中

*(u8 *)0x20000100 = a //将变量a的值放到地址0x20000100处

不过不推荐直接访问绝对地址,因为这样可能会破坏堆栈而导致程序跑乱跑飞等问题的出现。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6659873.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存