STM32零碎问题记录
目录
- 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零碎问题记录相关推荐
- 基于STM32跑步路径记录
基于STM32跑步路径记录 随着科技不断进步,电子化设备不断进入涌入我们的日常生活.生活水平的提高,各项健身运动应运而生,然后,健身运动不能盲目进行,科学的健身方式才能有效的提升我们自身的身体素质 ...
- stm32学习开发记录:OLED——I2C
[缓慢施工中] 一.STM32 HAL库的I2C API 在Keil--help中可以直接找到对应开发板所需的编程资料. 找到HAL库关于I2C函数的说明: I2C使用流程: (1)I2C参数初始化, ...
- STM32的学习记录--单个模块开发思路
1. 前言 很久没写STM32的学习博客了,不是因为没在搞,而且因为STM32要学习的部分太多,而且代码量太大了,有些代码还涉及到版权问题,就一直没写,最近刚好在搞一个智能设备有关WiFi模块的开发, ...
- STM32的学习记录--2.WiFi模块的使用
本次学习用的单片机是STM32F103C8T6 本次学习用的WiFi模块是ESP8266 本博客仅用于课余学习,不可商用!!! 如有侵权,请告知我删除博客,谢谢配合. 以下学习资料均在云盘,仅供学习交 ...
- STM32的学习记录--1.准备工作
前言 本次学习用的单片机是STM32F103C8T6 本博客仅用于课余学习,不可商用!! 如有侵权,请告知我删除博客,谢谢配合. 以下学习资料均在云盘,仅供学习交流 禁止用于商业用途 资料下载: 链接 ...
- Qt5学习笔记之零碎问题记录
目录 概述 1.qDebug输出问题 1.1 qDebug() << "OK"报错 1.2 qDebug打印QString类型 2.QString字符串的操作 3.修改 ...
- STM32 USB使用记录:使用CDC类虚拟串口(VCP)进行通讯
文章目录 目的 基础说明 使用STM32CubeIDE配置生成代码 用户代码分析 回环测试 串口参数设置 USB HS使用与演示 通讯速率测试 测试代码 USB FS测试 USB HS测试 影响速度的 ...
- [笔记]unity渲染类零碎代码记录(100多条)
1.获得renderTexture上的4个角的近裁面位置 cam = GetComponent<Camera>(); Matrix4x4 inverseViewProjectionMatr ...
- STM32菜鸟成长记录——移植FreeModbusRTU
本文章用于记录学习RS485及配置Modbus协议 参考博文: FreeModbus移植文章1 FreeModbus移植文章2
最新文章
- 云计算机基地有辐射吗,服务器机房有辐射大吗
- Eclipse4.8.0无法打开 Eclipse MarketPlace
- 为什么要Zipkin
- 第三十一期:大数据分析师学习入门,10个数据可视化技巧
- 如何在Linux下安装nginx
- 匿名内部类 java 1614965228
- Kubernetes入门——Longhorn简介
- TDD(测试驱动开发)学习一:初识TDD
- ask调制流程图_ASK调制解调系统设计与仿真MATLAB课程设计
- 《老路用得上的商学课》26-30学习笔记
- 为什么你996猝死,老板007没事?
- 网口压线顺序_水晶头压线顺序
- sklearn的系统学习——决策树分类器(含有python完整代码)
- Linux之shell脚本正则表达式
- CTF-Tools 一款CTF古典密码加解密工具
- 信息系统项目管理师真题2017下半年附答案解析(1)
- 关于android某些手机java.lang.UnsatisfiedLinkError: No implementation found for ......的问题
- 布袋除尘器过滤风速多少_布袋除尘器过滤风速的确定标准是什么?
- (六) 数据结构 - 快速排序
- 香港之行——大学·精神·交通
热门文章
- android 4g获取mac地址,Android手机获取Mac地址的几种方法
- 操作系统实验一linux,操作系统实验一 Linux基本操作.doc
- vscode 不能运行h5c3代码_Golang安装与环境搭建并在VSCode里面输出HelloWord
- 关于项目404解决方法:前提条件:项目路径都是正确的
- spring boot 教程(六)多数据源配置与使用
- Jquery和angularjs获取check框选中的值小技巧
- 单片机交通灯的电路图以及代码_单片机晶振“问答篇”(下),17大单片机晶振问题全解答...
- html5多个图片位置_图表分析中的HTML5地图需求,这款BI轻松5步就给解决了
- ajax的url怎么将后缀补上_球形门锁怎么拆装?球形门锁安装的方法都包括哪些?
- 深度学习试题_深度学习理论类常见面试题(二)