一、一个开关选择芯片引发的逻辑混乱问题
1.问题描述:初始化时,使用开关选择芯片,只能改变一边的状态;但是在运行过程中,可以分别控制两边;但是方向是反的;
2.当时脑子一团雾水,没有一点想法;
3.查看开关芯片手册,发现和自己所确定的并不是同一个芯片;原因是,本项目用了不只一个开关芯片,经验主义使用了另外一个芯片的手册;
4. 但是仔细查看芯片,发现只对回复有影响,对发送没有影响?另外在修改真值表后,问题还是存在;
5.又考虑开关芯片的开关变换时的时间是否有限制;增加延时函数,没有明显改变;
6.最后分别控制2边,发现程序只能控制同一边;这时猜测难道控制方向选了一边吗?-------------事实上真是这样;
7.最终思考总结
1)一个很简单的问题,却没有在第一时间想到问题所在,惭愧!!!
2)没有想到的原因:
---1.思路不清晰;
---2.感觉硬件有问题的概率大于软件出错的概率;
---3.实现现象的干扰(当然,解决后想想也是问题所在的表象);
---4.没有耐心的查看代码;
---5.还是需要在查找问题之前,将需要一步步查看的,写出来!!!再一步步排查;
二、错误信息: warning: #174-D: expression has no effect
1.解释:意思是此处的代码是无效的;
三、问题:在代码的左侧边框有一个三角警告while loop has empty body;但是编译完成后却没有;
1.解决方法:将这个警告语句的,下一条语句与警告语句对齐;
2.原因:猜测是编译器的的问题;
四、rt_thread_suspend();挂起函数不能挂起对应的函数?
1.解释:https://ask.csdn.net/questions/7384220;这篇文章讲解的很清晰;
2.结论;对于RT-Thread,就不要使用rt_thread_suspend()函数了;
五、关于串口使用过程中遇到的问题:
1.串口接收的数据在串口调试助手中显示的是乱码?
---1.疑惑:在工程1中,串口的收发没问题;工程2的串口驱动是直接拷贝的工程1;
---2.疑惑:仔细查看串口初始化、并未发现错误;
2.解释
---1.在工程1中串口输出正常,说明硬件正常、软件驱动正常;
---2.查看2个工程的串口寄存器,发现2个工程的串口波特率设置的值不一样;一下反应拿过来可能是晶振设置的问题;
---3.因为硬件的晶振是12M的,但是工程2中的晶振设置的是默认的8M,从而导致串口输出的是乱码;
六、串口只返回一个字节,并且“usb-串口”模块的RX灯常量;
1.解决方法:将VCC连接到5V的跳线帽,连接到3.3V上;
2.原因:在“usb-串口”模块上,都有关于VCC选择5V还是3.3V的选项;具体操作是使用跳线帽将相应的引脚连接;
芯片供电是3.3v,所以“usb-串口”模块上的基准电压要选择3.3v
----------------------------------------------------------------------------------------------------------
串口使用过程中会出现的问题:
一、硬件
1.USB转串口模块
1)驱动是否安装
2)模块的VCC可以通过跳线帽选择3.3V、5V;跳线帽根据芯片的供电电压确定;
2.串口工具配置
1)端口号、波特率、数据位、停止位、校验位、硬件流选择;
二、软件
1.程序中串口配置
1)引脚配置;
2)端口号、波特率、数据位、停止位、校验位、硬件流选择;
3)串口使能;
4)如果使用中断接收,还需要进行串口中断的设置;
2.晶振
1)程序的晶振需要根据板子的实际晶振修改;
2)同时系统时钟配置也需要配置;
--------------------------------------------------------------------------------------------------------------