完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
硬件搭设
void EXTI9_5_IRQHandler(void) { delay_us(10); //延时10us if(EXTI_GetITStatus(EXTI_Line7) != RESET) { TIM_SetCounter(TIM2,0); TIM_Cmd(TIM2, ENABLE); //开启时钟 while(GPIO_ReadInputDataBit(ECHO_PORT,ECHO_PIN)); //等待低电平 TIM_Cmd(TIM2, DISABLE); //定时器2失能 UltrasonicWave_Distance=TIM_GetCounter(TIM2)*5*34/200.0; //计算距离 if(UltrasonicWave_Distance>0) { printf("distance:%f cm",UltrasonicWave_Distance); } EXTI_ClearITPendingBit(EXTI_Line7); //清楚EXTI7线路挂起位 } } ---------- /* * 开始测距,发送一个>10us的脉冲,然后测量返回的高电平的时间 */ void UltrasonicWave_StartMeasure(void) { GPIO_SetBits(TRIG_PORT,TRIG_PIN); //送>10us的高电平RIG_PORT,TRIG_PIG这两个在define中有定义 delay_us(20); //延时20US GPIO_ResetBits(TRIG_PORT,TRIG_PIN); }
硬处理 所谓硬处理,毫无疑问是直接从硬件下手,能拆就拆,咳咳,保证拆了也能用的条件上。还记得上面让大家找的原理图吗?现在派上用场了在这里我们不需要看太多东西,对于原理图只需要找到接收和发射端就好。 从上图可以看到,发射端是由两个引脚控制,分别是TIOUT和T2OUT。我们上面想的阻止发射端发射的想法行不通,那我们就让超声波来个“自欺欺人”,所谓自欺欺人就是让超声波认为自己已经发送了超声波,其实没有发送出去。最好的方法就是直接切断发送端的线路,直白点就是切断7、14号两个引脚。方法有很多,建议大家直接用破坏的方法去完成。下图为本人的“成果”。
- 超声波模块 (未完待续) - nrf2401模块 - 主函数 注意事项 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1804 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1629 浏览 1 评论
1097 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
736 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1686 浏览 2 评论
1944浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
747浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
580浏览 3评论
602浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
565浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 09:13 , Processed in 0.699968 second(s), Total 45, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号