内容概述
本文档主要介绍at芯片在keil和iar两种工程环境下的printf功能使用方法。其共包含如下表统计的6种方法,各方法的具体用法在具体内容中描述。
表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
表2. 硬件连接关系表--(无jtdo)
软件设计
1) 头文件
代码工程文件内添加“stdio.h”。
2) 重定向设定
printf解除重定向(屏蔽与实际串口的重定向)。
仿真与下载
代码经编译后下载到mcu内,然后进入debug调试环境中,经view->terminal i/o(下图1)调出虚拟终端,然后全速运行代码即可看到程序主循环内的“hello world”等内容被打印到了终端交互窗口output栏(下图1)内,且在该窗口的input栏内输入的数据也同样会被打印到output窗口内。
图1. 虚拟终端窗口路径
图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
表3. 硬件连接关系表--(无jtdo)
usart2 connection
表4. 硬件连接关系表--(usart)
软件设计
1) 头文件
代码工程文件内添加“stdio.h”;
2) 重定向设定
串口初始化并将printf重定向到实际的串口,重定向函数如下
仿真与下载
代码经编译后下载到mcu内,然后全速运行代码即可看到程序主循环内的“hello world”等内容被打印到了终端交互窗口(下图3)内。
图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
表5. 硬件连接关系表--(含jtdo)
软件设计
1) 头文件
代码工程文件内添加“stdio.h”;
2) 跟踪引脚分配
3) printf映射
仿真与下载
勾选如下图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)内。
图4. trace相关设定
图5. keil虚拟终端窗口路径
图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
表6. 硬件连接关系表--(无jtdo)
usart2 connection
表7. 硬件连接关系表--(usart)
软件设计
1) 头文件
代码工程文件内添加“stdio.h”;
2) printf重定向
3) microlib设定
图7. microlib设定
仿真与下载
代码经编译后下载到mcu内,然后全速运行代码即可看到程序主循环内的“hello world”等内容被打印到了终端交互窗口(下图8)内。
图8. 串口助手交互窗口
keil环境下重定向为串口输出(不使用microlib)
简介
keil环境有自带一个microlib库,其内包含一些支持printf函数的代码。在将printf重定向到串口输出时,如果不勾选使用microlib,自行在工程文件内添加支持printf函数的代码段,也同样可由串口助手工具进行信息交互。
例程路径
005_printf_test_keil_usart2__without_microlibprojectmdk_v5
环境及硬件设计
1) 环境
2) 硬件连接
j-link/at-link ...connection
表8. 硬件连接关系表--(无jtdo)
usart2 connection
表9. 硬件连接关系表--(usart)
软件设计
1) 头文件
代码工程文件内添加“stdio.h”;
2) printf 重定向
3) microlib设定
图9. microlib设定
4) printf函数支持代码添加
仿真与下载
代码经编译后下载到mcu内,然后全速运行代码即可看到程序主循环内的“hello world”等内容被打印到了终端交互窗口(下图10)内。
图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
表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端
仿真与下载
1) 通过jlinkrttclient窗口输出
代码经编译后下载到mcu内,然后进入debug调试环境中,打开jlink安装路径下名称为jlinkrttclient的应用程序。此时单步执行代码时即可看到打印信息被依次输出到jlinkrttclient窗口,如下图11和图12。
图11. 代码工程debug
图12. jlinkrttclient窗口输出信息
2) 通过jlinkrttviewer窗口输出
代码经编译后下载到mcu内,然后打开jlinkrttviewer窗口,如下图13。
图13. 打开jlinkrttviewer窗口
点击ok,并在弹出的窗口再点击ok,然后在弹出的窗口输入并选择如下信息(此处以ze系列为例),并点击ok。如下图14
图14. device选择窗口
拿前述代码进入debug调试环境中,此时单步执行代码时即可看到打印信息被依次输出到jlinkrttviewer窗口。如下图15
图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 雅特力科技
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理
UART寄存器的循环缓冲区实现以及中断驱动的UART实现和硬件设置
L2级自动驾驶系统体验实测 带给你不一样的体验
iOS11正式版今晚1点正式推送:新功能颇多,修复旧设备的Bug,你准备升级吗?
基于iOS技术开发的安防移动客户端
日本家用美容仪哪家强?看谁与宙斯雅萌相媲美!
AT32 MCU Printf的功能使用方法
用于紫外线杀菌灯的电子镇流电路分享
施耐德电气智能配电2022,数字引擎助力“双碳”加速度
新加坡杭州科技园电气火灾监控系统的应用的应用
温度传感器有哪些分类分别基于什么原理
西门子变频器F-015故障解决方法
ARM9微控制器的软硬件平台设计
工业低频RFID应用:半导体RFID读卡器端口说明
DIY一个简单的触摸延时电路
多根单芯电缆的详细说明
基于HD-SDI标准接口的高清摄像机的特点及应用
在线教育成趋势,打破线下课堂的地域限制实现跨区域协同
解读红外热像仪相比于可见光相机优势
Cadence Voltus-XFi可用于Samsung Foundry的先进 5LPE 工艺技术
区块链众多的应用中哪个最有前景