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 操作的更多相关文章

  1. Keil debug command SAVE 命令保存文件的解析

    简介 使用 Keil debug 很方便,把内存中的一段区域 dump 出来也很方便,例如使用命令 SAVE filepath startAddr, endAddr, typeCode .但是要查看 ...

  2. Keil Debug (printf) Viewer

    Debug (printf) Viewer Home » µVision Windows » Debug (printf) Viewer The Debug (printf) Viewer windo ...

  3. pycharm debug的操作

    ###################################### """ pycharm的debug按钮是右上角的一个小虫子, debug,要打断点,debu ...

  4. 汇编语言实验1—Debug基础操作

    1.使用Debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后CPU中相关寄存器中内容的变化. 记录1:最后一条指令执行完BX=(4026)H,AL=(66)H,检验结果. 两种写入:e命令 ...

  5. keil在线烧录突然提示 No target connected #

    keil在线烧录突然提示 No target connected 运行环境 IDE:keil uvsion5 微处理器:STM32F0xx 系列 烧录器:ST-LINK/V2 问题描述 烧录新程序并进 ...

  6. Keil MDK 无法设置断点【worldsing】

    要解决一个问题就怕不知道怎么搜索,或是别人没有遇到过: 同样碰到Keil MDK Debug调试无法设置断点问题,首先来问百度,GOOGLE,一下是我搜索到的结果:   1.keil 不能设置断点,每 ...

  7. IntelliJ IDEA. Debug模式

    资料收集: https://www.bilibili.com/video/av6749471/?p=16 eclipse debug模式. 基础 Intellij Idea--Debug使用 Inte ...

  8. Android开发学习——开发调试工具-DDMS应用,ADB进程,Logcat,Eclipse Debug调试

    DDMS --  Dalvik debug monitor service    调试监控服务 对模拟器进行相关配置. ADB进程   Android debug bridge  建立eclipse和 ...

  9. 【Django】ORM操作#2

    目录 必知必会的13条查询方法 单表查询之神奇的双下划线 一对多 ForeignKey 多对多 ManyToManyField 在Python脚本中调用Django环境 Django终端打印SQL语句 ...

随机推荐

  1. MongoDB安全加固方案,防止数据泄露被勒索

    早上起来,发现生产数据库被删了,留下一个数据库名叫“PLEASE_READ”,里面内容如下: "Info" : "Your DB is Backed up at our ...

  2. 【总结整理】AXURE原件

    iphone:750*1334 一般用分辨率的一半 移动的时候,按住shift拖动,可水平移动 框选的时候,箭头选择包含模式,只要不全部包含进来,就不会被选中 ctrl+'=显示背景网格 ctrl+s ...

  3. PrimeNG01 angular集成PrimeNG

    1 开发环境 本博文基于angular5 2 步骤 2.1 创建angular5项目 详情参见百度 2.2 下载PrimeNG依赖 npm install primeng --save npm ins ...

  4. 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 ...

  5. 2-chrome无法添加扩展程序

    1.更多工具->拓展程序->打开开发者模式->重启浏览器 2.将拓展程序拖入,确认安装

  6. ROS导航包的介绍

    博客转载自:https://blog.csdn.net/handsome_for_kill/article/details/53130707#t3 ROS导航包的应用 利用ROS Navigation ...

  7. 6.AND & OR 运算符

    AND 和 OR 运算符用于基于一个以上的条件对记录进行过滤 AND 和 OR 运算符 AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来. 如果第一个条件和第二个条件都成立,则 A ...

  8. ifcfg-eth0文件参数PREFIX 和 NETMASK的配置不一致问题

    ifcfg-eth0文件参数PREFIX 和 NETMASK的配置不一致问题 摘自:https://blog.csdn.net/aikui0621/article/details/9148997 阅读 ...

  9. SpringMVC——异常处理

    Spring MVC 通过 HandlerExceptionResolver 处理程序的异常,包括 Handler 映射.数据绑定以及目标方法执行时发生的异常. SpringMVC 提供的 Handl ...

  10. JavaWeb中的路径问题

    JavaWEB 开发中的 / 的含义 ①.当前WEB应用的根路径(http://localhost:8080/contextPath/) 请求转发时:request.getRequestDispath ...