本文为百问网&韦东山【物联网智能家居实战训练营】课程笔记
1 工程配置
1.1 Device
1.2 Target
不使用软件仿真可以不用管Xtal参数。
MrcroLIB对C库进行了裁剪优化,很多C库函数不能直接使用,添加下列代码可以在不使用微库下,正常使用printf
和scanf
重定向到串口等输出设备:
#pragma import(__use_no_semihosting)
struct __FILE
{
int a;
};
FILE __stdout;
FILE __stdin;
void _sys_exit(int x)
{
}
1.3 Output
不勾选Browse Information
无法F12跳转。
1.4 ListIng
.LST
:Listing file generated by the C Compiler or Assembler. C及汇编编译器产生的列表文件。.I
: C Preprocessor Output File. 预处理后的文件。.map
:存储镜像文件,比较重要,可以分析生成代码的详细信息,如代码大小、变量所占用的存储器地址等。
1.5 User
在“After Build/Rebuild”添加fromelf --bin -o "$L@L.bin" "#L"
,同时勾选“Run #1”,表示在编译完后,执行fromelf命令生成bin
文件。
1.6 C/C++
使用cubemx生成MDK工程,则不用添加文件路径。
1.7 Asm
Asm界面一般配置汇编代码,不常用。
1.8 Linker
Use Memory Layout from Target Dialog
:使用分散文件加载对话框Target页面Make RW Sections Position Independent
:使RW段独立(–rwpi)Make RO Sections Position Independent
:使RO段独立(–ropi)Don't Search Standard Libraries
:禁用默认编译器运行时库的扫描(–noscanlib)Report 'might fail' Conditions as Errors
:报告的条件可能导致失败的错误,而不是警告(–strict)xx BASE
:X/O、R/O、R/W基地址(–xo_base=address)disable Warnings
:警用警告(–diag_suppress)
1.9 Debug
Load Application at Startup
:启动时加载应用程序。
Run to main()
:进入调试模式时,main(),即跳过汇编代码,直接跳转到 main函数开始仿真。- 复位调试会话设置
Restore Debug Session Settings
:如果勾选上,点击一下“复位”就会恢复到之前的状态。包括:断点Breakpoints、窗口Watch Windows、性能分析器 Performance Analyzer、内存窗口Memory Window、工具箱Toolbox、系统查阅器System Viewer等。 Dialog DLL - Parameter
:会话框DLL文件和参数;CPU/Driver DLL - Parameter
:CPU驱动文件和参数。
Dialog DLL分别为:DARMSTM.DLL
和TARMSTM.DLL
; Parameter均为:pSTM32F103RC
(p+具体芯片信号),用于设置支持相应芯片的软硬件仿真(即可以通过Peripherals选择对应外设的对话框观察仿真结果)。Manage Component Viewer Description Files
:管理组件描述文件(一般不用)
硬件仿真下载配置:
2 仿真调试
2.1 常规调试窗口
2.2 观察窗口
查看变量的值:
默认16进制显示,可修改。
查看内核和外设寄存器值:
如查看GPIOA寄存器:
查看内核外设寄存器NVIC:
- E:使能/失能中断
- P:中断是否挂起
- A:中断是否得到响应
也可以点击Peripherals
选择相应外设查看:
查看函数调用栈:
注意:
- Keil软件仿真时出现
no ‘write’ permission”,no ‘read’ permission
的错误:没有设置debug选项中的DLL。 - 逻辑分析仪也要设置DLL,并且只能在软件仿真下使用,不能用于硬件仿真,否则提示
Unknown Signal.
,或者出现如下错误:
Keil系列教程参考:
- Keil(MDK-ARM)介绍、下载、安装与注册
- Keil(MDK-ARM)系列教程(一)_新建软件工程详细过程
- Keil(MDK-ARM)系列教程(二)_工具栏详细说明
- Keil(MDK-ARM)系列教程(三)_工程目标选项配置(Ⅰ)
- Keil(MDK-ARM)系列教程(四)_工程目标选项配置(Ⅱ)
- Keil(MDK-ARM)系列教程(五)_Configuration(Ⅰ)
- Keil(MDK-ARM)系列教程(六)_Configuration(Ⅱ)
- Keil(MDK-ARM)系列教程(七)_菜单
END