提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、RTT的移植
  • 二、具体函数代码
    • 1.rt_hw_console_output的编写
    • 2.rt_hw_console_getchar的编写
  • 调试成功的界面
  • 其他可能的问题

前言

移植RT-Thread到新唐的M0内核单片机上后,想调用finsh组件,参考别人的接口代码后,发现输出格式不是很理想。所以仔细整理了一下思路,自己修改了相关函数。下面分享一下这个代码的思路。我使用的单片机型号是M031KIAAE。

一、RTT的移植

RTT的移植网上教程很多,我是参考这篇文章的,链接:https://hxydj.blog.csdn.net/article/details/110956288。
同时,还参考了这篇文章,链接:https://www.eet-china.com/mp/a72636.html。这篇是主要是参考一下他写的接口函数。我之前直接照抄下来,输出的的样式不对,很难看。具体原因我猜测是我们使用的单片机型号不一样,调用的库函数实现原理可能不同。
我最开始是参考使用了新唐uart.h的那个UART_WRITE函数,出现的bug是一次性最多只能输出16个字符,所以我后来找了一下,使用了在uart.c里的UART_Write函数。这个函数是可以输出缓存里的字符的,这个缓存大小就可以自定义大小了,而之前的的函数受制于FIFO的缓存大小,最多只能一次性输出16个字符。

二、具体函数代码

1.rt_hw_console_output的编写

这个是使用finsh组件第一个要实现的函数,他是rt_kprintf函数实现的基础,具体实现如下。

代码如下:

void rt_hw_console_output( const char *str )
{/*缓存大小128,和RTT写的函数一致*/uint8_t rt_log_buf[RT_CONSOLEBUF_SIZE];uint8_t i=0;/* 进入临界段 */rt_enter_critical();/* 直到字符串结束 */while ( *str != '\0' ){ if( *str == '\n')  {rt_log_buf[i++] = *str++; /*为什么:因为RTT自己写的字符串打印只写\n结尾,所以需要自己添加回车号:'\r'*/rt_log_buf[i++]='\r';}else{rt_log_buf[i++] = *str++; }                           }       UART_Write( UART0,rt_log_buf ,i );while ( UART_IS_TX_EMPTY(UART0) == 1 );/* 退出临界段 */rt_exit_critical();
}

2.rt_hw_console_getchar的编写

这部分没什么问题,参考RTT的官方移植思路就可以。我是直接参考了我贴的链接的第二篇文章。因为bug不在这所以也没动。
代码如下(示例):

//使用Finsh组件三步骤:
//1.实现该函数及rt_hw_console_output函数;
//2.rtconfig.h中开启RT_USING_FINSH宏;
//3.添加Finsh组件(cmd.c、msh.c、shell.c);
#if(1)
char rt_hw_console_getchar(void)
{//查询方式实现,记得将Usart1初始化中的中断接收配置相关代码注释掉int ch = -1;if((UART0->FIFOSTS & UART_FIFOSTS_RXEMPTY_Msk) == 0){ch = (int) (UART0->DAT);}rt_thread_mdelay( 10 );return ch;
}
#endif

该处使用的url网络请求的数据。


调试成功的界面

这是我自己调试成功以后的界面。之前直接copy代码的时候,输出如下:
其实仔细分析一下就知道是需要在字符串后面确保添加一个’\r’,回到行首。

其他可能的问题

在这说一下我移植碰到的问题
1.进入硬件除错中断函数了。我的bug原因是堆内存大小没分配够。
2.没了

新唐单片机移植RT-Thread,Finsh组件的接口函数编写相关推荐

  1. 单片机单口不可用或被占用_新唐单片机代码评审总结

    昨晚上,我们一个同事组织了一个小会议,大家一起讨论了一个项目的单片机代码,这个单片机用的是新唐单片机,期间大家也讨论了一些问题,总结一下,希望对写单片机的同学们有帮助. 我这个同事写的代码非常优秀,具 ...

  2. 新唐单片机 ICP 史上最全教程

    新唐单片机 ICP 史上最全教程 新唐单片机 ICP烧录教程 目录 新唐单片机 ICP 史上最全教程 1.ICP软件安装 2.连接设备 3.设备供电 4.开启软件 5.欢迎界面 6.补充事项 7.建立 ...

  3. idata 单片机 新唐_新唐单片机代码评审总结

    昨晚上,我们一个同事组织了一个小会议,大家一起讨论了一个项目的单片机代码,这个单片机用的是新唐单片机,期间大家也讨论了一些问题,总结一下,希望对写单片机的同学们有帮助. 我这个同事写的代码非常优秀,具 ...

  4. 新唐单片机选型手册_新唐单片机选型手册_新唐8051标准系列单片机选型指南

    新唐8051标准系列单片机选型指南 新唐单片机 8位单片机 作者: 来源: 发布时间:2019-06-18 22:15:07   浏览:351 新唐科技标准8051产品系列,其管脚兼容于传统12T 8 ...

  5. 新唐单片机选型手册_新唐8051标准系列单片机选型指南

    新唐8051标准系列单片机选型指南 新唐单片机 8位单片机 作者: 来源: 发布时间:2019-06-18 22:15:07   浏览:351 新唐科技标准8051产品系列,其管脚兼容于传统12T 8 ...

  6. 新塘单片机烧写器_新唐单片机软件加密|新唐单片机软件(NuConsole) v2.04.6725官方版 附安装教程_星星软件园...

    NuConsole是一款实用的新唐单片机软件,该软件可以通过SWD接口操作,为用户提供不中断目标芯片和主机的信息传输机制,是机械和电气领域不可或缺的软件.软件简洁实用.操作简单.极易使用,需要的朋友赶 ...

  7. 新唐单片机如何生成精确延迟

    最近在搞新唐单片机,所以记录下这部分内容. 之前的相关文章 呵,你会51单片机的精确延时吗? 假如使用者想要产生精确的延迟时间,建议使用 __nop() 函数来组合达成.__nop() 函数能够产生 ...

  8. 单片机入门学习笔记6:新唐单片机N76E003

    学习新唐单片机是从2018年3月开始的,之前一点也不懂这一块单片机,之后脉络变的越来越清晰. 由于N76E003档次太低,新塘科技官方的管脚配置,芯片选型--都没有这一块芯片,资料唯独只有:芯片的数据 ...

  9. 新唐单片机keil驱动问题

    1:新唐单片机keil编译工具,资料都可以在新唐官网下载.keil驱动软件要安装在keil安装的目录下,今天安装了很久,一直提示不成功,就是因为驱动Nu-link driver 没有安装到keil安装 ...

最新文章

  1. java vo转map_三分钟掌握POJO及其转换——PO、DO、DTO、VO
  2. PyQt5 技术篇 - Qt Designer怎么用styleSheet设置按钮的背景
  3. python文件操作:新建删除文件,获取拼接路径,罗列文件路径
  4. Error encountered when performing Introspect schema xxx 错误的解决方法
  5. 致准医学博士生的乘风破浪秘籍
  6. mysql iso 时间_mysql 中 时间和日期函数
  7. Java讲课笔记12:static关键字
  8. 用html代码实现做题记分,html解析cricinfo记分卡
  9. 深入理解JAVA锁的机制
  10. 【论文总结】TextGCN
  11. oracle内存架构(一)
  12. javascript快速入门(二):JS浏览器操作
  13. 天线接收功率计算公式_无线信号功率计算公式
  14. Android Muti-Window
  15. scala集合算子大全及分类汇总——倾心整理
  16. 万字文肝Java基础知识(一)
  17. 谷歌浏览器如何打开新的窗口
  18. linux下制作linux系统的安装U盘
  19. 团体程序设计天梯赛-练习集 L1-059 敲笨钟 (20分)
  20. java基础练习实例_java基础练习题(se)

热门文章

  1. 解决“该项目不在请确认该项目位置,然后重试” 文件无法删除问题
  2. IMS:开发者选项Touch点显示
  3. s60v5用java qq_s60v5 qq-QQ版本下载-kukud.net手机qq下载站
  4. Mysql、Oracle、DM、Tbase数据库差异性
  5. KEIL,#ifdef宏定义下失效代码差异性显示
  6. javaWeb课程设网上报名系统
  7. 绘图用计算机配置要求,绘图笔记本电脑基本配置要求 绘图笔记本推荐
  8. 将笔记本外接显示器设置为主显示器
  9. spark count统计元素个数
  10. 转载-30分钟搞定后台登录界面(103个后台PSD源文件、素材网站)