目录

  • 0. 概述
  • 1. 使用STM32CubeMX生成工程,下载一次后无法继续下载?
  • 2. 查看外设,如CAN挂载在哪一个总线上?
  • 3. Keil的一些设置
  • 4. 优化等级导致函数未调用
  • 5. warning: #870-D:invalid multibyte character sequence
  • 6. 下载pack包和keil快速跳转
  • 7. 程序无法运行停留在"BKPT 0xAB"
  • 8. FLASH擦除返回成功,但读取仍然为原来的值
  • 9 HAL_Delay出现死循环

0. 概述

本文主要记录一些STM32使用过程中遇到的小问题,不值得单独开篇,全部集中在这里,不定期更新补充。

1. 使用STM32CubeMX生成工程,下载一次后无法继续下载?


提示复位失败。使用镊子短接复位按键–点击下载–立即松开镊子–下载成功。最终查找,是因为STM32CubeMX默认关闭了调试模式。需要根据下载方式,选择对应的选项。

2. 查看外设,如CAN挂载在哪一个总线上?

使用STM32CubeMX生成工程时,并没有显示出CAN挂载在APB1还是APB2上:
打开芯片手册《stm32f103rc.pdf》,查看时钟树上也是没有标出的:

翻来翻去,结果就在时钟树的上一页。有点一叶障目不见泰山的意思:

3. Keil的一些设置

生成bin文件、设置护眼颜色等,keil相关设置单独列为一篇:Keil/MDK(0):使用过程中的一些设置。

4. 优化等级导致函数未调用

调试发现程序调用lib库的函数,程序出现异常。使用lib的源文件调试,发现函数调用未生效:

将优化等级从-O3降到-O1,则正常:

为什么会导致函数调用不生效???
最终将文件修改优化等级,重新编译lib文件。
编译方法:Keil 下生成LIB库文件以及如何使用LIB库文件。

5. warning: #870-D:invalid multibyte character sequence


搜了一圈,都是说汉字编码原因,这里不是汉字呀,明明是uint8_t
不过试了下,解决办法是通用的:让keil屏蔽掉这个类型的warning输出。在报警告的.c源文件中增加宏定义:

#pragma diag_suppress 870

更新:找到原因了,一直关注变量的类型,其实是打印的字符串,冒号使用了中文。修改为英文的冒号,就不必使用#pragma diag_suppress 870来屏蔽警告了。

6. 下载pack包和keil快速跳转

下载芯片包:MDK5 Device List
下载keil:Keil Product Downloads
详细介绍:官网下载keil MDK最新版本、历史版本和芯片pack包

7. 程序无法运行停留在"BKPT 0xAB"

添加部分功能后发现程序没有正常运行,调试看到并没有进入到main函数,完全没有运行:

反复查看了代码,没有发现明显问题。发现这时候连续点击全速运行,又能正常运行起来。最终找到解决办法:Stm32 debug停留在"BKPT 0xAB"或者"SWI 0xAB"的解决办法。
文中提出三种方法,魔术棒勾选micro lib最简单(文中作者并不推荐)。测试可正常运行。

2022-1-26更新
程序中引入了一个开源库,调试中又出现了这个问题,但是已经勾选了微库。程序开始能够运行,在开源相关部分,会出现BKPT 0xAB。经过查找,发现是使用的开源库中使用了:

#define AT_DEBUG(...)          printf("[AT]:");printf(__VA_ARGS__) /*do{}while(0)*/

而我的程序中使用jlink进行打印,没有重定向到printf。试着将此处的printf修改为我自己的jlink打印语句,可以正常运行了。
经过这两次可以看到,出现该问题,多半是与printf有关。

8. FLASH擦除返回成功,但读取仍然为原来的值

//2022.2.10
最近编写STM32G0B1芯片的bsp,调试flash时发现擦除异常,虽然HAL_FLASHEx_Erase返回HAL_OK,但此时读取仍然为之前写入的值。
驱动在之前的工程上是使用过的,又参考了下rtthread中的drv_flash_g0.c,也没有明显问题。

网上搜了一下,基本都是擦除函数返回就异常了。STM32L476 HAL_FLASHEx_Erase() 问题出现了同样的问题,表示将程序下载到开发板就成功了。开发板MCU型号不完全一致,但是同一系列。

查看下STM32G0B1的官方demo(STM32 HAL库手册获取和查阅方法以及查看官方例程),才发现我的程序少赋值一个结构体成员:

参考demo,对banks成员赋值,可以正常擦除了。

那么rtthread这里是没有做区分吗?还是我的理解仍然有问题?如果在STM32G0B1上运行,需要针对修改?以后用到了再来补充。

9 HAL_Delay出现死循环

出现HAL_Delay无法退出:

发现是uwTick没有自增:

STM32零碎问题记录相关推荐

  1. 基于STM32跑步路径记录

    基于STM32跑步路径记录   随着科技不断进步,电子化设备不断进入涌入我们的日常生活.生活水平的提高,各项健身运动应运而生,然后,健身运动不能盲目进行,科学的健身方式才能有效的提升我们自身的身体素质 ...

  2. stm32学习开发记录:OLED——I2C

    [缓慢施工中] 一.STM32 HAL库的I2C API 在Keil--help中可以直接找到对应开发板所需的编程资料. 找到HAL库关于I2C函数的说明: I2C使用流程: (1)I2C参数初始化, ...

  3. STM32的学习记录--单个模块开发思路

    1. 前言 很久没写STM32的学习博客了,不是因为没在搞,而且因为STM32要学习的部分太多,而且代码量太大了,有些代码还涉及到版权问题,就一直没写,最近刚好在搞一个智能设备有关WiFi模块的开发, ...

  4. STM32的学习记录--2.WiFi模块的使用

    本次学习用的单片机是STM32F103C8T6 本次学习用的WiFi模块是ESP8266 本博客仅用于课余学习,不可商用!!! 如有侵权,请告知我删除博客,谢谢配合. 以下学习资料均在云盘,仅供学习交 ...

  5. STM32的学习记录--1.准备工作

    前言 本次学习用的单片机是STM32F103C8T6 本博客仅用于课余学习,不可商用!! 如有侵权,请告知我删除博客,谢谢配合. 以下学习资料均在云盘,仅供学习交流 禁止用于商业用途 资料下载: 链接 ...

  6. Qt5学习笔记之零碎问题记录

    目录 概述 1.qDebug输出问题 1.1 qDebug() << "OK"报错 1.2 qDebug打印QString类型 2.QString字符串的操作 3.修改 ...

  7. STM32 USB使用记录:使用CDC类虚拟串口(VCP)进行通讯

    文章目录 目的 基础说明 使用STM32CubeIDE配置生成代码 用户代码分析 回环测试 串口参数设置 USB HS使用与演示 通讯速率测试 测试代码 USB FS测试 USB HS测试 影响速度的 ...

  8. [笔记]unity渲染类零碎代码记录(100多条)

    1.获得renderTexture上的4个角的近裁面位置 cam = GetComponent<Camera>(); Matrix4x4 inverseViewProjectionMatr ...

  9. STM32菜鸟成长记录——移植FreeModbusRTU

    本文章用于记录学习RS485及配置Modbus协议 参考博文: FreeModbus移植文章1 FreeModbus移植文章2

最新文章

  1. 云计算机基地有辐射吗,服务器机房有辐射大吗
  2. Eclipse4.8.0无法打开 Eclipse MarketPlace
  3. 为什么要Zipkin
  4. 第三十一期:大数据分析师学习入门,10个数据可视化技巧
  5. 如何在Linux下安装nginx
  6. 匿名内部类 java 1614965228
  7. Kubernetes入门——Longhorn简介
  8. TDD(测试驱动开发)学习一:初识TDD
  9. ask调制流程图_ASK调制解调系统设计与仿真MATLAB课程设计
  10. 《老路用得上的商学课》26-30学习笔记
  11. 为什么你996猝死,老板007没事?
  12. 网口压线顺序_水晶头压线顺序
  13. sklearn的系统学习——决策树分类器(含有python完整代码)
  14. Linux之shell脚本正则表达式
  15. CTF-Tools 一款CTF古典密码加解密工具
  16. 信息系统项目管理师真题2017下半年附答案解析(1)
  17. 关于android某些手机java.lang.UnsatisfiedLinkError: No implementation found for ......的问题
  18. 布袋除尘器过滤风速多少_布袋除尘器过滤风速的确定标准是什么?
  19. (六) 数据结构 - 快速排序
  20. 香港之行——大学·精神·交通

热门文章

  1. android 4g获取mac地址,Android手机获取Mac地址的几种方法
  2. 操作系统实验一linux,操作系统实验一 Linux基本操作.doc
  3. vscode 不能运行h5c3代码_Golang安装与环境搭建并在VSCode里面输出HelloWord
  4. 关于项目404解决方法:前提条件:项目路径都是正确的
  5. spring boot 教程(六)多数据源配置与使用
  6. Jquery和angularjs获取check框选中的值小技巧
  7. 单片机交通灯的电路图以及代码_单片机晶振“问答篇”(下),17大单片机晶振问题全解答...
  8. html5多个图片位置_图表分析中的HTML5地图需求,这款BI轻松5步就给解决了
  9. ajax的url怎么将后缀补上_球形门锁怎么拆装?球形门锁安装的方法都包括哪些?
  10. 深度学习试题_深度学习理论类常见面试题(二)