KEIL仿真时使用printf函数打印调试信息

这篇具有很好参考价值的文章主要介绍了KEIL仿真时使用printf函数打印调试信息。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

KEIL仿真时使用printf函数打印调试信息


前言

在使用Keil仿真时有时想要查看程序的打印信息,主要有两种方法,方法一:使用keil自带的Debug(printf)viewer窗口打印;方法二:使用串口打印。这两种方法其实都是通过将printf函数重定向的方法来打印调试信息。下面简单介绍一下两种方法


一、方法一:使用keil自带的Debug(printf)viewer窗口打印

Keil进入仿真时,可以看到有一列工具栏,在其中找到Serial windows窗口,可以看到有四个串口选项,这里我们选择我们需要的Debug(printf)Viewer窗口,如下图所示。

keil中仿真printf打印窗口,单片机,stm32,嵌入式硬件,arm开发
仿真运行程序,Debug(printf)Viewer窗口此时什么都没有显示,我们需要将printf函数重定向到ITM口,需要在程序中添加如下代码:

#define ITM_Port8(n)    (*((volatile unsigned char *)(0xE0000000+4*n)))
#define ITM_Port16(n)   (*((volatile unsigned short*)(0xE0000000+4*n)))
#define ITM_Port32(n)   (*((volatile unsigned long *)(0xE0000000+4*n)))

#define DEMCR           (*((volatile unsigned long *)(0xE000EDFC)))
#define TRCENA          0x01000000
struct __FILE { int handle; /* Add whatever is needed */ };
FILE __stdout;
FILE __stdin;

int fputc( int ch, FILE *f ) {
    if (DEMCR & TRCENA) 
    {
        while (ITM_Port32(0) == 0);
        ITM_Port8(0) = ch;
    }
    return(ch);
}

代码添加完成后打开魔术棒的Debug窗口,调试器选择J-LINK/J-TRACE Cotex(我这里调试器用的是J-LINK),打开Settings窗口,打开Settings后选择Trace窗口,配置ITM Stimulus Ports,只使能 Port0,如下图所示。
keil中仿真printf打印窗口,单片机,stm32,嵌入式硬件,arm开发
配置好后再进行仿真,查看Debug(printf)Viewer窗口,这时不出意外应该可以看到调试信息了,例如下图。
keil中仿真printf打印窗口,单片机,stm32,嵌入式硬件,arm开发

二、方法二:重定向到串口打印

还是使用fputc函数,在程序中添加如下代码:

int fputc( int ch, FILE *f )
{
  USART_SendData(USART2,(uint8_t)ch);
  while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);
	return ch;
}

这里可以不用USART2,换成任意串口都可以。文章来源地址https://www.toymoban.com/news/detail-768786.html


到了这里,关于KEIL仿真时使用printf函数打印调试信息的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • keil5软件仿真stm32设置 和 调试技巧

    不想用板子的时候或没有板子的时候,软件仿真更方便调试快速验证; KEIL两大功能:1.编译器功能;2.调试器功能 1.选择 Use simulaor 代表要使用软件模拟仿真 2.“dialog DLL”的内容是 DARMSTM.DLL ,表示使用STM系列 3.把“dialog DLL”的内容换成 TARMSTM.DLL , 4.parameter”的内容是 -pSTM

    2024年02月13日
    浏览(55)
  • MDK Keil查看map文件及编译占用内存信息、函数入口地址

    一、在哪里打开map文件查看 (1)第一种,在keil软件下,双击你的工程名,map就会弹出 (2)第二种,点击魔术棒,查看 Lis文件输出的位置入口 我的在output...文件下,那我们工程的文件夹下,找到output 二、查看map文件信息 (1)函数定义的位置信息 如图,这些你定义函数的

    2024年02月05日
    浏览(47)
  • keil仿真和使用示波器调波形

    Debug的设置,点击魔法棒进行配置 一般情况下,设置后就可以调试出波形,但是报错: error 65: access violation at 0x40023800 : no \\\'read\\\' permission 根本原因是:map地址空间权限映射有问题。部分地址空间没有读写的权限,造成程序不能自动运行。有两个解决办法: 1.方法一 1.1 工程文件

    2024年02月15日
    浏览(46)
  • STM32在Keil中使用串口助手打印中文字符出现乱码问题

     问题如下,中文字符显示乱码,但数字正常。 通常这种在串口助手打印出现乱码情况: 无非是 波特率设置错误 ,不对应。就像一个滴水的水龙头,水滴进一个循环开合的容器,双方速率不能很好匹配,一定会出现水滴不能完全滴进容器,或者完全滴进或者完全滴不进的情

    2024年02月09日
    浏览(45)
  • 【工具使用】Keil5软件使用-进阶调试篇

        本文面向已经懂得软件基本操作的职业老手,如果是未使用过该软件的小鲜肉,请移步基础篇。这里以STM32芯片为例对工具进行讲解,其他品牌的芯片在调试方面上可能存在差异。     Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试

    2024年02月03日
    浏览(60)
  • stm32 使用keil无实物(软件)仿真,虚拟串口通讯

    准备 1.keil 2.vspd虚拟串口 3.sscom串口助手 4.CubeMX 设置好ini文件和程序后,编译前虚拟串口是关闭的  编译完成后,串口显示打开,说明keil使用了vspd的串口。  然后就是修改程序,接收和发送数据。 无硬件仿真,有些定时器和其他一些配置通过 CubeMX 进行配置,再把配置文件给

    2024年02月12日
    浏览(69)
  • stm32(HAL库)使用printf函数打印到串口

    目录 1、简介 2.1 基础配置 2.1.1 SYS配置  2.1.2 RCC配置 2.2 串口外设配置  2.3 项目生成  3、KEIL端程序整合   4、效果测试 在HAL库中,常用的printf函数是无法使用的。本文通过重映射实现在HAL库中进行printf函数。 2.1.1 SYS配置  2.1.2 RCC配置 在usart.c函数最下方复制如下代码 接着在

    2024年02月14日
    浏览(45)
  • Keil环境下CANopenNode移植到STM32问题记录(一)---printf重定向问题

    在直接将CANopenSTM32的示例工程直接移植到Keil环境下。 如果移植工程未实现printf函数重定向,则要注释掉log_printf下面的printf函数,使日志打印失效 在未在选项中勾选使用微库的时候,程序会卡死。调试会发现是卡死在了BKAP 0xAB处,网上搜索会有很多说明,是因为使用了print

    2024年02月13日
    浏览(48)
  • keil构建STM32工程并使用proteus仿真led点灯实验

        STM32单片机与51单片机有很大区别,不仅结构上有很大差异,STM32更复杂一些,在操作上来说,STM32也要复杂很多,51单片机上手写代码,可以很直接操作引脚,但是STM32单片机在操作引脚之前需要作很多初始化工作,比如开启时钟使能,GPIO管脚初始化。     下面就入门S

    2024年02月02日
    浏览(66)
  • 【STM32学习5】STM32使用printf函数 打印到电脑串口助手

    本文所使用的方法与代码参考自正点原子,如果想要详细了解这方面的知识,请阅读正点原子官方提供的文档。 在开发STM32应用时,将一些信息通过串口打印到电脑上是常用的调试手段。C语言标准库中的printf函数是我们常用的打印函数。但是在STM32应用下一般无法直接使用这

    2024年02月02日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包