前言
同一问题产生的原因可能不同,以下解决方案仅仅对本人所遇问题的解决,不一定能够解决所有问题。 开发工具:
- 开发板:STM32F103RCT6
- STM32CubeMX
- IDE: Keil-MDK
文章目录
- 前言
- 烧录文件的生成
- 串口接收失败
- printf不够用
- 后记
烧录文件的生成
问题:编译是未产生下载到单片机的.axf格式文件。 原因:编译时只点击Translate,所以不会生成工程文件。 方法:记得点击Build或Rebuild。 从左到右依次为Translate、Build、Rebuild。 Translate是编译当前改动的源文件,在这个过程中检查语法错误。但并不生成可执行文件 Build是只编译工程中上次修改的文件及其它依赖于这些修改过的文件的模块,同时重新链接生成可执行文件。如果工程之前没编译链接过,它会直接调用Rebuild All。另外在技术文档中,Build实际上是指increase build,即增量编译。 Rebuild是不管工程的文件有没有编译过,会对工程中所有文件重新进行编译生成可执行文件,因此时间较长.
串口接收失败
问题:通过PC端的串口助手以及手机蓝牙向单片机串口发送数据,串口接收不到数据,无法进入接收终端函数。
如何确定串口是否接受到数据: 1、将程序编译下载到开发板中,点击keil的调试功能按钮,如下图所示: 2、将串口接收变量放到监视串口中。如下图(选择变量,右键在弹出的选项中选择“Add’变量’to”,再在弹出的选项中随便选择一个窗口,如Watch 1。) 3、如下图:点击运行,并通过串口助手向串口发送数据,观察存储接收值得变量是否改变成发送值,不是,则串口无法接收数据。
原因:
- 串口损坏。
- 波特率设置错误。
- CubeMX配置或keil程序编写错误
判断方法: 先检查CubeMX里对串口的设置是否正确。如下图:
是否勾选红色方框内的中断允许,波特率设置是否正确(比如:串口屏以及语音播报的波特率被设置为9600bit/s,如果串口波特率设置不一致,串口无法正确接收数据),以及是否允许串口接收等等。再检查keil编写程序是否有误。无误后可尝试换一个串口,运行如果成功,则可能串口损坏,只能换串口。
printf不够用
问题:在使用语音播报以及串口屏时,都使用到printf这个函数进行数据发送,printf只能绑定一个串口。 解决方案:配置多串口printf(另写一个与printf功能相似的函数)。 方法连接:(https://blog.csdn.net/qq_34022877/article/details/122909033?utm_source=app&app_version=5.0.1&code=app_1562916241&uLinkId=usr1mkqgl919blen)(我的学长所写,很好理解)
后记
以上为本人目前学习单片机所遇到的问题及其解决方法,可能并不全面。如果能有所帮助,甚好,没有还望体谅。
|