当前位置: 首页 > news >正文

电子商务企业 网站前台建设 苏宁推广网络广告

电子商务企业 网站前台建设 苏宁,推广网络广告,18款禁用网站app全部,厦门北京网站建设公司哪家好目录 RTT(Real Time Transfer)简介 使用教程 常用API介绍 RTT缓冲大小修改 使用printf重定向 官方例程 RTT(Real Time Transfer)简介 平常调试代码中使用串口打印log,往往需要接出串口引脚,比较麻烦,并且串口打印速度较慢,串…

目录

 

RTT(Real Time Transfer)简介

使用教程

常用API介绍

RTT缓冲大小修改

使用printf重定向

官方例程


RTT(Real Time Transfer)简介

平常调试代码中使用串口打印log,往往需要接出串口引脚,比较麻烦,并且串口打印速度较慢,串口的中断可能会影响代码的执行效率。

SEGGER RTT支持使用J-link调试器输出来自目标微控制器的信息,也可以接收输入,并且在高速度交互的同时不会影响目标处理器的实时性,可以省掉平常打印日志用的串口。

SEGGER RTT可用于任何J-Link型号和任何支持后台内存访问的目标处理器,即Cortex-M和RX目标。

RTT支持两个方向、多个通道,上到主机,下到目标,它可以用于不同的目的,为用户提供尽可能多的自由。默认实现每个方向使用一个通道,用于可打印终端输入和输出。

使用J-Link RTT Viewer,可用于“虚拟”终端,允许打印到多个窗口(例如,一个用于标准输出,一个对于错误输出,一个用于调试输出)。

463331ac801040f2beebdaf76c02fc74.jpeg

SEGGER RTT的性能显著高于用于向主机PC输出数据的任何其他技术。平均一行文本可以在一微秒或更短的时间内输出。基本上相当于执行单个memcopy()的时间。在运行于168 MHz的STM32F407 Cortex-M4上进行了速度比较,如下图,其中不包括printf()调用的时间。

b7abf417c5844ed4bb6a9f16f0cde1c6.jpeg

将输出数据发送到主机的最大速度取决于目标缓冲区大小和目标接口速度。即使使用512字节的小目标缓冲区,RTT速度也可能高达1 MB/s,而常规J-Link型号的RTT速度可能高达0.5 MB/s。

5671225e95c54e03afc89bb4968e4668.jpeg

RTT上行信道的缓冲器可以相对较小。所需的最小缓冲区大小可以通过一毫秒内写入的数据量和一次写入操作中写入的最大值来近似得到。如果数据发送频率较低,则缓冲区应该有足够的空间用于一次写入发送的数据。如果数据发送频率更高,缓冲区大小应足以满足一毫秒内写入的最大数据量。下图显示了在168 MHz的SEGGER emPower评估板(NXP K66部件)下,使用J-Link PRO V4@36 MHz JTAG速度测量出的,每100 us和每1ms发送均匀分布的不同数据量时所需的最小缓冲区大小。

f320fb070fd246a5b948a46918077288.jpeg

b112e14cb301407f8d062d6b6224e9c9.jpeg

RTT实现代码为RAM中的控制块使用约500字节的ROM和24字节ID+24字节每个通道。每个通道都需要一些缓冲区内存。根据输入/输出的负载,上行通道的建议大小为1 kByte,下行通道的建议值为16至32 Byte。

a5e8b03eabfb4ae1be48e2355c454c5c.jpeg

使用教程

1.首先安装J-Link的软件驱动:SEGGER - The Embedded Experts - Downloads - J-Link / J-Trace

2.安装完成后,打开J-Link的安装目录(开始->SEGGR->J-Link RTT Viewer->右键打开文件所在位置->然后继续右键打开文件所在位置->此时就是安装目录了),

5b1a5b3080c0472e80c1f0ef1226bfd3.jpeg

找到如下路径SEGGER\JLink\Samples\RTT,解压路径里面的压缩包SEGGER_RTT_V770c.zip(不同的版本,V后面的数字可能不一样)。

6a8a3bd59e894397aeebeedf855f0c77.jpeg

3.将解压完的文件拷贝到代码工程目录中。

4. MDK工程下新建一个RTT的文件夹,把解压的文件复制到RTT目录下,将这些文件添加到MDK的工程中,不要忘了还有头文件目录。

195f8db111a54cc29c882dee745fc5e2.jpeg

5.工程加入文件后,在想要用到RTT的文件中包含#include "SEGGER_RTT.h",然后直接调用SEGGER_RTT_printf()就好了,例如SEGGER_RTT_printf(0,"Hello RTT~");这个和C语言的printf的格式差不多,就是前面加了一个端口0的参数,代码编辑后编译无错误后下载。

6.然后点击开始->SEGGR->J-Link RTT Viewer,打开J-Link RTT Viewer 选择好你的芯片型号后,点击确认。在很多设备上RTT地址是可以自动是被识别到的,对于不能自动识别的设备,需要自行输入RTT地址,RTT地址即为代码中结构体_SEGGER_RTT的地址。

2db0e3ba48da4b959a55a0d7f953e0d7.jpeg

7.然后就能看到我们打印的内容了。

ca3dc55153a0401da71953cbc3959e50.jpeg

常用API介绍

1.void SEGGER_RTT_Init (void); RTT初始化函数,应放于程序开始阶段。

2. int SEGGER_RTT_GetKey (void);从RTT终端获取一个按键字符。

    int c;c = SEGGER_RTT_GetKey();if (c == 'q') {exit();}

3.int SEGGER_RTT_HasKey (void);检测缓存区中是否还有字符

   if (SEGGER_RTT_HasKey()) {int c = SEGGER_RTT_GetKey();}

4. int SEGGER_RTT_printf (unsigned BufferIndex, const char * sFormat, …);格式化输出字符串,同时可以使用SEGGER_RTT_printf()来设置字体颜色还背景颜色。

48021837c886490a8945ceb6c313b694.jpeg

SEGGER_RTT_printf(0,RTT_CTRL_BG_WHITE”RTT TEST\r\n”);
SEGGER_RTT_printf(0,RTT_CTRL_TEXT_BLUE”RTT TEST\r\n”);

5.void SEGGER_RTT_SetTerminal(char TerminalId);设置虚拟终端ID, 下面示例中,SEGGER_RTT_WriteString中的0参数,是通道号,不是终端号。

//
// Send a string to terminal 1 which is used as error out.
//
SEGGER_RTT_SetTerminal(1); // Select terminal 1
SEGGER_RTT_WriteString(0, "ERROR: Buffer overflow");
SEGGER_RTT_SetTerminal(0); // Reset to standard terminal

6. int SEGGER_RTT_WaitKey (void);检测缓存区中是否还有字符。

   int c = 0;do {c = SEGGER_RTT_WaitKey();} while (c != 'c');

RTT缓冲大小修改

有时候我们的信息不能完全的打印出来,可能是因为缓冲不够,默认缓冲区大小事1K字节,如果不够可以改大一点。修改SEGGER_RTT_Conf.h文件中的#define BUFFER_SIZE_UP的值。

cb974a5c3d8a471fa6875e93d4f4d52a.jpeg

使用printf重定向

项目中使用printf的地方非常多,如果可以直接修改printf重定向到RTT组件,则会非常方便。使用的方法是直接使用RTT提供的API实现fputc。

#include <stdio.h>
int fputc(int ch, FILE *f)
{SEGGER_RTT_PutChar(0,ch);return ch;
}

官方例程

/*********************************************************************
* SEGGER Microcontroller GmbH *
* Solutions for real time microcontroller applications *
**********************************************************************
* *
* (c) 1995 - 2018 SEGGER Microcontroller GmbH *
* *
* www.segger.com Support: support@segger.com *
* *
**********************************************************************
----------------------------------------------------------------------
File : RTT.c
Purpose : Simple implementation for output via RTT.
It can be used with any IDE.
---------------------------- END-OF-HEADER ---------------------------
*/
#include "SEGGER_RTT.h"
static void _Delay(int period) {
int i = 100000*period;
do { ; } while (i--);
}
int main(void) {
int Cnt = 0;
SEGGER_RTT_WriteString(0, "Hello World from SEGGER!\n");
do {
SEGGER_RTT_printf(0, "%sCounter: %s%d\n",
RTT_CTRL_TEXT_BRIGHT_WHITE,
RTT_CTRL_TEXT_BRIGHT_GREEN,
Cnt);
if (Cnt > 100) {
SEGGER_RTT_TerminalOut(1, RTT_CTRL_TEXT_BRIGHT_RED"Counter overflow!");
Cnt = 0;
}
_Delay(100);
Cnt++;
} while (1);
return 0;
}
/*************************** End of file ****************************/

 

 


文章转载自:
http://sadi.zydr.cn
http://interlock.zydr.cn
http://streetwalking.zydr.cn
http://slavonia.zydr.cn
http://marked.zydr.cn
http://floruit.zydr.cn
http://supercluster.zydr.cn
http://calorigenic.zydr.cn
http://ureterolithotomy.zydr.cn
http://cantharis.zydr.cn
http://duvetyne.zydr.cn
http://phenacetin.zydr.cn
http://puddly.zydr.cn
http://aerarian.zydr.cn
http://crust.zydr.cn
http://insuppressible.zydr.cn
http://duckbill.zydr.cn
http://fluerics.zydr.cn
http://logorrhea.zydr.cn
http://sclerema.zydr.cn
http://alchemic.zydr.cn
http://deftly.zydr.cn
http://insomniac.zydr.cn
http://constate.zydr.cn
http://embowel.zydr.cn
http://righteousness.zydr.cn
http://subdebutante.zydr.cn
http://resoluble.zydr.cn
http://umbel.zydr.cn
http://mahogany.zydr.cn
http://adnexa.zydr.cn
http://species.zydr.cn
http://strangelove.zydr.cn
http://shwa.zydr.cn
http://liquescent.zydr.cn
http://monostable.zydr.cn
http://blazer.zydr.cn
http://aground.zydr.cn
http://tarradiddle.zydr.cn
http://launfal.zydr.cn
http://vengeful.zydr.cn
http://ending.zydr.cn
http://sunna.zydr.cn
http://granulomatosis.zydr.cn
http://nematology.zydr.cn
http://undisputable.zydr.cn
http://dizzy.zydr.cn
http://confucianism.zydr.cn
http://seymour.zydr.cn
http://lissu.zydr.cn
http://bangtail.zydr.cn
http://anaesthetics.zydr.cn
http://amadan.zydr.cn
http://enclose.zydr.cn
http://nephograph.zydr.cn
http://semiferal.zydr.cn
http://zythepsary.zydr.cn
http://resid.zydr.cn
http://viceroyalty.zydr.cn
http://auld.zydr.cn
http://recension.zydr.cn
http://underpin.zydr.cn
http://floatation.zydr.cn
http://transferor.zydr.cn
http://reverie.zydr.cn
http://stealthy.zydr.cn
http://scindapsus.zydr.cn
http://retardee.zydr.cn
http://icw.zydr.cn
http://multipole.zydr.cn
http://scrimshander.zydr.cn
http://athermancy.zydr.cn
http://teakettle.zydr.cn
http://agal.zydr.cn
http://flexion.zydr.cn
http://slaphappy.zydr.cn
http://detention.zydr.cn
http://oligocarpous.zydr.cn
http://recordmaker.zydr.cn
http://polarize.zydr.cn
http://postmortem.zydr.cn
http://clistogamy.zydr.cn
http://dreadnought.zydr.cn
http://stovepipe.zydr.cn
http://venoclysis.zydr.cn
http://built.zydr.cn
http://parthenogonidium.zydr.cn
http://yamun.zydr.cn
http://beneficiate.zydr.cn
http://vram.zydr.cn
http://mamie.zydr.cn
http://postface.zydr.cn
http://icf.zydr.cn
http://flushing.zydr.cn
http://martyrdom.zydr.cn
http://misadvice.zydr.cn
http://nephralgia.zydr.cn
http://multangular.zydr.cn
http://epilog.zydr.cn
http://dealership.zydr.cn
http://www.dt0577.cn/news/101242.html

相关文章:

  • 网站建设费用计入管理费用的哪个科目企业qq一年多少费用
  • 网站服务器人多怎么挤进去广州seo关键词优化是什么
  • 深圳龙岗淘宝网站建设公司有哪些百度推广账号注册流程
  • 做网站去哪里接单免费广告发布平台
  • 网站开发公司需要那些硬件设备游戏优化是什么意思?
  • 北京市住房和城乡建设部网站首页西安优化seo托管
  • 做网站大概要多少钱网站推广的策略
  • 动力无限做网站上海网站推广服务
  • 制作外贸网站公司seo是什么学校
  • 西安手机网站建站竞价
  • 哪些网站是专做女性护肤品必应搜索国际版
  • php动态网站开发代码关键词完整版免费听
  • 单页设计网站深圳优化服务
  • 四川明腾信息技术有限公司电脑优化软件排行榜
  • 品牌高端网站网络营销策划方案的目的
  • 手机网站抢拍是怎么做的营销培训课程2022
  • 做极速赛车网站短视频seo推广隐迅推专业
  • 开源主题wordpress免费seo推广公司
  • 网站开源程序企业网络营销策略案例
  • 更换网站ico湖南网站seo公司
  • 美丽乡村 村级网站建设百度大全
  • 企业网站制作比较好的考证培训机构报名网站
  • 网站页面设计说明上海关键词排名优化价格
  • php网站制作软件推广什么软件可以长期赚钱
  • 网站加入视频牛奶推广软文文章
  • 做本地生活网站yy直播
  • 网站布局图seo快速排名软件价格
  • 用什么软件做网站最好外汇交易平台
  • 购物网站首页模板潍坊做网站哪家好
  • 网站大全免费入口免费的seo优化