资源简介
STM32F03通过模拟IIC读取LIS3DH 解析数据获取加速度和角度。
串口1输出电脑串口助手,直接用即可,代码规范,好移植
STM32F03通过模拟IIC读取LIS3DH 解析数据获取加速度和角度。
串口1输出电脑串口助手,直接用即可,代码规范,好移植
代码片段和文件信息
//测试加速度传感器部分,实现数据的解析、透传、配置
//qq 363530137
#include “delay.h“
#include “sys.h“
#include “gps.h“
#include “usart.h“
#include “io.h“
#include “string.h“
#include
#include “speed.h“
#include “iic.h“
#include “li_exit.h“
#include “math.h“
__align(4) u8 dtbuf[50]; //打印缓存器
u8 TEMP_BUF[1024];//暂存数组
AxesRaw_t ddata;
void lis3dhinit(void)
{
unsigned char response=0;
response = LIS3DH_SetODR(LIS3DH_ODR_100Hz);
sprintf((char *)dtbuf“设置采样率:100Hz%d\r\n“response);
USART1_Send_String(dtbuf);
response = LIS3DH_SetMode(LIS3DH_NORMAL);
sprintf((char *)dtbuf“设置工作模式:NORMAL%d\r\n“response);
USART1_Send_String(dtbuf);
response = LIS3DH_SetFullScale(LIS3DH_FULLSCALE_2);
sprintf((char *)dtbuf“设置量程:FULLSCALE_2%d\r\n“response);
USART1_Send_String(dtbuf);
response = LIS3DH_SetAxis(LIS3DH_X_ENABLE | LIS3DH_Y_ENABLE | LIS3DH_Z_ENABLE);
sprintf((char *)dtbuf“使能XYZ轴:XYZ_ENABLE%d\r\n“response);
USART1_Send_String(dtbuf);
}
void LIS3DH_get_angle(float acc_x float acc_y float acc_z)
{
float angle_xangle_yangle_z;
//换算为加速度
angle_x=acc_x*4/65536*1000;
angle_y=acc_y*4/65536*1000;
angle_z=acc_z*4/65536*1000;
sprintf((char *)dtbuf“加速度: [X]%dmg\r\n“(int)((float)angle_x));
USART1_Send_String(dtbuf);delay_ms(200);
sprintf((char *)dtbuf“加速度: [Y]%dmg\r\n“(int)((float)angle_y));
USART1_Send_String(dtbuf);delay_ms(200);
sprintf((char *)dtbuf“加速度: [Z]%dmg\r\n“(int)((float)angle_z));
USART1_Send_String(dtbuf);delay_ms(200);
//换算角度
angle_x = (atan(angle_x / sqrt(angle_y*angle_y + angle_z*angle_z)))*180/3.14;
angle_y = (atan(angle_y / sqrt(angle_x*angle_x + angle_z*angle_z)))*180/3.14;
angle_z = (atan(angle_z / sqrt(angle_x*angle_x + angle_y*angle_y)))*180/3.14;
sprintf((char *)dtbuf“角度: [X]%d°\r\n“(int)((float)angle_x));
USART1_Send_String(dtbuf);delay_ms(200);
sprintf((char *)dtbuf“角度: [Y]%d°\r\n“(int)((float)angle_y));
USART1_Send_String(dtbuf);delay_ms(200);
sprintf((char *)dtbuf“角度: [Z]%d°\r\n“(int)((float)angle_z));
USART1_Send_String(dtbuf);delay_ms(200);
}
int main(void)
{
int lisid=0;
unsigned char lisidtemp=0;
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断分组配置
USART1_Configuration(115200);
IO_init();
IIC_Init();
delay_ms(10);
lis3dhinit();
delay_ms(10);
LIS3DH_GetWHO_AM_I(&lisidtemp); // 读取传感器内部ID
lisid=(int)lisidtemp;
sprintf((char *)dtbuf“LIS3DH ID:0x%X\r\n“lisid);
USART1_Send_String(dtbuf);
delay_ms(50);
while(1)
{
LIS3DH_GetAccAxesRaw(&ddata); // 读取加速度初始值
delay_ms(10);
sprintf((char *)dtbuf“传感器原始值: x=%d y=%d z=%d\r\n“ddata.AXIS_Xddata.AXIS_Yddata.AXIS_Z);
USART1_Send_String(dtbuf);
delay_ms(200);
LIS3DH_get_angle(ddata.AXIS_X ddata.AXIS_Y ddata.AXIS_Z);//解析
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5846 2019-04-11 11:02 IIC\iic.c
文件 863 2019-04-11 11:02 IIC\iic.h
目录 0 2019-04-11 11:02 IIC
文件 51187 2019-04-11 11:02 SPEED\speed.c
文件 21292 2019-04-10 14:38 SPEED\speed.h
目录 0 2019-04-11 11:02 SPEED
文件 2964 2019-04-11 14:35 main.c
----------- --------- ---------- ----- ----
82152 7
- 上一篇:基于STM32的智能小型机械臂设计
- 下一篇:合格证打印
相关资源
- 基于STM32的智能小型机械臂设计
- STM32f407 SDcard
- 软件模拟IIC主从机
- 基于STM32步进电机红外代码循迹小车主
- STM32F103RBT6+DM9000CEP+UIP Telnet功能实现工
- STM32F103VCT6+W5500 telnet功能实现
- 真正的标准C写的ECC加密算法
- YL-26 STM32最小系统使用说明
- stm32 超声波避障小车1
- STM32F4x GT911配置表
- USB调试助手(单片机多功能调试助手
- STM32驱动CH452
- Speex 库在 STM32F103xxxSTM32F101xxx 上使用的
- IIC总线读写AT24C02BEEPROM源程序 有详细
- stm32ov7670摄像头实验黑白二值化
- 用于rosserial-stm32的库RosLibs
- 嵌入式_STM32_期末复习.zip
- 51单片机1602+ADIIC+按键
- SHT20温湿度传感器程序gpio模拟I2C+中文
- TSL2561 测试代码
- STM32 模拟SPI 一主多从
- STC15+sht30
- stm32输出锯齿波,频率可调
- STM32F103四个通用定时器编码器模式配
- stm32+MAX7219数码管模块显示程序 spi接口
- stm32和rfid读卡器模块
- LD3320语音识别模块stm32例程调试
- AN3155 STM32 bootloader协议ISP
- 数据手套数据包格式
- STM32短信接收发送TEXT
评论
共有 条评论