完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
这个程序能够实现STM32F1系列的单片机简单操作VL53L0x距离传感器,能够通过串口输出测量的距离。距离也是比较准确的。
但是整个程序比较简单,只能实现简单的测量。 //主函数// while(1) { VL53L0X_Write_Byte(VL53L0X_REG_SYSRANGE_START, 0x01); while(cnt < 100) { delay_ms(10); val = VL53L0X_Read_Byte(VL53L0X_REG_RESULT_RANGE_STATUS); if( val & 0x01) break; cnt++; } if( val & 0x01) { printf("rn readey rn"); } else { printf("rn not readey rn"); } VL53L0X_Read_Len(VL53L0X_Add, 0x14 , 12, gbuf); count[0] = makeuint16(gbuf[7], gbuf[6]); count[1] = makeuint16(gbuf[9], gbuf[8]); count[2] = makeuint16(gbuf[11], gbuf[10]); DeviceRangeStatusInternal = ((gbuf[0] & 0x78) >> 3); printf("rn ambient count = %4d signal count = %4d distance = %4d status = %d ",count[0],count[1],count[2]-20,DeviceRangeStatusInternal); delay_ms(500); } //IO口定义// GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); //使能AFIO时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //先使能外设IO PORTA时钟 RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE ); //使能GPIOB时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15; //端口配置 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz GPIO_Init(GPIOA, &GPIO_InitStructure); //根据设定参数初始化GPIOA GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//禁止JTAG,从而PA15可以做普通IO使用,否则PA15不能做普通IO!!! GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ; //推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_SetBits(GPIOB,GPIO_Pin_6|GPIO_Pin_7); //PB6,PB7 输出高 VL53L0X_Xshut=0;//失能VL53L0X delay_ms(30); VL53L0X_Xshut=1;//使能VL53L0X,让传感器处于工作 //VL53L0x宏定义// #define VL53L0X_REG_IDENTIFICATION_MODEL_ID 0xc0 #define VL53L0X_REG_IDENTIFICATION_REVISION_ID 0xc2 #define VL53L0X_REG_PRE_RANGE_CONFIG_VCSEL_PERIOD 0x50 #define VL53L0X_REG_FINAL_RANGE_CONFIG_VCSEL_PERIOD 0x70 #define VL53L0X_REG_SYSRANGE_START 0x00 #define VL53L0X_REG_RESULT_INTERRUPT_STATUS 0x13 #define VL53L0X_REG_RESULT_RANGE_STATUS 0x14 #define VL53L0X_Add 0x29 这是基于http://www.51hei.com/bbs/dpj-76363-1.html和正点原子IIc程序作为参考和修改的。 本人对于VL53L0x寄存器资料也是找了很久,但是都没有找到关于寄存器配置,大多数就是介绍API函数的。 所以对于这个程序VL53L0.h头文件里的宏定义不是很了解,也有很多疑惑,需要其他的大佬们帮忙解答。 接下来本人也会使用API库函数来操作这个传感器,会持续更新。。。 本人不知道在哪上传程序,如果有需要的可以私信给我,我把程序发给你。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1800 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1629 浏览 1 评论
1096 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
735 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1684 浏览 2 评论
1944浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
744浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
578浏览 3评论
601浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
564浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 01:49 , Processed in 0.818528 second(s), Total 48, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号