初学STM32所遇到的小问题及解决方案

前言

同一问题产生的原因可能不同,以下解决方案仅仅对本人所遇问题的解决,不一定能够解决所有问题。
开发工具:

  • 开发板:STM32F103RCT6
  • STM32CubeMX
  • IDE: Keil-MDK

文章目录

  1. 前言
  2. 烧录文件的生成
  3. 串口接收失败
  4. printf不够用
  5. 后记

烧录文件的生成

问题:编译是未产生下载到单片机的.axf格式文件。
原因:编译时只点击Translate,所以不会生成工程文件。
方法:记得点击Build或Rebuild。
在这里插入图片描述
从左到右依次为Translate、Build、Rebuild。
Translate是编译当前改动的源文件,在这个过程中检查语法错误。但并不生成可执行文件
Build是只编译工程中上次修改的文件及其它依赖于这些修改过的文件的模块,同时重新链接生成可执行文件。如果工程之前没编译链接过,它会直接调用Rebuild All。另外在技术文档中,Build实际上是指increase build,即增量编译。
Rebuild是不管工程的文件有没有编译过,会对工程中所有文件重新进行编译生成可执行文件,因此时间较长.

串口接收失败

问题:通过PC端的串口助手以及手机蓝牙向单片机串口发送数据,串口接收不到数据,无法进入接收终端函数。

如何确定串口是否接受到数据:
1、将程序编译下载到开发板中,点击keil的调试功能按钮,如下图所示:
在这里插入图片描述
2、将串口接收变量放到监视串口中。如下图(选择变量,右键在弹出的选项中选择“Add’变量’to”,再在弹出的选项中随便选择一个窗口,如Watch 1。)
在这里插入图片描述
3、如下图:点击运行,并通过串口助手向串口发送数据,观察存储接收值得变量是否改变成发送值,不是,则串口无法接收数据。
在这里插入图片描述

原因:

  1. 串口损坏。
  2. 波特率设置错误。
  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)(我的学长所写,很好理解)

后记

以上为本人目前学习单片机所遇到的问题及其解决方法,可能并不全面。如果能有所帮助,甚好,没有还望体谅。

版权声明:本文为CSDN博主「萝卜呀!」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_58408884/article/details/122940570

前言

同一问题产生的原因可能不同,以下解决方案仅仅对本人所遇问题的解决,不一定能够解决所有问题。
开发工具:

  • 开发板:STM32F103RCT6
  • STM32CubeMX
  • IDE: Keil-MDK

文章目录

  1. 前言
  2. 烧录文件的生成
  3. 串口接收失败
  4. printf不够用
  5. 后记

烧录文件的生成

问题:编译是未产生下载到单片机的.axf格式文件。
原因:编译时只点击Translate,所以不会生成工程文件。
方法:记得点击Build或Rebuild。
在这里插入图片描述
从左到右依次为Translate、Build、Rebuild。
Translate是编译当前改动的源文件,在这个过程中检查语法错误。但并不生成可执行文件
Build是只编译工程中上次修改的文件及其它依赖于这些修改过的文件的模块,同时重新链接生成可执行文件。如果工程之前没编译链接过,它会直接调用Rebuild All。另外在技术文档中,Build实际上是指increase build,即增量编译。
Rebuild是不管工程的文件有没有编译过,会对工程中所有文件重新进行编译生成可执行文件,因此时间较长.

串口接收失败

问题:通过PC端的串口助手以及手机蓝牙向单片机串口发送数据,串口接收不到数据,无法进入接收终端函数。

如何确定串口是否接受到数据:
1、将程序编译下载到开发板中,点击keil的调试功能按钮,如下图所示:
在这里插入图片描述
2、将串口接收变量放到监视串口中。如下图(选择变量,右键在弹出的选项中选择“Add’变量’to”,再在弹出的选项中随便选择一个窗口,如Watch 1。)
在这里插入图片描述
3、如下图:点击运行,并通过串口助手向串口发送数据,观察存储接收值得变量是否改变成发送值,不是,则串口无法接收数据。
在这里插入图片描述

原因:

  1. 串口损坏。
  2. 波特率设置错误。
  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)(我的学长所写,很好理解)

后记

以上为本人目前学习单片机所遇到的问题及其解决方法,可能并不全面。如果能有所帮助,甚好,没有还望体谅。

版权声明:本文为CSDN博主「萝卜呀!」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_58408884/article/details/122940570

生成海报
点赞 0

萝卜呀!

我还没有学会写个人说明!

暂无评论

相关推荐

STM32+HC-05蓝牙模块学习与使用

HC-05蓝牙串口通信 HC05模块是一款高性能主从一体蓝牙串口模块,是一种集成蓝牙功能的PCBA板,用于短距离无线通信,十分方便。 从某宝商家那里可以看到,蓝牙可以使用多种方法使用&

2021年终总结

年终总结 CSDN的评委好,各位同仁好! 2021年,我担任嵌入式软件开发工程师一职,具体汇报如下: 一、2021年度工作完成情况 在现有的TDOA定位基站和标签的基础上