RT_THREAD之nano学习
nona版本为精简版本,只保留FISH(选配)最小内核,可以适配STM的STD.HAL/LL库,需要手动进行移植;现在可以在KEIL MDK/CUBEMX中进行集成,也可以RT-Thread Nano 离线安装包下载手动下载源码(安装在
)自己搭建。keil mdk在实时运行环境中打开,通过RT_CONFIG.H进行配置。
中断处理:原3个中断需要注释掉避免重复定义HardFault_Handler()
、PendSV_Handler()、SysTick_Handler()
系统时钟配置:需要一个硬件定时器来实现OSTICK处理
内存堆栈初始化: RT_USING_HEAP使能后就可以进行 rt_malloc、rt_free 以及各种系统动态创建对象的 API。默认是通过数组实现,也可以也推荐通过分散加载文件将堆空闲的起始分别设定为RAM_ZI的结束及RAM的结束。
串口控制台实现的RT_Kprintf()只进行了\n判断,所有要实现回车换行需要添加\r处理,否则不会回到行首实现回车换行;
FISH组件是在串口控制台(只实现了输出打印)基础上又实现串口的输入操作,从而可以自动初始化和调试,其实FISH接口还可以由USB、网口等其他实现。FISH是RT_THREAD的shell(包裹在操作系统外的门卫,上报输入和传达结果),有MSH(传统命令行模式,占用资源少,缺省选型,按EXIT切换到C-Style 模式(占用资源多,调用须要加(),输入MSH切换到MSH),FISH有内置命令和自动以命令
- 内置命令:table键/help回车查看支持的命令;free查看动态内存;ps/list_thread列出所有的线程;list_信号量、互斥量、事件、邮箱、队列、定时器、设备、内存池等
- 外置命令:MSH_CMD_EXPORT(name, desc);
MSH_CMD_EXPORT(name, desc:neme<参数>);//带参数
FINSH_FUNCTION_EXPORT(name, desc); //C-Style 模式 -》变量
FINSH_VAR_EXPORT(name, type, desc);
FINSH_FUNCTION_EXPORT_ALIAS(name, alias, desc);//当超过16字节时需要用别名
- 输出:依赖
rt_kprintf()
输出。在启动函数rt_hw_board_init()
中,rt_console_set_device(const char* name)指定控制台输出的接口
- 输入:
rt_device_read()
函数从设备(串口中断->释放信号量rx_indicate())来读
最新文章
- java IO流复制图片
- 拓扑排序 - 并查集 - Rank of Tetris
- Mysql的视图、存储过程、函数、索引全解析
- SQL Server(一)——数据库基础知识
- Error Handling
- iOS-微信支付(订单号重复的问题)
- 模拟创建类变量,static变量加类方法,单例
- Css 书写规范【转】
- wpf做的可扩展记事本
- JQUERY 判断选择器选择的对象 是否存在
- Effective STL 中文版(大全)
- uCGUI窗口的创建过程分析
- ASP.NET没有魔法——第一个ASP.NET应用《MyBlog》
- Cocos2D:塔防游戏制作之旅(三)
- man termios(FreeBSD 12.0)
- go学习笔记
- centos 7 命令行模式和桌面版之间的切换
- 关于requests库中文编码问题
- Linux - 基础命令汇总
- ansible wc -l 对结果值取大小的操作
热门文章
- Activiti+Shiro实战
- 安卓模拟器genymotion 安装使用
- 第四十二篇 入门机器学习——Numpy的基本操作——索引相关
- CI框架Email类发送邮件提示Unable to send data: . The following SMTP error was encountered: Unable to .......
- time时间模块_python
- mvn + testng + allure 生成自动化测试报告
- springboot+jwt
- (c#)奇数值单元格的数量
- 上传图片时使用crop进行裁剪
- The entity type XXX is not part of the model for the current context.