0
点赞
收藏
分享

微信扫一扫

对STM32无法进行超声波仿真的一些思考


* 函数名:UltrasonicWave_StartMeasure
* 描述 :开始测距,发送一个>10us的脉冲,然后测量返回的高电平时间
* 输入 :无
* 输出 :无
*/
void UltrasonicWave_StartMeasure(void)
{
GPIO_SetBits(TRIG_PORT,TRIG_PIN); //送>10US的高电平
DelayTime_us(20); //延时20US
GPIO_ResetBits(TRIG_PORT,TRIG_PIN);

while(!GPIO_ReadInputDataBit(ECHO_PORT,ECHO_PIN)); //等待高电平
TIM_Cmd(TIM2, ENABLE); //开启时钟
while(GPIO_ReadInputDataBit(ECHO_PORT,ECHO_PIN)); //等待低电平
TIM_Cmd(TIM2, DISABLE); //定时器2失能
UltrasonicWave_CalculateTime(); //计算距离
TIM_SetCounter(TIM2,0);

printf("\r\ndistance:%d%d cm\r\n",UltrasonicWave_Distance/256,UltrasonicWave_Distance%256);

}`

如上,while循环在实物中是可以检测距离,但是仿真由于端口部无法检测到高低电平,故而无法正常检测数据。
解决方法一,
将接收端口改为以上三个端口, PA 0, Pb 0, PC 0.
解决方法二,
使用exti中断来进行判断

关于其他bug欢迎提出,有说的不对的地方,欢迎指正。


举报

相关推荐

0 条评论