(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语句 ...
随机推荐
- 各大IT/IC公司offer比较
1:本人西电通院2013届毕业硕士,根据今年找工作的情况以及身边同学的汇总,总结各大公司的待遇如下,吐血奉献给各位学弟学妹,公司比较全,你想去的公司不在这里面,基本上是无名小公司了:但无名小公司有时也 ...
- 【bzoj1017】[JSOI2008]魔兽地图DotR
1017: [JSOI2008]魔兽地图DotR Time Limit: 30 Sec Memory Limit: 162 MBSubmit: 1658 Solved: 755[Submit][S ...
- php常用 随机数
<?php $number =range(1,50); //shuffle 将数组顺序随即打乱. shuffle($number); print_r($number); echo '<br ...
- 633. Sum of Square Numbers 是否由两个完全平方数构成
[抄题]: Given a non-negative integer c, your task is to decide whether there're two integers a and b s ...
- SpringMVC——处理数据模型
Spring MVC 提供了以下几种途径输出模型数据: ModelAndView: 处理方法返回值类型为 ModelAndView时, 方法体即可通过该对象添加模型数据 Map 及 Model: 入参 ...
- php抓取网页中的内容
以下就是几种常用的用php抓取网页中的内容的方法.1.file_get_contentsPHP代码代码如下:>>>>>>>>>>>&g ...
- LightOJ 1282 Leading and Trailing (数学)
题意:求 n^k 的前三位和后三位. 析:后三位,很简单就是快速幂,然后取模1000,注意要补0不全的话,对于前三位,先取10的对数,然后整数部分就是10000....,不用要,只要小数部分就好,然后 ...
- 第07章-Spring MVC 的高级技术
Spring MVC 的高级技术 1. Spring MVC配置的替代方案 1.1 自定义DispatcherServlet配置 AbstractAnnotationConfigDispatcherS ...
- Java 错误结果Throw/Throws
目录 java处理异常方式 throw的作用 throws的作用 方法原理 举例 总结 个人实例 1.java处理异常方式 在java代码中如果发生异常的话,jvm会抛出 ...
- 编写高质量代码改善C#程序的157个建议——建议11: 区别对待==和Equals
建议11: 区别对待==和Equals 在开始本建议之前,首先要明确概念“相等性”.CLR中将“相等性”分为两类:“值相等性”和“引用相等性”.如果用来比较的两个变量所包含的数值相等,那么将其定义为“ ...