Keil的一些使用技巧

简介: Keil的一点使用技巧

在开发中Keil的一点使用技巧:使用ARM V6编译器和gun11标准;查找导致进入HardFault_Handler的函数;SAVE命令将数据导出到文件;开启FPU硬件浮点数和添加DSP库

使用ARM V6编译器和gun11标准

ARM V5编译器已经停止开发了,是时候换到V6编译器了。

  • 工具栏 Options for Target - Target - Code Generation - ARM Compiler

    这里可以选择指定版本的V6编译器,或是Use default compiler version 6

  • 在切换至ARM V6编译器后,Options for Target设置栏里面的C/C++会变成C/C++(AC6)。这时切换至C/C++(AC6)选项卡即可在Language C处选根据需要择使用c11 / gun11
  • Optimization可以调整优化等级。如果不想要编译器优化可以设置成Level0 (-O0)
  • 另外注意一下CUBEMX默认生成FreeRTOS函数使用的是V5编译器的标准(至少在我当前使用的版本STM32F4 Package 1.26.2是这样的)切换成V6后编译会报错。解决方法只需要替换一下CUBEMX包的文件就好。

    进入芯片软件包的安装目录...\STM32Cube_FW_F4_V1.26.2\Middlewares\Third_Party\FreeRTOS\Source\portable 将RVDS文件夹里的ARM_CM4F文件夹,替换为GCC里的ARM_CM4F文件夹即可。再重新用CUBEMX生成工程,FreeRTOS就可以通过ARMV6编译了。另外软件包升级之后也要重新替换一下。

查找导致进入HardFault_Handler的函数

致使程序进入HardFault_Handler硬件错误中断函数的原因有很多。可以调试打断点然后跳转到出问题的函数

首先在HardFault_Handler的while(1)前打调试断点

当程序执行到断点后,在Keil菜单栏点击 View - Call Stack Window ,会弹出 Call Stack + Locals 对话框

右键单机HardFault_Handler,然后选择 Show Caller Code

之后就会跳转到出错之前的函数处。 Disassembly 窗口也会用黄色高亮显示来源。

之后就是改Bug了 多查一查这部分函数调用情况,另外多注意下数组是否可能会出问题

SAVE命令将数据导出到文件

调试时,打开Command窗口(如果没有的话就在系统菜单 View - Command Window 启用)

在窗口的下方有一个输入框,在其中输入SAVE命令,回车执行

SAVE D:\test.txt  0x20000100,0x2000200

参数的涵义也不难理解:

D:\test.txt 是文件路径和文件名;

0x20000100 是待存储的起始地址;

0x20000200 是待存储的终止地址 ;

,accSize 为可选项,代表读取目标内存的字节大小。

不过最终输出的是txt文件和HEX格式的数据,后期处理和使用起来也确实稍有些麻烦。

官方SAVE命令文档 https://www.keil.com/support/man/docs/uv4/uv4_cm_save.htm

https://developer.arm.com/documentation/ka002842/latest

开启FPU硬件浮点数和添加DSP库

工具栏 Manage Run - Time Environment - CMSIS - DSP 勾选,即可完成添加DSP。不过建议用CubeMX软件包的方式添加

详细的写在另一篇博客了 https://ittuann.github.io/2021/12/25/DSP

杂项

不太好归类但是也想要说一下。

  • 修改ROM起始地址

    Options for Target - Target - IROM1 下修改

目录
相关文章
|
NoSQL 编译器 Linux
CodeBlocks-20.03下载安装及中文教程
CodeBlocks强大之处 1、跨平台,windows、linux 、mac都可以用 2、轻量化,远不及VS占用空间 3、完全免费
4046 1
CodeBlocks-20.03下载安装及中文教程
|
存储 编解码 缓存
Qt开发技术:Qt绘图系统(一)绘图系统介绍
Qt开发技术:Qt绘图系统(一)绘图系统介绍
Qt开发技术:Qt绘图系统(一)绘图系统介绍
|
存储 分布式计算 Java
深入探索Java在云计算领域的应用与优势
深入探索Java在云计算领域的应用与优势
737 0
|
Linux 开发工具 Windows
改善编程体验: IdeaVimExtension介绍
# 改善编程体验: IdeaVimExtension介绍 ## 动机 Intellij IDEA是个非常优秀的开发环境,提供了相当好用的快捷键,让用户有机会脱离鼠标来使用IDE. 另外官方还提供了IdeaVim插件,熟悉vim的用户可以使用几乎与vim相同的方式操作IDEA的编辑器来编写代码.
5272 0
|
2月前
|
存储 网络协议 安全
C语言深度解析:位域的底层逻辑与跨平台避坑指南
位域是C语言专为bit级内存操控设计的特性,用于嵌入式寄存器映射、协议解析等场景,可大幅节省内存。但其布局受编译器、字节序、对齐规则影响,存在有符号陷阱、跨平台不一致、不可取地址等风险。慎用,优先选unsigned int,跨平台务必改用位运算。
|
7月前
|
文字识别 自然语言处理 数据处理
《大模型赋能文化遗产数字化:古籍修复与知识挖掘的技术实践》
本文记录大模型赋能文化遗产数字化的实践,针对古籍异体字识别难、残缺文本补全不准、隐性知识难挖掘、多模态数据割裂、中小机构部署难、知识难更新等痛点,提出对应方案:搭建古籍文字与语境知识库提升识别理解率,以多源史料关联与历史逻辑约束实现文本精准补全,构建多层级框架挖掘隐性知识,设计多模态语义对齐整合多元信息,通过轻量化优化与混合部署降低使用门槛,建立动态机制保障知识迭代。优化后多项关键指标显著提升,为古籍数字化提供有效路径。
460 9
|
前端开发 JavaScript API
(前端3D模型开发)网页三维CAD中加载和保存STEP模型
本文介绍了如何使用`mxcad3d`库在网页上实现STEP格式三维模型的导入与导出。首先,通过官方教程搭建基本项目环境,了解核心对象如MxCAD3DObject、Mx3dDbDocument等的使用方法。接着,编写了加载和保存STEP模型的具体代码,包括HTML界面设计和TypeScript逻辑实现。最后,通过运行项目验证功能,展示了从模型加载到保存的全过程。此外,`mxcad3d`还支持多种其他格式的三维模型文件操作。
1484 117
|
Web App开发 设计模式 SQL
|
Windows
LabVIEW使用 NI Package Manager(NIPM)修复软件
LabVIEW使用 NI Package Manager(NIPM)修复软件
886 3
|
传感器 人工智能 智能设计
《智启新材热学性能优化之路:人工智能的神奇力量》
在科技飞速发展的时代,材料科学与人工智能的融合成为创新前沿。AI优化材料热学性能,从航空航天到电子设备散热管理,影响深远。通过精准预测、智能设计、实时监测与反馈,AI大大缩短研发周期,提升材料性能,推动热学材料领域的突破,为各行业带来新的曙光和可能性。
294 0