0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AT32 MCU Printf的功能使用方法

jf_pJlTbmA9 来源:AT32 MCU 雅特力科技 作者:AT32 MCU 雅特力科技 2023-10-27 09:27 次阅读

内容概述

本文档主要介绍AT芯片Keil和IAR两种工程环境下的printf功能使用方法。其共包含如下表统计的6种方法,各方法的具体用法在具体内容中描述。

wKgZomUD6H-AKtnyAAFtltbm3Po909.png 表1. AT芯片的printf函数使用方法汇总

具体内容

IAR环境下经Terminal I/O虚拟终端输出

简介

IAR提供的链接到其Terminal的驱动内就包含有常用的scanf和printf等标准输入输出驱动函数,所以工程文件可直接经IAR自带的Terminal I/O窗口实现信息交互。

例程路径

001_Printf_Test_IAR_Terminalprojectiar_v8.2

环境及硬件设计

1) 环境

本方法需在IAR环境下使用,例程支持的编译环境为IAR_V8,硬件电路板为AT-START-F403A_V1.2。

2) 硬件连接

Link/AT-Link ...connection

wKgZomUD6ICACUIHAAChXqQ2bI0447.png 表2. 硬件连接关系表--(无JTDO)

软件设计

1) 头文件

代码工程文件内添加“stdio.h”。

2) 重定向设定

Printf解除重定向(屏蔽与实际串口的重定向)。

仿真下载

代码经编译后下载到MCU内,然后进入Debug调试环境中,经View->Terminal I/O(下图1)调出虚拟终端,然后全速运行代码即可看到程序主循环内的“Hello World”等内容被打印到了终端交互窗口Output栏(下图1)内,且在该窗口的Input栏内输入的数据也同样会被打印到Output窗口内。

wKgaomUD6IKAXRxmAAFMPXTzcM4887.png 图1. 虚拟终端窗口路径
wKgZomUD6IOActTgAACSEFQ5Irw523.png 图2. 虚拟终端交互窗口

IAR环境下重定向为串口输出

简介

将printf函数重定向到芯片内的一组实际串口,经串口TX脚输出,最后由串口助手工具进行信息交互。

例程路径

002_Printf_Test_IAR_USART2projectiar_v8.2

环境及硬件设计

1) 环境

本方法需在IAR环境下使用,例程支持的编译环境为IAR_V8,硬件电路板为AT-START-F403A_V1.2。

2) 硬件连接

J-Link/AT-Link ...connection

J-Link/AT-Link ...connection

wKgaomUD6IWAZN6zAACh8UvhVxQ851.png 表3. 硬件连接关系表--(无JTDO)

USART2 connection

wKgZomUD6IaAKEg8AABvgPrmRN0011.png 表4. 硬件连接关系表--(USART)

软件设计

1) 头文件

代码工程文件内添加“stdio.h”;

2) 重定向设定

串口初始化并将Printf重定向到实际的串口,重定向函数如下

wKgaomUD6IiAO9cYAABitZf4bRo655.png

仿真与下载

代码经编译后下载到MCU内,然后全速运行代码即可看到程序主循环内的“Hello World”等内容被打印到了终端交互窗口(下图3)内。

wKgZomUD6ImAf1mxAAFR-SYN3OY343.png 图3. 串口助手交互窗口

经Keil平台的Debug(printy) Viewer虚拟终端输出

简介

Keil平台自带有Debug(printf) Viewer接口,在ARM内核集成有常用的scanf和printf等标准输入输出驱动函数的前提下,该接口可用于标准的Printf交互。

例程路径

003_Printf_Test_Keil_JTDOprojectmdk_v5

环境及硬件设计

1) 环境

本方法需在Keil环境下使用,例程支持的编译环境为Keil_V5,硬件电路板为AT-START-F403A_V1.2

2) 硬件连接

J-Link/AT-Link ...connection

wKgaomUD6IuAISA1AAC-r0BH3u4154.png 表5. 硬件连接关系表--(含JTDO)

软件设计

1) 头文件

代码工程文件内添加“stdio.h”;

2) 跟踪引脚分配

wKgaomUD6IyAKyJZAAA3tV3PMlU211.png

3) Printf映射

wKgZomUD6I2AdqJxAACQPq0jKJY780.png

仿真与下载

勾选如下图4中的Enable,并设定Core值,Core值需与系统时钟相等。

设定串口时钟,通常通过勾选如下图4中的Autodetect max SWO C1来实现。当出现打印乱码时,此时可尝试不勾选Autodetect max SWO C1,并手动修改Prescale Core Clk保证打印信息正常。

随后即可编译代码下载到MCU内,然后进入Debug调试环境中,经View->Serial Windows->Debug (printf) Viewer(下图5)调出虚拟终端窗口,然后运行代码即可看到Hello World被实际打印到了终端交互窗口(下图6)内。

wKgaomUD6I-ARsW1AAE0Yp_4ETw160.png 图4. Trace相关设定
wKgZomUD6JGASBpjAAN6hJ333pQ565.png 图5. Keil虚拟终端窗口路径
wKgZomUD6JKASHTxAACysjXK0NY630.png 图6. Keil虚拟终端交互窗口

Keil环境下重定向为串口输出(使用MicroLIB)

简介

Keil环境有自带一个MicroLIB库,其内包含一些支持Printf函数的代码,在将Printf重定向到串口输出时,勾选使用MicroLIB后可由串口助手工具进行信息交互。

例程路径

004_Printf_Test_Keil_USART2_MicroLIBprojectmdk_v5

环境及硬件设计

1) 环境

本方法需在Keil环境下使用,例程支持的编译环境为Keil_V5,硬件电路板为AT-START-F403A_V1.2

2) 硬件连接

J-Link/AT-Link ...connection

wKgaomUD6JOAGdkOAACnES9_zGY770.png 表6. 硬件连接关系表--(无JTDO)

USART2 connection

wKgZomUD6JSARDMzAABux4rpgm4768.png 表7. 硬件连接关系表--(USART)

软件设计

1) 头文件

代码工程文件内添加“stdio.h”;

2) Printf重定向

wKgaomUD6JaAGl4CAABivJiiKD0803.png

3) MicroLIB设定

wKgaomUD6JeAPX2AAAMtCIkIuCk659.png 图7. MicroLIB设定

仿真与下载

代码经编译后下载到MCU内,然后全速运行代码即可看到程序主循环内的“Hello World”等内容被打印到了终端交互窗口(下图8)内。

wKgZomUD6JiAUQfsAAF6MTQphR4020.png 图8. 串口助手交互窗口

Keil环境下重定向为串口输出(不使用MicroLIB)

简介

Keil环境有自带一个MicroLIB库,其内包含一些支持Printf函数的代码。在将Printf重定向到串口输出时,如果不勾选使用MicroLIB,自行在工程文件内添加支持Printf函数的代码段,也同样可由串口助手工具进行信息交互。

例程路径

005_Printf_Test_Keil_USART2__Without_MicroLIBprojectmdk_v5

环境及硬件设计

1) 环境
2) 硬件连接

J-Link/AT-Link ...connection

wKgaomUD6JqACucLAACn_QtBHYU922.png 表8. 硬件连接关系表--(无JTDO)

USART2 connection

wKgZomUD6JuADUbAAAB2PuaOqPk387.png 表9. 硬件连接关系表--(USART)

软件设计

1) 头文件

代码工程文件内添加“stdio.h”;

2) Printf 重定向

wKgZomUD6JyAQhENAABH1JqWj_M516.jpg

3) MicroLIB设定

wKgZomUD6J6AcBWAAAOpkY5L-zk906.png 图9. MicroLIB设定

4) Printf函数支持代码添加

wKgaomUD6J-AScWPAARw7O95uLE975.png

仿真与下载

代码经编译后下载到MCU内,然后全速运行代码即可看到程序主循环内的“Hello World”等内容被打印到了终端交互窗口(下图10)内。

wKgZomUD6KCAZlCdAAGGBFYSur0061.png 图10. 串口助手交互窗口

经JLinkRTT窗口输出

简介

JLink自带有调试输出功能,在添加JLink RTT库代码后,可根据指定的指令实现代码调试输出到对应的窗口。

例程路径

006_Printf_Test_Jlink_RTTprojectmdk_v5

环境及硬件设计

1) 环境

本方法在IAR及Keil环境下均可使用,例程支持的编译环境为IAR_V8、Keil_V5,硬件电路板为AT-START-F403A_V1.2。

2) 硬件连接

J-Link connection

wKgaomUD6KKACc4LAACgLh35Zz4559.png 表10. 硬件连接关系表--(无JTDO)

软件设计

1) 头文件

代码工程文件内添加“stdio.h”;

2) 添加JLink RTT库代码

分别将JLink RTT库代码中的SEGGER_RTT.c和SEGGER_RTT_printf.c添加到工程文件内;

根据编译环境选择添加SEGGER_RTT_Syscalls_IAR.c或SEGGER_RTT_Syscalls_KEIL.c到工程文件内;

3) 输出到PC

此时,代码内调用如下SEGGER_RTT_WriteString或SEGGER_RTT_printf命令即可输出到PC端

wKgZomUD6KOAO9XJAABHNYHeF0g041.png

仿真与下载

1) 通过JLinkRTTClient窗口输出

代码经编译后下载到MCU内,然后进入Debug调试环境中,打开JLink安装路径下名称为JLinkRTTClient的应用程序。此时单步执行代码时即可看到打印信息被依次输出到JLinkRTTClient窗口,如下图11和图12。

wKgaomUD6KSAFH4WAAVCafWGI4Q651.png 图11. 代码工程Debug
wKgZomUD6KaAG0FMAAJyNte6Sl4748.png 图12. JLinkRTTClient窗口输出信息

2) 通过JLinkRTTViewer窗口输出

代码经编译后下载到MCU内,然后打开JLinkRTTViewer窗口,如下图13。

wKgaomUD6KeAITNNAADtOmhEXXw093.png 图13. 打开JLinkRTTViewer窗口

点击OK,并在弹出的窗口再点击OK,然后在弹出的窗口输入并选择如下信息(此处以ZE系列为例),并点击OK。如下图14

wKgaomUD6KiARB7DAADejCJ9_LY631.png 图14. device选择窗口

拿前述代码进入Debug调试环境中,此时单步执行代码时即可看到打印信息被依次输出到JLinkRTTViewer窗口。如下图15

wKgZomUD6KqAY0JyAAFrY6INcu0844.png 图15. JLinkRTTViewer窗口输出信息

注意事项

前述具体内容2.3和2.6的测试时,只能用J-Link,AT-Link暂不支持;

前述具体内容2.1和具体内容2.2的测试时,如果使用AT-Link的话,工程内Options→CMSIS DAP→Reset选项必须选择为Hardware或者System,不然无法连接及下载代码;

前述具体内容2.2的测试时,工程内Options→General Options→Library Configuration→Library选项必须选择为Full,不然无法正常输出。因为只有选择为Full时,支持Printf函数的代码才会被包含进来。

前述具体内容2.6.5.1测试时,因输出窗口应用程序暂时无法指定芯片型号,为保证代码与窗口型号匹配且输出正常,目前工程内Device须选择ST的型号。且工程代码内必须要勾选“Options”内的“Use MicroLIB”,不然代码编译可能会出现异常。

来源:AT32 MCU 雅特力科技
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理


审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    17123

    浏览量

    350986
  • Printf
    +关注

    关注

    0

    文章

    83

    浏览量

    13649
收藏 人收藏

    评论

    相关推荐

    使用AT32 MCU实现OTP寄存器功能

    对于AT32 MCU不同的系列,因为功能改进等原因,安全库区的配置使用可能有所差异。用户使用OTP功能主要目的是需要将一些特殊数据保存其中,在需要时可以读取,并且不允许修改和擦除。目前
    发表于 07-08 12:49 1397次阅读

    AN0002—AT32 MCU如何使用片上Flash来实现EEPROM功能

    的补充。本文档将详细阐述在 AT32 系列 MCU 上使用片上 Flash 来模拟 EEPROM 的应用原理和软件使用方法。Flash 与 EEPROM 的不同 以应用的角度来看,Flash
    发表于 08-15 14:23

    AT32系列MCU上Flash模拟EEPRO的应用原理和使用方法

    AN0002—AT32 MCU如何使用片上Flash来实现EEPROM功能当前诸多嵌入式应用场景都需要用到 EEPROM 作为非易失性的数据存储设备。出于客户低成本的考虑,AT32
    发表于 11-26 07:15

    如何在AT32 MCU上使用FPU功能

    How to use FPU描述了如何在AT32 MCU上使用FPU功能
    发表于 10-24 07:45

    GUIX移植到AT32 MCU的过程和方法

    本应用笔记主要演示GUIX移植到AT32 MCU的过程和方法。本应用笔记在ThreadX OS基础上进行讲解,因此建议阅读者先看AT32的如下应用指南:AN0079_AT32_
    发表于 10-25 07:51

    AT32 MCU USB主机库应用说明

    AT32 MCU USB Host Library Application Note主要描述AT32F4xx 系列USB 主机库的架构和使用方法,方便开发者使用库快速开发USB相关的应用,同时也会介绍
    发表于 10-25 07:02

    AT32 MCU USB设备库应用说明

    AT32 MCU USB Device Library Application Note主要描述AT32F4xx 系列USB 设备库的架构和使用方法,方便开发者使用库快速开发USB相关的应用,同时也会介绍
    发表于 10-25 07:07

    AT32 MCU USART应用说明

    AT32 MCU USART Application Note介绍了AT32 的USART 功能,并对BSP 例程的软件设计加以说明,同时演示使用方
    发表于 10-25 08:11

    AT32外部中断/事件EXINT使用指南

    AT32外部中断/事件EXINT使用指南介绍AT32 系列MCU 的EXINT 功能及其固件驱动程序API,并对BSP 例程的软件设计加以说明,同时演示
    发表于 10-25 06:25

    AN0002—AT32 MCU如何使用片上Flash来实现EEPROM功能

    型号的 MCU 并未搭载片上 EEPROM,但是在此我们将介绍一种使用片上 Flash来模拟 EEPROM 使用的方法,以作为对此应用需求的补充。本文档将详细阐述在 AT32 系列 MCU
    发表于 11-18 16:21 14次下载
    AN0002—<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>如何使用片上Flash来实现EEPROM<b class='flag-5'>功能</b>

    雅特力AT32 MCU USB设备库的架构和使用方法

    这部分主要介绍AT32 USB设备库的结构和库的使用方法AT32 USB是基于USB2.0全速设备,不支持USB2.0高速设备。这里库的作用是用来管理USB外设和实现USB的基本协议,使开发者能够更快的上手开发。
    的头像 发表于 02-22 10:09 2162次阅读

    AT32讲堂006 | AT32 MCU Printf功能使用方法

    内容概述本文档主要介绍AT芯片在Keil和IAR两种工程环境下的printf功能使用方法。其共包含如下表统计的6种方法,各方法的具体用法在具体内容中描述。表1.AT芯片的
    的头像 发表于 06-16 09:44 2131次阅读
    <b class='flag-5'>AT32</b>讲堂006 | <b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>Printf</b>的<b class='flag-5'>功能使用方法</b>

    如何使用AT32 MCU WDT和WWDT?

    如何使用AT32 MCU WDT和WWDT?
    的头像 发表于 11-10 18:26 2033次阅读
    如何使用<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b> WDT和WWDT?

    如何在AT32 MCU上使用FPU功能

    如何在AT32 MCU上使用FPU功能
    的头像 发表于 11-01 17:18 4057次阅读
    如何在<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>上使用FPU<b class='flag-5'>功能</b>

    OTG功能使用方法

    OTG功能使用方法  什么是OTG功能? OTG(On-The-Go)即为“即插即用”的高速USB接口,在目前的市场上企业和普通消费者极度青睐,其在人们的生活中的应用场景非常广泛,比如U盘、键盘
    的头像 发表于 10-30 09:57 4082次阅读