(Keil) Debug & Simulation 操作
0x00
printf在MCU環境下print debug error message,利用Logic Analyzer模擬MCU register or GPIO狀態。
若是要要使用printf函數且顯示在Debug Viewer (printf) ,必須加上Regtarge.c這個檔案實際內容如下
#include <stdio.h>
#include <rt_misc.h>
#include "stm32f4xx.h" #pragma import(__use_no_semihosting_swi)
extern int SendChar(int ch);
extern int GetKey(void); struct __FILE {
int handle;
}; FILE __stdout;
FILE __stdin; /* #define ITM_DEBUG = 1 */
#define ITM_DEBUG = 1 //#if defined (ITM_DEBUG)
#ifdef ITM_DEBUG int fputc(int ch, FILE *f) {
return (ITM_SendChar(ch));
}
#else int fputc(int ch, FILE *f)
{
return SendChar(ch);
} #endif int fgetc(FILE *f) {
return (SendChar(GetKey()));
} void _ttywrch(int ch) {
SendChar (ch);
} int ferror(FILE *f) {
return EOF;
} void _sys_exit(int return_code) {
label: goto label;
}
在6, 7行的函數主要有在main.c裡頭實現,目的是將printf函數內容透過USART傳送到PC,而Regtarge.c主要目的改寫底層函數。
extern int GetKey(void);
extern int GetKey(void);
在配置上我捫必須做一點小更改 Micro LIB 打勾,這樣就可以使用C standard library相關函數。

但這樣還無法完全使用printf顯示到 debug viewer上,必須在對debugger (ICE) 做一點設定上的修改。
Core Clock 必須填上System Clock才能正常顯示在視窗上。

假如需要使用類似邏輯分析儀(LA)的功能,可以透過Keil配置使用 Logic Analyzer。
首先針對MCU的Mamory Map針對週邊實際定義的Address設定read/write權限。
建立一個ini檔案內容如下
map 0x40000000,0x400FFFFF read write

在Keil裡頭選擇ini檔案位置,確認可以針對Address可以進行模擬。紅框部分都是需要注意的地方。

Keil LA 使用上必須填寫Address的正確位置,範例是針對GPIO做模擬,所以只會看到GPIO H/L。
Sample code是delay 500us 進行GPIO轉態,d代表cursor的時間差0.5ms也就是delay 500us。

輸入Reg使用方法如下。

(Keil) Debug & Simulation 操作的更多相关文章
- Keil debug command SAVE 命令保存文件的解析
简介 使用 Keil debug 很方便,把内存中的一段区域 dump 出来也很方便,例如使用命令 SAVE filepath startAddr, endAddr, typeCode .但是要查看 ...
- Keil Debug (printf) Viewer
Debug (printf) Viewer Home » µVision Windows » Debug (printf) Viewer The Debug (printf) Viewer windo ...
- pycharm debug的操作
###################################### """ pycharm的debug按钮是右上角的一个小虫子, debug,要打断点,debu ...
- 汇编语言实验1—Debug基础操作
1.使用Debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后CPU中相关寄存器中内容的变化. 记录1:最后一条指令执行完BX=(4026)H,AL=(66)H,检验结果. 两种写入:e命令 ...
- keil在线烧录突然提示 No target connected #
keil在线烧录突然提示 No target connected 运行环境 IDE:keil uvsion5 微处理器:STM32F0xx 系列 烧录器:ST-LINK/V2 问题描述 烧录新程序并进 ...
- Keil MDK 无法设置断点【worldsing】
要解决一个问题就怕不知道怎么搜索,或是别人没有遇到过: 同样碰到Keil MDK Debug调试无法设置断点问题,首先来问百度,GOOGLE,一下是我搜索到的结果: 1.keil 不能设置断点,每 ...
- IntelliJ IDEA. Debug模式
资料收集: https://www.bilibili.com/video/av6749471/?p=16 eclipse debug模式. 基础 Intellij Idea--Debug使用 Inte ...
- Android开发学习——开发调试工具-DDMS应用,ADB进程,Logcat,Eclipse Debug调试
DDMS -- Dalvik debug monitor service 调试监控服务 对模拟器进行相关配置. ADB进程 Android debug bridge 建立eclipse和 ...
- 【Django】ORM操作#2
目录 必知必会的13条查询方法 单表查询之神奇的双下划线 一对多 ForeignKey 多对多 ManyToManyField 在Python脚本中调用Django环境 Django终端打印SQL语句 ...
随机推荐
- Python基础学习四 列表、元组、字典、集合
列表list,用中括号“[ ]”表示 1.任意对象的有序集合 列表是一组任意类型的值,按照一定顺序组合而成的 2.通过偏移读取 组成列表的值叫做元素(Elements).每一个元素被标识一个索引,第一 ...
- nodejs npm install -g 全局安装和非全局安装的区别
1. npm install xxx -g 时, 模块将被下载安装到[全局目录]中. [全局目录]通过 npm config set prefix "目录路径" 来设置. 比如说, ...
- swift之xib关联UIView
有点坑爹,设置file owner 不行,搞了一早上,来说下怎么关联吧 自定义UIView要重写 required init(coder aDecoder: NSCoder) { super.init ...
- Linux下安装Python2.7
Linux下安装Python2.7 CentOS6.8 中默认安装了Python2.6,但是很多应用需要使用Python2.7,于是要学会如何在Linux下安装Python2.7,这里记录一下,免得以 ...
- Django中间件CsrfViewMiddleware源码分析
Django Documentation csrf保护基于以下: 1, 一个CSRF cookie基于一个随机生成的值,其他网站无法得到,次cookie有CsrfViewMiddleware产生.它与 ...
- Linux GCC编译警告:Clock skew detected. 错误解决办法
今天在虚拟机上用GCC编译一个程序的时候,出现了下面的错误: make: warning: Clock skew detected. Your build may be incomplete 试了ma ...
- laravel中间键组
` php artisan make:middleware Lend这边我定义一个登陆的中间件这边要注意的就是,当条件成立的时候一定要 return $next($request);不写这个larav ...
- Android selector中的item的顺序
在selector中,要将默认状态的item放在最后面,因为一旦前面的item满足匹配条件,后面的item就不会去匹配.因此,把默认状态的item放在前面的话,后面的item没有执行的机会
- ajax load事件
ajax.load 使用ajax 来改变div元素文本. load( url [, data][, callback] ) load()方法的传递方式根据参数data来自动指定.如果没有参数传递,则 ...
- c语言实践 用1角 2角 5角 凑成10元钱的方法
/* 用1角,2角,5角凑出10元钱,有几种办法. 也就是0.1a+0.2b+0.3c=10,化简一下就是 a=100-2b-3c 因为a的范围是0到100,所以弄一个循环 把a的值从0尝试到100, ...