资源简介
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的智能小型机械臂设计
- 下一篇:合格证打印
相关资源
- STM32F103RC+ADC+DMA多通道采样LCD显示
- I2C读写AT24C02 基于STM32F103 cube116540
- 基于stm32f103ve的程序——跑马灯实验
- 基于STM32RCT6的步进电机驱动程序
- stm32f407上的两个can发送和接收例程
- STM32 led 时钟
- STM32 2.4G通信例程
- 直流无刷电机方波驱动 stm32 例程代码
- STM32中文资料
- STM32蓝牙和串口程序
- STM32f103超声波模块例程
- stm32f103c8t6 4 oled.rar
- stm32f030 IAP Demo(原创)
- STM32基于rt_thread操作系统的SDHC卡文件
- DAS1302蜂鸣 独立按键 闹钟设定 IIC存储
- NRF24L01实现51与STM32双向通讯
- STM32F103 串口程序(完整版)
- stm32 ds18b20 温度传感器 测试通过
- stm32官方例程
- STM32F103定时器中断程序
- [免费]基于stm32f103ze 的OLED驱动代码
- STM32F103RBT6驱动UC1698控制芯片的160160黑
- STM32F103 DS18B20 V3.5.0固件库驱动程序工
- STM32定时器使用入门。看了这个程序会
- SIM908 SDIO FSMC STM32 FIFO
- STM32F103 CC2500完整驱动(模拟SPI)
- AD7606采集程序
- stm32 用SPI 方式读写 SDHC
- stm32通过DMA方式采集ADC数据
- 意法半导体STM全系列微控制器STM32ST
评论
共有 条评论