使用Keil开发STM32问题记录
作者平时都使用Keil5来开发STM32,因为是个新手所以会碰见很多问题,CSDN社区给了很多帮助,有很多大佬的分享解决方法,所以特意把问题分类整理记录,方便以后查找
持续更新 未完待续…………
硬件问题:
硬件问题指软件或者调试器等无法正常使用,可能因为一些驱动没装好或者版本有问题等
1.Keil无法识别野火的STM32的高速DAP仿真器
应该是电脑更新的原因,导致原本的驱动被覆盖,无法识别仿真器
2.Keil使用SWD仿真器出错
有时候因为程序逻辑出错,导致程序卡死,没有自动复位,新的程序下载不进去
软件使用:
学会使用一个软件可以达到事半功倍的效果,Keil提供了各种功能,可以方便我们的使用,但是很多时候都是自己局限在已知的地方,不去探索
1.Keil进行工程文档的管理
命名、分类规律整洁的工程文档方便我们的开发
2.Keil在线调试精确计时
单片机的某些程序非常注重及时性,有些代码的运行时间也会对程序整体造成很大影响,这个功能很方便
编译信息出现以下提示信息
Keil官网提供了很多单片机的PACK包,但是由于版本问题,有的Keil版本不兼容PACK包(多是因为该包版本太新),可以从官网下载旧版本的pack包,或者升级安装新的keil。
点击此链接,找到芯片对应的pack包,找旧版本的,下载,双击安装就可以,如果还有提升就找更老版本,一般这个提示也不影响使用,强迫症表示必须去除!或者使用最上面的链接,把这个报错给删了
调试方法:
单片机代码的精髓在于调试,Debug能力非常重要,好的代码不是写出来的,而是改出来的,有一些调试方法挺有帮助的
1.Keil、J-Link和J-Scope虚拟示波器
能够直观的观察某些变量的变化趋势对调试会非常有帮助,比如调PID
调试问题:
单片机调试的时候遇到的问题真的是太多太多了,只要一直在写程序,就会一直出问题,记录一些常见或着是比较坑的问题
1.STM32的PB3和PB4不能正常输出高低电平
因为STM32的一些引脚复用的功能,PB3和PB4一般用于SWD调试引脚,所以默认是调试功能,不能正常使用
2.局部变量过大造成栈溢出,跳入硬件错误中断
有时使用了超长的数组,明明逻辑没问题,程序就是跑飞
3.结构体赋值出错,内存字节对齐问题
memcpy用来进行数据解包,赋给结构体确实方便,但是注意数据协议,不然就是瞎解包,数据乱码,硬件逻辑都没毛病,说不定解包的数据还是部分正确的
4.单片机初始化晶振频率错误,程序正常运行但是所有外设不正常工作
多出现在程序移植的时候,原本正常跑的程序移植到另一块版子上就不行了,数据全是乱码,定时器瞎跑,看看板子的晶振多少,初始化对不对,如何查看主频使用标准库函数
RCC_ClocksTypeDef RCC_Clocks;
RCC_GetClocksFreq(&RCC_Clocks);
观察RCC_Clocks这个结构体的数据就可以了,也可以参考这篇博客STM32时钟查看与设置