单片机解密VL53l0x激光测距--单片机程序
单片机解密还有一个是ST 的
- 单片机解密#include "stm32f10x.h" //stm32头文件
- 单片机解密#include "usart.h"
- 单片机解密#include "sys.h"
- #include "delay.h"
- #include "led.h"
- #include "vl53l0x.h"
- #include "vl53l0x_it.h"
- /******************************************************************************/
- extern VL53L0X_Dev_t vl53l0x_dev;//设备I2C数据参数
- extern u8 alarm_flag;
- /******************************************************************************/
- int main(void)
- {
- u32 i;
- u8 mode;
- VL53L0X_RangingMeasurementData_t RangingMeasurementData;
-
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//分组2
- uart_init(115200); //串口1
- delay_init();
- LED_Init();
- delay_ms(200);
-
- if(vl53l0x_init(&vl53l0x_dev))//vl53l0x初始化
- printf("VL53L0X_init Error!!!\r\n");
- else
- printf("VL53L0X_init OK\r\n");
-
- mode=3; //高速模式,写错会导致测量速度慢
- vl53l0x_interrupt_start(&vl53l0x_dev,mode);
-
- while(1)
- {
- //VL53L0X_ClearInterruptMask(dev,0);//清除VL53L0X中断标志位
- //status = VL53L0X_StopMeasurement(dev); //停止测量
-
- if(alarm_flag==1)//触发中断
- {
- alarm_flag=0;
- VL53L0X_GetRangingMeasurementData(&vl53l0x_dev,&RangingMeasurementData);//获取测量距离,并且显示距离
- printf("d: %3d mm\r\n",RangingMeasurementData.RangeMilliMeter);
- VL53L0X_ClearInterruptMask(&vl53l0x_dev,0);//清除VL53L0X中断标志位
- }
- i++;
- if(i>=0x1fffff)
- {
- i=0;
- LED0=!LED0;
- }
- }
- }
- /***************************************************************************/
- /***************************************************************************/
复制代码
单片机源程序如下:
- /*****************************
- 更新日期2017年2月28日
- 模拟串口参考stc官方程序
- 来自arduino实例
- 使用11.0592MHz内部RC;
- VL53L0X:
- SCL-->P3.3
- SDA-->P3.2
- 串口:
- P3.0 RXD
- P3.1 TXD
- *******************************/
- #include"stc.h"
- #include"i2c.h"
- #include"VL53L0X.h"
- #include "intrins.h"
- #define uchar unsigned char
- #define uint unsigned int
- /***********全局变量定义**************/
- bit flag;
- uchar val1;
- short val_s;
- uchar gbuf[16];
- uint acnt ;
- uint scnt;
- uint dist ;
- uchar DeviceRangeStatusInternal;
- #define BAUD 0xFE80 // 9600bps @ 11.0592MHz
- //sfr AUXR = 0x8E;
- sbit RXB = P3^0; //define UART TX/RX port
- sbit TXB = P3^1;
- typedef bit BOOL;
- typedef unsigned char BYTE;
- typedef unsigned int WORD;
- BYTE TBUF,RBUF;
- BYTE TDAT,RDAT;
- BYTE TCNT,RCNT;
- BYTE TBIT,RBIT;
- BOOL TING,RING;
- BOOL TEND,REND;
- void UART_INIT();
- void delay()
- {
- unsigned char i;
- for(i=0; i<100; i++);
- }
- void Delay1ms() //@11.0592MHz
- {
- unsigned char i, j;
- _nop_();
- i = 11;
- j = 190;
- do
- {
- while (--j);
- } while (--i);
- }
- void delay_ms(unsigned int time)
- {
- unsigned char
- i;
- for(i=1; i<=time; i++)
- Delay1ms();
- }
|