此篇对做此项目过程中遇到的所有问题和出现的BUG(包括硬件方面和软件方面)进行总结,告诫自己要养成总结问题,汇总BUG的好习惯。前人说:工作后你会发现你学生阶段所做项目的BUG_list价值千金!

硬件方面

电机驱动

Q:最初测试电机的过程中,出现电机发出滋滋的声音(感觉很无力)但是不转动的情况
A:L298N电机驱动板没有与MCU共地

软件方面

电机驱动

Q:利用STM32的定时器3输出4路PWM波,总是只有随机的1路输出
A:GPIO_PinAFConfig函数必须分步进行复用,不能用一个复用函数并在一起,不然只有一路输出。也就是说像下面这样复用:

 GPIO_PinAFConfig(GPIOA,GPIO_PinSource6,GPIO_AF_TIM3); //GPIOA6复用为定时器3GPIO_PinAFConfig(GPIOA,GPIO_PinSource7,GPIO_AF_TIM3); //GPIOA7复用为定时器3GPIO_PinAFConfig(GPIOB,GPIO_PinSource0,GPIO_AF_TIM3); //GPIOB0复用为定时器3GPIO_PinAFConfig(GPIOB,GPIO_PinSource1,GPIO_AF_TIM3); //GPIOB1复用为定时器3

而不是下面这样:

GPIO_PinAFConfig(GPIOA,GPIO_PinSource6 | GPIO_PinSource7,GPIO_AF_TIM3);

Q:单片机下载程序或复位过程中总有一个轮子以全速转动,同时其它三个轮子静止不动(我们想要的效果当然是在此过程中四个轮子全部静止,不然像我一开始,每次下载程序都要一只手把小车举的高高的emmm)
A:查STM32中文参考手册得知,我用来驱动小车运动所占用的IO口和STM32上面LCD屏的一个引脚冲突啦,改成其他空闲IO后就可以解决,最后四个轮子都安安静静的

巡线功能

Q:使用巡线模块的过程中发现其接收端的指示灯常亮,说明一直检测到线的存在,肯定不正常
A:查STM32中文参考手册得知,用来接收巡线模块信号所占用的IO口和STM32上面其他外设的引脚冲突啦,改成其他空闲IO后就可以解决

避障功能

Q:超声波传感器测距结果不正常
A1:测距函数解算错误,这个函数的结构是和你定时器的设置有关系的,要因地制宜,比如我设置的定时器参数如下:

 TIM_TimeBaseInitStructure.TIM_Prescaler = 83;//分频系数83,频率为1MHz,理论测量精度0.34mmTIM_TimeBaseInitStructure.TIM_Period = 50000;//计数周期50000,相当于0.05s,最大测量范围17m

那么测距函数就是这样的:

 // distance = measurement/2/1000*340 = measurement/59 (cm)  measurement-units:usdistance = (float)count / 58.8 ;

A2:中断优先级设置有问题

优先级问题:定时器5->HCSR04_StartMeasure        优先级最低(2,2)定时器2->计数                       优先级中间(1,1)      外部中断3->开始计时              优先级最高(0,0)最初的测距不准的原因就是因为优先级设置有误,弄反啦现在所用优先级只是测试版正确的优先级设置方法,暂时没有深究

A3:HCSR04_StartMeasure在定时器5的中断服务函数内部,用来定时发送开始测距信号,但HCSR04_StartMeasure函数内部出现了不可重入的延时函数,所以导致中断不正常。这就是为什么经常说中断服务函数不能加延时的原因,其本质是中断内部不能出现不可重入函数。类似printf函数等标准IO库函数、malloc和free函数、延时函数等都属于不可重入函数,尽量不在中断内部使用,如果一定要用的话将其改成可重入的。所以这里将延时函数优化成可重入的函数之后问题得到解决

A4:外部中断3中出现了printf函数,printf函数属于不可重入函数。

Q:最初版的避障功能不能保证实时性,经常是已经撞上去啦还没发出避障动作
A:避障函数内部用到了大量延时,现已改为根据测距距离进行相应操作的实现方式,实时性问题得以解决

蓝牙模块

Q:使用手机蓝牙串口助手时,对发送到STM32的数据进行IF判断,发现没有动作
A:串口助手发送的是打印字符,真正计算机中对应的ASCII码和我们看到的打印出来的字符并不是一个东西,例如:我们发送了一个数据5,其对应的ASCII码却是0x35。所以if判断语句中应该写0x35而不是5。这个东西折腾了我一下午,看来还是要对计算机的东西有一个更加深入的了解才行

显示功能

Q:使用LCD屏的时候总有bug
A:查STM32中文参考手册得知,我用来驱动小车运动所占用的IO口和LCD屏的一个引脚冲突啦,导致LCD初始化不正常,将驱动小车运动所用的IO口改成其他空闲IO后就可以解决

DIY智能小车篇(四):常见问题 BUG汇总相关推荐

  1. DIY智能小车篇(一):结构模块

    前言 本篇主要针对制作智能小车过程中用到的各种结构模块进行统一阐述,为大家提供参考的同时也是自己对之前所做工作的总结.本人所制作的智能小车所需零部件均从某宝上购得,这家店的零件比较全,本文中的大部分模 ...

  2. DIY智能小车篇(番外篇)

    前言 暑假闲着也是闲着,想着还是干点有意义的事情充实一下自己,那会也在再学习C语言,就想找点能锻炼锻炼编程能力的小项目,正好逛论坛看到了别人做的智能小车,看着还挺好玩就想着自己也做一个,一方面能锻炼锻 ...

  3. DIY智能小车篇(三):功能模块之遥控、蓝牙、MERGE

    遥控模式 此模式可以利用遥控器完成模式的选择和小车前进后退等驱动功能,模式选择放在最后MERGE部分进行介绍.通讯协议直接用的YFRobot工作室写好的,方便实用,自己其实只需要会用就OK啦.通讯协议 ...

  4. 华硕无线路由打印机服务器,享受DIY的快乐 篇四:当普通打印机遇上智能路由器——网络打印机配置教程(以华硕AC66U B1为例)...

    享受DIY的快乐 篇四:当普通打印机遇上智能路由器--网络打印机配置教程(以华硕AC66U B1为例) 2020-07-15 15:27:48 21点赞 238收藏 41评论 创作立场声明:本文系作者 ...

  5. oracle智能便携投影机,智能投影 篇四:天猫精灵投影仪上手体验,小巧便携+内置电池,李佳琦带货推荐...

    智能投影 篇四:天猫精灵投影仪上手体验,小巧便携+内置电池,李佳琦带货推荐 2020-06-06 10:56:27 0点赞 1收藏 0评论 30岁以下的女性无论是结婚的,还是单身的,都算是90后这一代 ...

  6. 基于STM32的智能小车方案设计

    基于STM32的智能小车设计 前言 一.什么是STM32智能小车? 二.模块汇总 1.主控板(STM32F103ZE) 2.底板 3.电机 4.避障模块(超声波传感器,红外传感器) 5.寻迹模块(3路 ...

  7. 详细介绍如何从零开始制作51单片机控制的智能小车(二)———超声波模块、漫反射光电管、4路红外传感器的介绍和使用

       我会通过本系列文章,详细介绍如何从零开始用51单片机去实现智能小车的控制,在本系列的上一篇文章中介绍了如何让小车动起来,本文作为本系列的第二篇文章,主要介绍让小车实现自动避障所涉及的一些传感器, ...

  8. STM32实现四驱小车(四)姿态控制任务——偏航角串级PID控制算法

    目录 一. 绪论 二. 角度环串级PID原理 1. PID基本算法 2. 姿态角串级PID原理 三. 如何用STM32实现角度-角速度的串级PID控制 1. PID算法的代码实现 2. 串级PID算法 ...

  9. 最简单DIY基于STM32单片机的WIFI智能小车设计方案

    STM32库函数开发系列文章目录 第一篇:STM32F103ZET6单片机双串口互发程序设计与实现 第二篇:最简单DIY基于STM32单片机的蓝牙智能小车设计方案 第三篇:最简单DIY基于STM32F ...

  10. 最简单DIY基于STM32单片机的蓝牙智能小车设计方案

    STM32库函数开发系列文章目录 第一篇:STM32F103ZET6单片机双串口互发程序设计与实现 第二篇:最简单DIY基于STM32单片机的蓝牙智能小车设计方案 文章目录 STM32库函数开发系列文 ...

最新文章

  1. dynamo方程怎么写_根据以下说明,画出因果关系图,建立流图模型,并拟定变量名称和适当数据,写出对应的...
  2. 如何在solaris下安装memcached
  3. 04Hadoop中的setPartitionerClass/SortComparator/GroupingComparator问题
  4. Python练习-迭代器-模拟cat|grep文件
  5. 二维码提升对比度文献调研(4)--Attention Guided Low-light Image Enhancement
  6. opencart出现no such file or dictionary
  7. 独立站电商广告和营销洞察
  8. linux _max_path,[apue] Linux / Windows 系统上只能建立不超过 PATH_MAX / MAX_PATH 长度的路径吗?...
  9. 基于SSM的企业人事人员管理系统
  10. C语言 —— do while循环语句用法与例题
  11. 如何录制游戏视频中的音频
  12. 【SDC】StreamSets实战之路-11-基础篇- StreamSets-数据流开发- Edge数据流设计
  13. 再读德鲁克#3 从管理外包人员到全面质量管理
  14. 恢复PyCharm顶部菜单栏
  15. 一个完整简单而又强力的计算器程序--用python实现(Python3.7)
  16. Java中hir_Java中数据库的使用基础
  17. CT图像重建算法------射线驱动投影模型
  18. 2018最新的web前端开发框架排行总结
  19. 一劳永逸解决vs编译器无法使用scanf函数
  20. pytest-bdd封装

热门文章

  1. android mds文件,安卓手机如何打开.mdf文件
  2. 精简版XP的IIS安装
  3. 刚刚,2020年中国信息通信技术服务大会盛大召开!
  4. mysql 执行 毫秒_记录sql执行时间毫秒级
  5. java实现二维码的生成与解析
  6. 百度云盘不限速 又一款百度网盘满速下载工具利器
  7. 智慧小区智能安防设计方案
  8. web前端设计必备网页特效案例 - 轮播图
  9. Eucalyptus云平台搭建
  10. 服务器 硬盘灯,硬盘灯一直亮,手把手教你电脑硬盘指示灯一直亮怎么办