• tianye907
    了解作者
  • C/C++
    开发工具
  • 12KB
    文件大小
  • rar
    文件格式
  • 1
    收藏次数
  • 10 积分
    下载积分
  • 43
    下载次数
  • 2019-04-28 10:02
    上传日期
STM32F03通过模拟IIC读取LIS3DH 解析数据获取加速度和角度。 串口1输出电脑串口助手,直接用即可,代码规范,好移植
STM32F103 IIC LIS3DH .rar
  • SPEED
  • speed.h
    20.8KB
  • speed.c
    50KB
  • IIC
  • iic.h
    863B
  • iic.c
    5.7KB
  • main.c
    2.9KB
内容介绍
/******************** (C) COPYRIGHT 2012 STMicroelectronics ******************** * File Name : LIS3DH_driver.c * Author : MSH Application Team * Author : Fabio Tota * Version : $Revision:$ * Date : $Date:$ * Description : LIS3DH driver file * * HISTORY: * Date | Modification | Author * 24/06/2011 | Initial Revision | Fabio Tota * 11/06/2012 | Support for multiple drivers in the same program | Abhishek Anand ******************************************************************************** * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * * THIS SOFTWARE IS SPECIFICALLY DESIGNED FOR EXCLUSIVE USE WITH ST PARTS. * *******************************************************************************/ /* Includes ------------------------------------------------------------------*/ #include "speed.h" #include <iic.h> /* Private typedef -----------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/ /* Private macro -------------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/ /* Private function prototypes -----------------------------------------------*/ /******************************************************************************* * Function Name : LIS3DH_ReadReg * Description : Generic Reading function. It must be fullfilled with either * : I2C or SPI reading functions * Input : Register Address * Output : Data REad * Return : None *******************************************************************************/ u8_t LIS3DH_ReadReg(u8_t Reg, u8_t* Data) { //To be completed with either I2c or SPI reading function *Data = Single_Read_LIS3DH(Reg); return 1; } /******************************************************************************* * Function Name : LIS3DH_WriteReg * Description : Generic Writing function. It must be fullfilled with either * : I2C or SPI writing function * Input : Register Address, Data to be written * Output : None * Return : None *******************************************************************************/ u8_t LIS3DH_WriteReg(u8_t WriteAddr, u8_t Data) { Single_Write_LIS3DH(WriteAddr,Data); return 1; } /* Private functions ---------------------------------------------------------*/ /******************************************************************************* * Function Name : LIS3DH_GetWHO_AM_I * Description : Read identification code by WHO_AM_I register * Input : Char to empty by Device identification Value * Output : None * Return : Status [value of FSS] *******************************************************************************/ status_t LIS3DH_GetWHO_AM_I(u8_t* val){ if( !LIS3DH_ReadReg(LIS3DH_WHO_AM_I, val) ) return MEMS_ERROR; return MEMS_SUCCESS; } /******************************************************************************* * Function Name : LIS3DH_GetStatusAUX * Description : Read the AUX status register * Input : Char to empty by status register buffer * Output : None * Return : Status [MEMS_ERROR, MEMS_SUCCESS] *******************************************************************************/ status_t LIS3DH_GetStatusAUX(u8_t* val) { if( !LIS3DH_ReadReg(LIS3DH_STATUS_AUX, val) ) return MEMS_ERROR; return MEMS_SUCCESS; } /******************************************************************************* * Function Name : LIS3DH_GetStatusAUXBIT * Description : Read the AUX status register BIT * Input : LIS3DH_STATUS_AUX_321OR, LIS3DH_STATUS_AUX_3OR, LIS3DH_STATUS_AUX_2OR, LIS3DH_STATUS_AUX_1OR, LIS3DH_STATUS_AUX_321DA, LIS3DH_STATUS_AUX_3DA, LIS3DH_STATUS_AUX_2DA, LIS3DH_STATUS_AUX_1DA * Output : None * Return : Status of BIT [MEMS_ERROR, MEMS_SUCCESS] *******************************************************************************/ status_t LIS3DH_GetStatusAUXBit(u8_t statusBIT, u8_t* val) { u8_t value; if( !LIS3DH_ReadReg(LIS3DH_STATUS_AUX, &value) ) return MEMS_ERROR; if(statusBIT == LIS3DH_STATUS_AUX_321OR){ if(value &= LIS3DH_STATUS_AUX_321OR){ *val = MEMS_SET; return MEMS_SUCCESS; } else{ *val = MEMS_RESET; return MEMS_SUCCESS; } } if(statusBIT == LIS3DH_STATUS_AUX_3OR){ if(value &= LIS3DH_STATUS_AUX_3OR){ *val = MEMS_SET; return MEMS_SUCCESS; } else{ *val = MEMS_RESET; return MEMS_SUCCESS; } } if(statusBIT == LIS3DH_STATUS_AUX_2OR){ if(value &= LIS3DH_STATUS_AUX_2OR){ *val = MEMS_SET; return MEMS_SUCCESS; } else{ *val = MEMS_RESET; return MEMS_SUCCESS; } } if(statusBIT == LIS3DH_STATUS_AUX_1OR){ if(value &= LIS3DH_STATUS_AUX_1OR){ *val = MEMS_SET; return MEMS_SUCCESS; } else{ *val = MEMS_RESET; return MEMS_SUCCESS; } } if(statusBIT == LIS3DH_STATUS_AUX_321DA){ if(value &= LIS3DH_STATUS_AUX_321DA) { *val = MEMS_SET; return MEMS_SUCCESS; } else{ *val = MEMS_RESET; return MEMS_SUCCESS; } } if(statusBIT == LIS3DH_STATUS_AUX_3DA){ if(value &= LIS3DH_STATUS_AUX_3DA){ *val = MEMS_SET; return MEMS_SUCCESS; } else{ *val = MEMS_RESET; return MEMS_SUCCESS; } } if(statusBIT == LIS3DH_STATUS_AUX_2DA){ if(value &= LIS3DH_STATUS_AUX_2DA){ *val = MEMS_SET; return MEMS_SUCCESS; } else{ *val = MEMS_RESET; return MEMS_SUCCESS; } } if(statusBIT == LIS3DH_STATUS_AUX_1DA){ if(value &= LIS3DH_STATUS_AUX_1DA){ *val = MEMS_SET; return MEMS_SUCCESS; } else{ *val = MEMS_RESET; return MEMS_SUCCESS; } } return MEMS_ERROR; } /******************************************************************************* * Function Name : LIS3DH_SetODR * Description : Sets LIS3DH Output Data Rate * Input : Output Data Rate * Output : None * Return : Status [MEMS_ERROR, MEMS_SUCCESS] *******************************************************************************/ status_t LIS3DH_SetODR(LIS3DH_ODR_t ov){ u8_t value; if( !LIS3DH_ReadReg(LIS3DH_CTRL_REG1, &value) ) return MEMS_ERROR; value &= 0x0f; value |= ov<<LIS3DH_ODR_BIT; if( !LIS3DH_WriteReg(LIS3DH_CTRL_REG1, value) ) return MEMS_ERROR; return MEMS_SUCCESS; } /******************************************************************************* * Function Name : LIS3DH_SetTemperature * Description : Sets LIS3DH Output Temperature * Input : MEMS_ENABLE, MEMS_DISABLE * Output : None * Note : For Read Temperature by LIS3DH_OUT_AUX_3, LIS3DH_SetADCAux and LIS3DH_SetBDU functions must be ENABLE * Return : Status [MEMS_ERROR, MEMS_SUCCESS] *******************************************************************************/ status_t LIS3DH_SetTemperature(State_t state){ u8_t value; if( !LIS3DH_ReadReg(LIS3DH_TEMP_CFG_REG
评论
    相关推荐
    • Proteus7.12.rar
      Proteus7.12完美破解版.rar电路仿真软件很好用可以仿真单片数字模拟电路
    • VHDL 的实例程序,共44个.rar
      经典VHDL 的实例程序,共44个!要下载的尽快
    • USBtoRS232Driver.rar
      USB转串口驱动程序,可以用在笔记本电脑上,方便的通过串口给单片机下载程序!
    • 模糊控制程序.rar
      模糊PID控制程序的源码,是作业,有讲解,
    • 串口编程源代码.rar
      这是本人最近几年所编写的串行通讯的代码集,可以供大家参考学习。
    • DELTA_PLC.rar
      台达PLC Modbus协议通信dll com控件
    • hongwaigooog.rar
      单片机红外遥控最全的资料,包含很多当前电视遥控专用芯片的解码方式,C语言和汇编语言编写的解码范例程序,看完了你就会了!
    • MF500绝密.rar
      非接触式IC卡开发板源程序,包括原理图/PCB图;源程序在KEIL环境下编译,打开压缩包后直接点击PRJ文件,即可编译使用。 这是个保密文件,做Mifare one卡开发人基本上都用过到这个源代码。
    • 20078251299410.rar
      C51实用程序(45个) I/O、定时器、中断、看门狗、计数器、软件AD、VB串口、93c06驱动、24c02系列驱动、7219、20045、软件陷阱、串口中断、码值转换、AVR通讯、IIC、DS1302、DS1820、SPI、1602、12232、12864、T6963、1330、PC键、键盘输入法、智能化、飞机游戏、贪吃蛇、多级菜单实例等
    • mcudesign.rar
      单片机设计,毕业设计 16×16点阵(滚动显示)论文+程序 cdma通信系统中的接入信道部分进行仿真与分析 LED显示屏动态显示和远程监控的实现 MCS-51单片机温度控制系统 USB接口设计 毕业设计(论文)OFDM通信系统基带数据 仓库温湿度的监测系统 单片机串行通信发射机 单片机课程设计__电子密码锁报告 单片机控制交通灯 电动智能小车(完整论文 电气工程系06届毕业设计开题报告 电信运营商收入保障系统设计与实现 电子设计大赛点阵电子显示屏(A题 电子时钟 火灾自动报警系统设计 基于GSM短信模块的家庭防盗报警系统 基于GSM模块的车载防盗系统设计 TC35i 资料 基于网络的虚拟仪器测试系统 门控自动照明电路 全遥控数字音量控制的D类功率放大器 数控直流稳压电源完整论文 数字密码锁设计 数字抢答器(数字电路) 数字时钟 水箱单片机控制系统 同步电机模型的MATLAB仿真 温度监控系统的设计 用单片机控制直流电机 用单片机实现温度远程显示 智能家用电热水器控制器 智能型充电器电源和显示的设计 自动加料机控制系统