STM32f103 读LIS302DL传感器X、Y、Z轴向寄存器

来源:互联网 发布:coc黑胖数据 编辑:程序博客网 时间:2024/04/19 12:18

/*

读LIS302DL传感器X、Y、Z轴向寄存器

*/

@main.c#include "stm32f10x.h"#include "lcd.h"#include "stdio.h"#include "main.h"#include "mems.h"#include "i2c.h"#include "math.h"u32 DelayTiming = 0;int main(void){    u8 str[20];    u8 *ptr;    SysTick_Config(SystemCoreClock/1000);    STM3210B_LCD_Init();    LCD_Clear(White);    i2c_init();    LIS302DL_Config();    LCD_SetTextColor(White);    LCD_SetBackColor(Blue);    LCD_ClearLine(Line0);    LCD_ClearLine(Line1);    LCD_ClearLine(Line2);    LCD_ClearLine(Line3);    LCD_ClearLine(Line4);    LCD_DisplayStringLine(Line1,(u8*)"     MEMS DEMO      ");    //    if(LIS302DL_Check() == 1){        LCD_DisplayStringLine(Line3, (u8 *)" MEMS STATUS: OK");    }else{        LCD_DisplayStringLine(Line3, (u8 *)" MEMS STATUS: ERROR");                  }    LCD_SetTextColor(Blue);    LCD_SetBackColor(White);    while(1){        ptr = Lis302DL_Output();        snprintf((char *)str, sizeof(str), " X Reg:%d    ", ptr[0]);        LCD_DisplayStringLine(Line6,str);        snprintf((char *)str, sizeof(str), " Y Reg:%d    ", ptr[1]);        LCD_DisplayStringLine(Line7,str);        snprintf((char *)str, sizeof(str), " Z Reg:%d    ", ptr[2]);        LCD_DisplayStringLine(Line8,str);        Delay_Ms(200);    }}//void Delay_Ms(u32 nTime){    DelayTiming = nTime;    while(DelayTiming != 0);}
@mems.c#include "stm32f10x.h"#include "i2c.h"#include "mems.h"#include "main.h"u8 alz[3] ;//void LIS302DL_Write(unsigned char reg,unsigned char info){       I2CStart();     I2CSendByte(0x38);      I2CWaitAck();         I2CSendByte(reg);      I2CWaitAck();     I2CSendByte(info);     I2CWaitAck();    I2CStop();}//uint8_t LIS302DL_Read(uint8_t address){    unsigned char val;    I2CStart();     I2CSendByte(0x38);      I2CWaitAck();         I2CSendByte(address);      I2CWaitAck();     I2CStart();    I2CSendByte(0x39);     I2CWaitAck();    val = I2CReceiveByte();     I2CSendNotAck();    I2CStop();    return(val);}//u8* Lis302DL_Output(void){    if((LIS302DL_Read(0x27) & 0x08) != 0){        alz[0] = (LIS302DL_Read(0x29));  //x        alz[1] = (LIS302DL_Read(0x2B));  //y        alz[2] = (LIS302DL_Read(0x2D));  //z    }    return alz;}//void LIS302DL_Config(void){    LIS302DL_Write(CTRL_REG1,0x47);    LIS302DL_Write(CTRL_REG2,0x00);    LIS302DL_Write(CTRL_REG3,0xC1);    LIS302DL_Write(FF_WU_THS_1,0x28);           LIS302DL_Write(FF_WU_DURATION_1,40);            LIS302DL_Write(FF_WU_CFG_1,0x10);       }//uint8_t LIS302DL_Check(void){    if(LIS302DL_Read(0x0f)){        return 1;    }else{        return 0;    }}
@mems.h#ifndef __MEMS_H#define __MEMS_H#include "stm32f10x.h"#define CTRL_REG1           0x20#define CTRL_REG2           0x21#define CTRL_REG3           0x22#define FF_WU_THS_1         0x32#define FF_WU_DURATION_1    0x33#define FF_WU_CFG_1         0x30#define STATUS_REG          0x27uint8_t LIS302DL_Check(void);void LIS302DL_Config(void);u8*  Lis302DL_Output(void);#endif
@main.h#ifndef __MAIN_H#define __MAIN_Hvoid Delay_Ms(uint32_t nTime);#endif
0 0
原创粉丝点击