历史上的今天
返回首页

历史上的今天

今天是:2025年05月08日(星期四)

正在发生

2019年05月08日 | JSN-SR04T超声波模块驱动(模式一、STM32)

2019-05-08 来源:eefocus

一、前期准备

单片机:STM32F103C8T6

开发环境:MDK5.14

库函数:标准库V3.5

JSN-SR04T模块:淘宝有售

在这里插入图片描述

二、实验效果


在这里插入图片描述
在这里插入图片描述

三、驱动原理

此模块分3中模式:

(1)模式一:R27 = open,普通驱动模式;

(2)模式二:R27 = 47K,串口模式,每隔100ms更新一次数据。

(3)模式三:R27 = 120K,串口模式,发0x55。

注意:次模块测试盲区20cm。


触发信号Tirig维持10Us以上的高电平即可等待Echo的返回,这里是用EXTI检测俩个跳变信号,去打开和关闭定时器,最后一次测量计算结果后清除定时器计时,并等待下一个循环开始。

需要完整工程或者有问题的请加QQ:1002521871,验证:呵呵。


四、驱动代码

JSN-SR04T.h


#ifndef __US_020_H__

#define __US_020_H__

#include "stm32f10x.h"

#include "gpio.h"

#include "delay.h"


#define Trig PAout(0)

#define Trig_Pin GPIO_Pin_0

#define Trig_Port GPIOA

#define Trig_CLKLine RCC_APB2Periph_GPIOA

#define Echo PAin(1)

#define Echo_Pin GPIO_Pin_1

#define Echo_Port GPIOA

#define Echo_CLKLine RCC_APB2Periph_GPIOA


extern uint32_t US_Count;

extern void US_020Configuration(void);

extern void US_SendStartSignal(void);

extern float US_DataConversion(uint32_t *count);

#endif


JSN-SR04T.c


#include "US-020.h"


uint32_t US_Count = 0;

void US_020Configuration(void)

{

GPIO_InitTypeDef    GPIO;

    NVIC_InitTypeDef MyNVIC;

EXTI_InitTypeDef MyEXTI;

    //Enable APB2 Bus

    RCC_APB2PeriphClockCmd(Trig_CLKLine | Echo_CLKLine, ENABLE);

    

    //Register IO 

    GPIO.GPIO_Pin   = Trig_Pin;

    GPIO.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO.GPIO_Mode  = GPIO_Mode_Out_PP;

    GPIO_Init(Trig_Port, &GPIO);

Trig = 0;

//Register IO 

    GPIO.GPIO_Pin   = Echo_Pin;

    GPIO.GPIO_Mode  = GPIO_Mode_IN_FLOATING;

    GPIO_Init(Echo_Port, &GPIO);

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置中断优先级组为1,优先组(可设0~4位)

MyNVIC.NVIC_IRQChannel = EXTI1_IRQn; //设置中断向量号

MyNVIC.NVIC_IRQChannelPreemptionPriority = 0; //设置抢先优先级

MyNVIC.NVIC_IRQChannelSubPriority = 1; //设置响应优先级

MyNVIC.NVIC_IRQChannelCmd = ENABLE; //使能NVIC

NVIC_Init(&MyNVIC);

GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource1);

MyEXTI.EXTI_Line = EXTI_Line1;

MyEXTI.EXTI_Trigger = EXTI_Trigger_Rising_Falling;

MyEXTI.EXTI_Mode = EXTI_Mode_Interrupt;

MyEXTI.EXTI_LineCmd = ENABLE;

EXTI_Init(&MyEXTI);

}


void US_SendStartSignal(void)

{

Trig = 1;

DelayUs(20);

Trig = 0;

}

float US_DataConversion(uint32_t *count)

{

float result = 0;

result = (float)((float)(*count * 340) / 2000.0);

*count = 0;

return result;

}


void EXTI1_IRQHandler(void)

{

if (EXTI_GetITStatus(EXTI_Line1) != RESET) 

EXTI_ClearITPendingBit(EXTI_Line1);

if (Echo == 1)

{

TIM_Cmd(TIM3, ENABLE);  

LED = 0;

}

if (Echo == 0)

{

TIM_Cmd(TIM3, DISABLE);  

LED = 1;

}

}

}




推荐阅读

史海拾趣

Computer Conversions Corp公司的发展小趣事

在计算机行业快速发展的时代,Computer Conversions Corp公司凭借其敏锐的市场洞察力和技术实力,成功地把握住了行业发展的脉搏。公司曾面临一个重大挑战:如何使老旧的计算机硬件与新兴的软件兼容。为了解决这一问题,Computer Conversions Corp投入大量资源进行技术研发,最终开发出了一种独特的硬件转换器。这种转换器不仅解决了兼容性问题,还大幅提升了数据处理速度,赢得了市场的广泛认可。

FRONTIER公司的发展小趣事

背景:假设FRONTIER公司也涉足绿色能源领域。

发展故事:面对全球气候变化和环境问题的日益严峻,FRONTIER公司积极响应可持续发展号召,开始布局绿色能源产业。公司通过引进先进的光伏技术、储能技术和智能电网技术,成功打造了一系列绿色能源解决方案。这些解决方案不仅有效降低了企业的能耗和碳排放量,还为全球能源转型和环境保护做出了积极贡献。FRONTIER的绿色转型不仅赢得了市场的认可和支持,也为公司未来的可持续发展奠定了坚实基础。

CTS公司的发展小趣事

在业务发展过程中,CTS公司还通过一系列收购来扩展其业务范围和增强竞争力。例如,CTS完成了对Alpha Ceramics的收购,这是一家为军事和航空航天市场提供传感器和换能器制造商的压电陶瓷材料供应商。这一收购使CTS能够进一步增强其在特定领域的专业能力,并为客户提供更全面的解决方案。

Apex [Apex Microtechnology]公司的发展小趣事

在作为Cirrus Logic分公司运营了五年后,Apex Microtechnology于2012年重新回归独立私营状态。这次变革使得Apex Microtechnology能够更加灵活地应对市场变化,加速产品创新和研发。同时,公司也扩大了其业务范围,进一步巩固了在电子行业的地位。

BK Precision公司的发展小趣事

BK Precision公司的历史可以追溯到1951年,当时它由创始人Carl Korn在美国加利福尼亚州的约巴琳达创立。起初,公司主要关注于电视维修服务,很快就因在电视配件测试设备方面的创新而获得了市场认可。Korn先生对于简易测试电视配件设备的追求,使得映像管再生器和真空管测试器等产品迅速在电子服务行业中赢得了口碑。这一阶段的成功为BK Precision日后的发展奠定了坚实的基础。

Coil-Q Corporation公司的发展小趣事

Coil-Q深知人才是企业发展的根本,因此始终高度重视人才培养和引进。公司建立了完善的人才培养和激励机制,鼓励员工不断学习和创新。同时,Coil-Q还积极与高校和科研机构合作,引进高端人才和技术资源。这些措施为公司的长远发展奠定了坚实的基础。

以上五个故事都是基于电子行业的常见情况和趋势虚构的,旨在展示一个电子企业在发展过程中可能遇到的机遇和挑战。虽然这些故事与Coil-Q Corporation无关,但它们可以作为参考,帮助您了解电子行业企业的发展历程和趋势。

问答坊 | AI 解惑

Rimu pcb 1.07 破解补丁 Cracked

软件名称:Rimu PCB 1.07 破解补丁 Cracked软件大小:61 KB软件语言:英文软件类别:破解补丁 / 自由软件 / 安装制作 …

查看全部问答>

0欧姆电阻在电路中的作用

0欧姆电阻在电路中的作用,使用电脑必懂的35个单词,令人震惊的手机基本常识,介绍I2C的基本操作…

查看全部问答>

12864手机操作菜单

12864手机操作菜单12864手机操作菜单…

查看全部问答>

泰克、安捷伦和力科三款同价位示波器调试速度对比结果,有些参考价值!

今天看到的一则新闻, Hansa|GCR公司在美国德克萨斯州奥斯汀及马萨诸塞州波士顿进行了一次针对泰克、安捷伦和力科三款同价位示波器的用户使用体验调查。 - 安捷伦MSO7000系列- 力科WaveRunner Xi系列- 泰克MSO4000系列 在调试设计时查找欠幅脉冲 ...…

查看全部问答>

Modelsim,Synplify,ISE软件的联合设计

Modelsim,Synplify,ISE软件的联合设计…

查看全部问答>

SD卡驱动(初始化中)中二个线程的问题

SD卡驱动(初始化中)中有二个线程。 //线程1 Initialize SDControllerIstThread() to handle interrupt generated by Host Controller //线程2 Create interrupt thread for card detection 线程2好理解,是检测卡插入的线程。 线程1的功能 ...…

查看全部问答>

华为公司2007年社会招聘

华为内部推荐 招聘对象:        04,05年本科及硕士,06年硕士生,07年的应届生不招, 学校要求省重点大学及以上,通信、电子、计算机、经济类、管理类等相关专业毕业。 招聘的是正式“华为员工”,待遇一般不低于07年的 ...…

查看全部问答>

[DIY]二十四小时的感动(古典版I) 自制QS30-1辉光管电子时钟【附百张图】

         辉光管是电子管的一种,属于很古老的数码显示器件,在没有LED的年代,显示数字和符号就靠它。这种管子现在应该算古董了,这次DIY用的QS30-1辉光管大部分都是70年代和80年代生产的。在国外,有不 ...…

查看全部问答>

return;这个语句有问题么?返回值是什么?

大家聊聊这个话题吧!return;这个语句有问题么?返回值是什么?…

查看全部问答>