STM32W108无线传感器网络多传感器环境参数监测实例

本实例基于STM32W108SimpleMac协议栈,利用无线节点完成对温度、湿度、超声波、烟雾、声音、光敏等传感器的控制及数据采集,并实时将数据发送到STM32W108开发板,完成传感器数据的汇集,并通过串口传送给PC机。

 

 

 

13.4 传感器数据采集程序设计与实现

下面将根据不同的传感器分别进行传感器数据采集程序的设计说明,最后给出数据包的发送、接收及主函数部分的详细内容。

13.4.1 温度传感器

temperature.h文件内容:

 

#ifndef  __TEMPERATURE_H__

#define  __TEMPERATURE_H__

#define TEMP_BUS  PORTA_PIN(5)  //PA5

#define  TEMP_BUS_INPUT_GPIO  GPIO_PAIN //端口A输入寄存器

#define  TEMP_BUS_OUTPUT_GPIO GPIO_PAOUT //端口A输出寄存器

#define  TEMP_BUS_GPIO_PIN    PA5_BIT //PA5_BIT的值为4

#define TEMP_BUS_WAKE_SOURCE  0x00000080

#define TEMP_BUS_SET  (GPIO_PASET_ADDR+((GPIO_PBCFGL_ADDR

-GPIO_PACFGL_ADDR)*(TEMP_BUS/8)))

#define TEMP_BUS_CLR  (GPIO_PACLR_ADDR+((GPIO_PBCFGL_ADDR

-GPIO_PACFGL_ADDR)*(TEMP_BUS/8)))

extern u16  Read_Temperature();// 读温度函数

#endif

 

 

temperature.c文件:

 

#include  PLATFORM_HEADER

#include  BOARD_HEADER

#include  "temperature.h"

#include  "hal/micro/micro-common.h"

#include  "hal/micro/cortexm3/micro-common.h"

 

#define  LOW 0//低电平

#define  HIGH 1//高电平

 

/**************************************************************************

功能描述:设置端口,将端口置高或置低

输入参数:status:电平的参数,高电平或低电平

输出参数:无

*************************************************************************/

static  void SetPort(int8u Statu)

{

  halGpioConfig(TEMP_BUS, GPIOCFG_OUT); //设置总线为输出状态

  if(TEMP_BUS/8 < 3) 

  {

    if(Statu==HIGH)//高电平

      *((volatile int32u *)TEMP_BUS_SET) =  BIT(TEMP_BUS&7); //设置寄存器bit4

    else

      *((volatile int32u *)TEMP_BUS_CLR) =  BIT(TEMP_BUS&7); //清除寄存器bit4

  }

}

 

/**************************************************************************

功能描述:获取端口状态

输入参数:无

输出参数:u8类型值,100表示低电平,1

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值