1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
STM32超声波测距模块
非输入捕获教程 定时器的配置 同样的操作你们试试TIM3 每1us,CNT++;CNT加到65535就会溢出,产生中断。 所以可以将PSC ARR当作两次时钟分频,两次分频乘积/72MHZ 就是 每隔这么多时间定时器就中断一次 但arr中设置的count可以检测出来。因此,我们就将预分频系数设为72-1,此时为1us一个时钟周期,再设置arr为65535,这样我们最多可以计数65535us,完全够超声波的计时了。并且中断次数少,不会太影响程序进程。 串口printf准备工作 在 USER CODE BEGIN 4 中写 (注意还要添加头文件stdio.h) int fputc(int ch, FILE *f) { HAL_UART_Transmit (&huart1 ,(uint8_t *)&ch,1,HAL_MAX_DELAY ); //采用轮询方式发送一个字节的数据,没有发送成功就一直等待 return ch; } int fgetc(FILE *f) //int fgetc(int ch, FILE *F) { uint8_t ch; HAL_UART_Receive (&huart1 ,(uint8_t *)&ch,1,HAL_MAX_DELAY ); return ch; } 此后,就可以在主函数中使用printf函数打印数据用串口显示啦, 生成代码后main.c的工作 us级定时 us级定时的三种方法 /* USER CODE BEGIN 4 */ void user_delaynus_tim(uint32_t nus) { uint16_t differ = 0xffff-nus-5; //设置定时器2的技术初始值 __HAL_TIM_SetCounter(&htim3,differ); //开启定时器 HAL_TIM_Base_Start(&htim3); while( differ<0xffff-5) { differ = __HAL_TIM_GetCounter(&htim3); }; //关闭定时器 HAL_TIM_Base_Stop(&htim3); } /* Private define ------------------------------------------------------------*/ /* USER CODE BEGIN PD */ #define Trig_H HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_SET ); #define Trig_L HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET ); /* USER CODE END PD */ /* Private macro -------------------------------------------------------------*/ /* USER CODE BEGIN PM */ uint16_t count; uint16_t distance; uint16_t time; uint16_t i; /* USER CODE END PM */ while (1) { printf("准备中rn"); HAL_Delay (500); Trig_H ; user_delaynus_tim(12); Trig_L ; //开启定时器 HAL_TIM_Base_Start(&htim3); while( HAL_GPIO_ReadPin (GPIOB ,GPIO_PIN_2) != GPIO_PIN_SET) ; __HAL_TIM_SetCounter(&htim3,0); // printf("准备完毕开始测试rn"); /* 打开中断,对Echo高电平时间计时 */ while(HAL_GPIO_ReadPin (GPIOB ,GPIO_PIN_2) == GPIO_PIN_SET) ; //关闭定时器 count = __HAL_TIM_GetCounter(&htim3); HAL_TIM_Base_Stop(&htim3); /* 关闭中断,通过参数time来取得距离参数 */ /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ distance = (uint16_t )count*0.017; i++; printf("第%d次的距离为 %d nr",i,distance); } /* USER CODE END 3 */ } 完成以上步骤,就可以在串口调试助手中看见超声波测试的距离啦 输入捕获教程 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1780 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1621 浏览 1 评论
1081 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
728 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1679 浏览 2 评论
1938浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
731浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
570浏览 3评论
596浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
556浏览 3评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 22:49 , Processed in 0.850454 second(s), Total 76, Slave 60 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号