Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
HC-SR04软件包
请问怎么基于sr04软件包的sample文件更改出能驱动多个hcsr04的驱动程序?
发布于 2025-03-12 22:28:15 浏览:30
订阅该版
在使用SR04软件包驱动超声波模块后成功获取到距离值,但依葫芦画瓢创建了第二个线程后,也更改了定时器防止冲突,却老是提示无法找到线程2的设备不知道要怎么解决😭 ```c /* * Copyright (c) 2006-2020, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2020-05-09 shany the first version * 2023-10-10 Optimized Optimized code structure and added comments * 2023-10-11 Modified Support dual HC-SR04 sensors */ #include
#include
#include "board.h" #include "sensor.h" #include "sensor_hc_sr04.h" /* 修改引脚定义以适应两个传感器 */ #define SR04_1_TRIG_PIN GET_PIN(C, 4) // 第一个超声波模块Trig引脚 #define SR04_1_ECHO_PIN GET_PIN(A, 4) // 第一个超声波模块Echo引脚 #define SR04_2_TRIG_PIN GET_PIN(C, 5) // 第二个超声波模块Trig引脚 #define SR04_2_ECHO_PIN GET_PIN(A, 5) // 第二个超声波模块Echo引脚 /* 通用读取线程入口函数 */ static void sr04_read_distance_entry(void *parameter) { const char *dev_name = (const char *)parameter; rt_device_t dev = RT_NULL; struct rt_sensor_data sensor_data; rt_size_t res; /* 查找传感器设备 */ if ((dev = rt_device_find(dev_name)) == RT_NULL) { rt_kprintf("Can't find device: %s\n", dev_name); return; } /* 打开设备 */ if (rt_device_open(dev, RT_DEVICE_FLAG_RDWR) != RT_EOK) { rt_kprintf("Failed to open device: %s\n", dev_name); return; } /* 设置采样率 */ rt_device_control(dev, RT_SENSOR_CTRL_SET_ODR, (void *)100); /* 持续读取数据 */ while (1) { res = rt_device_read(dev, 0, &sensor_data, 1); if (res != 1) { rt_kprintf("Failed to read data from: %s\n", dev_name); rt_device_close(dev); return; } else { rt_kprintf("[%s] Distance: %3d.%d cm, Timestamp: %5d\n", dev_name, sensor_data.data.proximity / 10, sensor_data.data.proximity % 10, sensor_data.timestamp); } rt_thread_mdelay(1000); // 适当调整延时避免冲突 } } /* 创建两个独立的数据读取线程 */ int sr04_read_distance_sample(void) { rt_thread_t t1, t2; /* 创建第一个传感器的读取线程 */ t1 = rt_thread_create("sr04_1_th", sr04_read_distance_entry, "sr04_1", 1024, RT_THREAD_PRIORITY_MAX / 2, 20); if (t1) rt_thread_startup(t1); /* 创建第二个传感器的读取线程 */ t2 = rt_thread_create("sr04_2_th", sr04_read_distance_entry, "sr04_2", 1024, RT_THREAD_PRIORITY_MAX / 2, 20); if (t2) rt_thread_startup(t2); return RT_EOK; } INIT_APP_EXPORT(sr04_read_distance_sample); /* 传感器硬件初始化函数(支持双设备) */ static int sr04_port_init(const char *name, rt_base_t trig_pin, rt_base_t echo_pin, const char *timer_dev) { struct rt_sensor_config cfg; rt_base_t pins[2] = {trig_pin, echo_pin}; cfg.intf.dev_name = timer_dev; // 使用指定定时器 cfg.intf.user_data = (void *)pins; // 传递引脚配置 return rt_hw_sr04_init(name, &cfg); } /* 初始化两个超声波模块 */ int rt_hw_sr04_port(void) { /* 初始化第一个传感器(使用TIM4) */ sr04_port_init("sr04_1", SR04_1_TRIG_PIN, SR04_1_ECHO_PIN, "timer4"); /* 初始化第二个传感器(使用TIM5) */ sr04_port_init("sr04_2", SR04_2_TRIG_PIN, SR04_2_ECHO_PIN, "timer5"); return RT_EOK; } INIT_COMPONENT_EXPORT(rt_hw_sr04_port); ``` 这是我修改后的代码,球球各位大佬能不能帮我看看😭
查看更多
0
个回答
默认排序
按发布时间排序
暂无答案,快来添加答案吧
撰写答案
登录
注册新账号
关注者
0
被浏览
30
关于作者
qwq22
这家伙很懒,什么也没写!
提问
2
回答
0
被采纳
0
关注TA
发私信
相关问题
1
sr04软件包排他性问题
2
sr04软件包例程距离不对
3
sr04软件包测量距离一直为0
4
RT-Thread Studio加载官方驱动包出错
5
提示timer check enter
6
hc-sr04的调试一直没有数据
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
【FRA156测评DM-MCX】- 环境配置篇
2
【基于HPM6750+RW007的网页服务器】---SD卡文件系统
3
有关RT_thread studio使用WDT的一点经验
4
ART-PI2 上手记录(一)
5
【基于HPM6750+RW007的网页服务器】---rw007软件包添加
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
I2C_IIC
ESP8266
UART
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
GD32
定时器
ADC
flashDB
编译报错
socket
中断
rt_mq_消息队列_msg_queue
Debug
keil_MDK
SFUD
msh
ulog
C++_cpp
MicroPython
本月问答贡献
张世争
1
个答案
2
次被采纳
crystal266
4
个答案
1
次被采纳
lchnu
3
个答案
1
次被采纳
JonasWen
2
个答案
1
次被采纳
聚散无由
2
个答案
1
次被采纳
本月文章贡献
出出啊
1
篇文章
3
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
1
次点赞
crystal266
2
篇文章
1
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部