JSN-SR04T超声波模块驱动(模式三、STM32)

发布者:peon1989最新更新时间:2019-05-08 来源: eefocus关键字:JSN-SR04T  超声波模块  模式三  STM32 手机看文章 扫描二维码
随时随地手机看文章

一、前期准备

单片机:STM32F103C8T6

开发环境:MDK5.14

库函数:标准库V3.5

JSN-SR04T模块:淘宝有售

在这里插入图片描述

二、实验效果


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

三、驱动原理

此模块分3中模式:

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

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

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

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


串口二发送0x55,并接收模块数据,每隔100ms刷新次数据,串口接收数据之后,做完校验之后算出测试距离并打印出来。

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


四、驱动代码

JSN-SR04T.h


#ifndef __JSN_SR04T_H__

#define __JSN_SR04T_H__

#include "stm32f10x.h"

#include "conf.h"


extern void JSN_SR04T_SendStartSignal(void);

extern void JSN_SR04T_DealWithMess(uint8_t *RecData, uint16_t *Distance);

#endif



JSN-SR04T.c


#include "jsn_sr04t.h"


void JSN_SR04T_SendStartSignal(void)

{

USART_Send(USART2, 0x55);

}


void JSN_SR04T_DealWithMess(uint8_t *RecData, uint16_t *Distance)

{

if (SR04T_len == 4)

{

if (RecData[0] == 0xFF)

{

if (RecData[3] == ((0xFF + RecData[1] + RecData[2]) & 0x00FF))

{

*Distance = 0;

*Distance |= RecData[1] << 8;

*Distance |= RecData[2];

}

else

{

*Distance = 0;

}

}

else

{

*Distance = 0;

}

}

else

{

*Distance = 0;

}

memset(RecData, 0, RecDataLen);

}


关键字:JSN-SR04T  超声波模块  模式三  STM32 引用地址:JSN-SR04T超声波模块驱动(模式三、STM32)

上一篇:HC-SR04超声波模块驱动(STM32)
下一篇:JSN-SR04T超声波模块驱动(模式二、STM32)

推荐阅读最新更新时间:2024-11-10 19:43

STM32 usb_mem.c和usb_sil.c文件的分析
这两个c文件都还算是很简单的,先讲讲usb_mem.c这个文件。从文件名就能知道跟内存有关,这个文件主要定义了两个函数,一个读双缓冲区PMA的数据PMAToUserBufferCopy(),另一个是写数据到双缓冲区PMA,UserToPMABufferCopy。如果,当你的usb设备接收到了数据,当然数据存放在PMA中了,我们要读出数据就要用到PMAToUserBufferCopy()函数了,如果我们想要发送数据给usb主机,就要将你要发送的数据拷贝到PMA缓冲区中了,这样才能发送出去,原理跟串口类似。 /*************************************************************
[单片机]
stm32 PWM驱动舵机
今天使用stm32控制舵机,调试了许久,总结如下: 注意事项: 1.PWM周期的设定:初值,20000-1,分频=72-1。周期是:72M/72*20000=20ms 频率=50hz; 2.这个型号的舵机应该是5VPWM信号输出。而STM32是0-3.3,引起无法驱动。 更新:原来我上次无法驱动舵机是因为我把舵机的三条线搞错了,大写的尴尬 VCC——– 红 GND——– 黑 DATA——– 白 幸亏我潜意识里吧黑色的当成GND。。。。。。。。不然。。。。 故:以下程序成立。 #include pbdata.h void RCC_Configuration(void); void GPIO_Confi
[单片机]
什么是stm32看门狗?独立看门狗和窗口看门狗工作原理解析
stm32有两个看门狗,独立看门狗和窗口看门狗,其实两者的功能是类似的,只是喂狗的限制时间不同。 独立看门狗是限制喂狗时间在0-x内,x由你的相关寄存器决定。喂狗的时间不能过晚。 窗口看门狗,所以称之为窗口就是因为其喂狗时间是一个有上下限的范围内,你可以通过设定相关寄存器,设定其上限时间和下限时间。喂狗的时间不能过早也不能过晚。 窗口看门狗的 上窗口就是配置寄存器WWDG- CFR里设定的W ; 下窗口是固定的0x40; 当窗口看门狗的计数器在上窗口值之外,或是低于下窗口值都会产生复位。 图2 && 上窗口的值可以只有设定,7位二进制数最大只可以设定为127(0x7F),最小又必须大于下窗口的0x40,所以其取值范
[单片机]
什么是<font color='red'>stm32</font>看门狗?独立看门狗和窗口看门狗工作原理解析
嵌入式系统学习——STM32之按键输入
之前写了两篇关于STM32 GPIO的介绍和运用,跑马灯用到了GPIO的推挽输出,但是对于输入还是没有用到,这次就运用一下GPIO的上拉输入。实验还是和以前51做的实验一样,就是判断按键的输入,然后控制LED灯。这次没有直接配置寄存器,而是调用库函数和位操作结合。 注:每一块开发板对应电路都不相同,编写代码需要对应自己的板子,本人两个LED灯对应的GPIO为:GPIOD13和GPIOD14,并且是共阴极。两个按键对应的GPIO为:GPIOC13和GPIOE0,并且共阴极。 首先,LED初始化和上一篇博客中的跑马灯初始化一样,只需拷贝就可以了。 LED初始化函数: #include sys.h
[单片机]
嵌入式系统学习——<font color='red'>STM32</font>之按键输入
stm32官方SD卡驱动的使用注意事项
使用stm32 CUBE 库所提供的SD卡驱动的朋友们请注意: 1、适用于MMC卡,本人没测试过,mmc卡现在已经是收藏品了,谁还会用呢,so,st的团队求求你们严谨的好不好。 2、SD卡初始化过不去,因为丫在发送CMD0后,接着发送了CMD1(CMD1是mmc卡的独有指令,SD卡是不需要发CMD1的),读写驱动函数也有问题(不分情况的修改了sd卡的块大小,统统设置成了512字节),就因为这个害的本人浪费了3 天的时间,无奈只好自己重写了一遍驱动。so,如果要在项目中使用SD卡,须修改驱动程序。 3、其实好多官方例程都有bug,不要太迷信官方的东西。 总之,官方也有坑,使用须谨慎!
[单片机]
[零基础学习STM32]第四讲:UART通讯实验—控制LED
一、概述 1、UART简介 UART:通用同步/异步串行接收/发送器,由时钟发生器、数据发送器和接收器三大部分组成。UART是一个全双工通用同步/异步串行收发模块,该接口是一个高度灵活的串行通信设备。STM32F407IGT6具有6个UART收发器,可使用相应的代码使能后使用。 2、UART特点 全双工操作(相互独立的接收数据和发送数据)。 同步操作时,可主机时钟同步,也可从机时钟同步。 支持8和9位数据位,1或2位停止位的串行数据桢结构。 由硬件支持的奇偶校验位发生和检验。 数据溢出检测。 帧错误检测。 包括错误起始位的检测噪声滤波器和数字低通滤波器。 三个完全独立的中断,TX发送完成、TX发送数据寄存器空、R
[单片机]
[零基础学习<font color='red'>STM32</font>]第四讲:UART通讯实验—控制LED
STM32 IO 问题
今天调试一块板子出现如下问题: 某口 PB5,用某个芯片的复位工作。 配置如下: #define GPIO_PIN_REST GPIO_Pin_5 GPIO_InitStructure.GPIO_Pin = GPIO_PIN_REST; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIOB- BSRR = GPIO_Pin_5 ; jlink调试,观看GPIOB,keil显示是Pin 为1 但是芯片实际测量管脚的电压却是0V。搞定不懂 后面改为:GPIO_Ini
[单片机]
STM32 F7如何满足嵌入式系统更高处理性能需求
  意法半导体(ST)日前宣布推出业界首款基于ARM最新Cortex-M7内核的STM32 F7系列微控制器,其性能远超ST之前的32位STM32F4微控制器,通过无缝升级路径可将处理性能和DSP性能提高一倍。   “作为STM32微控制器产品家族的高端产品,STM32 F7使内存和外存的性能达到一个新的水平,给开发人员带来新的创新机会,保证他们不需要再根据存储器性能调整代码。”ST微控制器市场总监Daniel Colonna表示,“而之所以能够在业内率先推出基于Cortex-M7的产品,首先得益于ST与ARM密切的合作关系。其次,ST也与第三方客户保持着广泛的合作,确保他们能够及时得到ARM最新的技术支持并推出新产品。强大的开发
[电源管理]
<font color='red'>STM32</font> F7如何满足嵌入式系统更高处理性能需求
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved