北醒激光模块TFmini——STM32驱动程序(STM32F103C8T6)

news/2024/10/30 21:27:52/

背景:该激光模块属于精度比较高的激光测距模块,使用方便。

代码地址:yutian_sundry_zip/TFMini_Driver.zip at master · W-yt/yutian_sundry_zip (github.com)

平台:

硬件:STM32F103C8T6

通信:串口3与激光模块通信;串口1用于输出距离信息(到串口助手)

硬件连接:

串口配置:(采用串口接收中断 尝试DMA接收时发现无法进入串口空闲中断)

void vUart3Config(void)
{  GPIO_InitTypeDef 	GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef 	NVIC_InitStructure;DMA_InitTypeDef		DMA_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//USART3_RX	  GPIOB.11		(using)GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOB, &GPIO_InitStructure);  //USART3_TX   GPIOB.10GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_Init(GPIOB, &GPIO_InitStructure);USART_InitStructure.USART_BaudRate = 115200;USART_InitStructure.USART_WordLength = USART_WordLength_8b;USART_InitStructure.USART_StopBits = USART_StopBits_1;USART_InitStructure.USART_Parity = USART_Parity_No;USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;USART_Init(USART3, &USART_InitStructure);USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);USART_Cmd(USART3, ENABLE); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);//	//DMA——RX
//	USART_DMACmd(USART3,USART_DMAReq_Rx,ENABLE);
//	
//	DMA_DeInit(DMA1_Channel3);
//	DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)(&(USART3->DR));
//	DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)USART3_DMA_rece_buffer;
//	DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
//	DMA_InitStructure.DMA_BufferSize = USART3_DMA_rece_buffersize;
//	DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
//	DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
//	DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
//	DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
//	DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
//	DMA_InitStructure.DMA_Priority = DMA_Priority_VeryHigh;
//	DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
//	DMA_Init(DMA1_Channel3,&DMA_InitStructure);//	NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel3_IRQn;           
//	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;          
//	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; 
//	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
//	NVIC_Init(&NVIC_InitStructure);
//	
//	DMA_ITConfig(DMA1_Channel3,DMA_IT_TC,ENABLE);
//	
//	DMA_Cmd(DMA1_Channel3,ENABLE);
}

串口中断:

uint8_t temp_data = 0;
uint8_t TFmini_low,TFmini_high = 0;
uint8_t flag = 0;
void USART3_IRQHandler(void)
{if(USART_GetITStatus(USART3,USART_IT_RXNE) != RESET){temp_data = USART_ReceiveData(USART3);if((temp_data == 0x59) && (flag == 0)){flag = 1;}else if((temp_data == 0x59) && (flag == 1)){flag = 2;}else if(flag == 2){TFmini_low = temp_data;flag = 3;}else if(flag == 3){TFmini_high = temp_data;distance = ((uint16_t)TFmini_high<<8) | ((uint16_t)TFmini_low);printf("receive once:  %d cm \r\n",distance);flag = 0;}}
}

——cloudos

——2020/3/31


http://www.ppmy.cn/news/359624.html

相关文章

c语言门铃程序,“叮咚”门铃源程序

1.实验任务 当按下开关SP1,AT89S51单片机产生“叮咚”声从P1.0端口输出到LM386,经过放大之后送入喇叭。 2.电路原理图 3.系统板上硬件连线 (1.把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区域中的SPKIN端口上; (2.在“音频放大模块”区域中的SPKOUT…

敏捷团队︱数字化领导力之敏捷团队建设

在数字化纪元的敏捷团队系列的这篇文章中&#xff0c;我们分别谈谈团队转型的问题&#xff1a;为什么需要团队更加敏捷、数字敏捷团队有效性包含了什么内涵&#xff1f;以及敏捷团队有效性如何衡量和提升。 在组织日益复杂的当今职场&#xff0c;几乎没有多少工作是可以脱离团队…

STM32F103单片机驱动蜂鸣器

蜂鸣器在电子产品中很常见&#xff0c;几乎现在的家电中都有&#xff0c;主要用来做声音提示。 蜂鸣器从材料上分可以分为压电式蜂鸣器和电磁式蜂鸣器。 压电式蜂鸣器&#xff1a; 压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。 电磁式蜂鸣器&…

单片机——蜂鸣器

1.这部分代码定义了两个新的数据类型&#xff0c;uchar和uint&#xff0c;分别表示无符号字符型和无符号整型。这里使用了#define预处理指令&#xff0c;将uchar和uint分别定义为unsigned char和unsigned int的别名&#xff0c;方便在代码中使用。 另外&#xff0c;还声明了两…

tcd1304驱动

参照 地址&#xff1a; https://tcd1304.wordpress.com/ https://zzi.io/?p1091 fM – the master clock, must run at 0.8-4 MHz SH – the shift gate ICG – the integration clear gate fm引脚主要是时钟引脚 &#xff0c;可以输出0.8到4Mhz sh ICG FM 单片机都是用定时…

蜂鸣器原理与驱动方式

目录 一、蜂鸣器简介 二、有源蜂鸣器驱动 三、无源蜂鸣器驱动 频率计算方法 四、蜂鸣器程序实现 一、蜂鸣器简介 蜂鸣器是一种一体化结构的电子讯响器&#xff0c;采用直流电压供电&#xff0c;广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机…

蜂鸣器、风扇、震动马达

本实验采用STM32MP157A 头文件&#xff1a; #ifndef __PWM_H__ #define __PWM_H__#include "stm32mp1xx_gpio.h" #include "stm32mp1xx_tim.h" #include "stm32mp1xx_rcc.h" //仨头文件里是别人封装好的地址结构体和宏定义//初始化 void pwm_i…

「精研科技」× 企企通,全球MIM龙头借助采购供应商数字化向多领域突破

近日&#xff0c;金属粉末注射成型&#xff08;MIM&#xff09;龙头企业江苏精研科技股份有限公司&#xff08;以下简称“精研科技”&#xff09;与企企通达成合作。双方将共同构建完整的采购管理和供应商协同平台&#xff0c;加强供应商管理&#xff0c;提高采购效率&#xff…