【精品】单片机实时操作系统RT-THREAD及在在STM32移植华工名师详细课件
- 格式:pptx
- 大小:484.09 KB
- 文档页数:20
UART 设备 UART 简介UART( Uni versal Asynchronous Receiver/Tra nsmitter)通用异步收发传输器,UART 作为异步串口通信协议的一种,工作原理是将传输数据的每个字符 一位接一位地传输。
是在应用程序开发过程中使用频率最高的数据总线。
UART 串口的特点是将数据一位一位地顺序传送,只要 实现双向通信,一根线发送数据的同时用另一根线接收数据。
几个重要的参数,分别是波特率、起始位、数据位、停止位和奇偶检验位,对 于两个使用UART 串口通信的端口,这些参数必须匹配,否则通信将无法正常 完成。
UART 串口传输的数据格式如下图所示:2根传输线就可以UART 串口通信有? 起始位:表示数据传输的开始,电平逻辑为 “0 。
?数据位:可能值有5、6、7、8、9,表示传输这几个bit 取值为8,因为一个ASCII 字符值为8位。
?奇偶校验位:用于接收方对接收到的数据进行校验,校验 为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确性, 要此位也可以。
? 停止位:表示一帧数据的结束。
电平逻辑为“ 1”。
?波特率:串口通信时的速率,它用单位时间内传输的二进制代码的有效位(bit)数来表示,其单位为每秒比特数 bit/s(bps)4800、9600、14400、38400、115200 等, 115200表示每秒钟传输115200位数据。
访问串口设备应用程序通过RT-Thread 提供的I 关接口如下所示:I/O 位数据。
一般 “ 1 ”的位数使用时不需。
常见的波特率值有 数值越大数据传输的越快,波特率为设备管理接口来访问串口硬件,相查找串口设备应用程序根据串口设备名称获取设备句柄,进而可以操作串口设备,查找 设备函数如下所示,rt_device_t rt_device_find( const char* name);描述返回©找到对应设备将返回相应的S 备句柄/*接收模式参数*/narrc设备名称IRT NULL没有找到拾应的设笛对觀一般情况下,注册到系统的串口设备名称为 uart0 如下所示: ,uartl 等,使用示例#defi ne SAMP LE_UART_NAME "uart2"/*串口设备名称*/static rt device t serial; /*串口设备句柄*//*查找串口设备*/serial = rt_device_fi nd(SA MP LE_UART_NAME);打开串口设备通过设备句柄,应用程序可以打开和关闭设备,打开设备时,会检测设备 是否已经初始化,没有初始化则会默认调用初始化接口初始化设备。
第6期2020年12月机电元件ELECTROMECHANICALCOMPONENTSVol 40No 6Dec 2020收稿日期:2020-10-20基于STM32单片机的uC/OS-II操作系统移植张中前(贵州航天电器股份有限公司,贵州贵阳,550009) 摘要:网络技术和信息技术的发展,嵌入式系统应用越来越普及,嵌入式设备的应用也越来越多。
uC/OS-II广泛应用于路由器、飞行器及工业控制等。
uC/OS-II操作系统执行效率高,占用存储空间少,具有实时性及可扩展性等优点,在小型嵌入式设备中具有广泛应用。
本文介绍了基于ARMCORTEXM3系列单片机上的uC/OS-II移植,对电子控制组件的设计具有参考作用。
关键词:实时操作系统;uC/OS-II;内存管理;任务管理;STM32;移植Doi:10.3969/j.issn.1000-6133.2020.06.015中图分类号:TN784 文献标识码:A 文章编号:1000-6133(2020)06-0057-051 引言操作系统是裸机的第一层软件,操作系统直接运行在硬件上,上层软件通过提供应用程序接口(API函数),实现对底层硬件的访问,同时,通过操作系统实现对多个上层应用软件(任务)管理,实现对硬件CPU管理、存储管理、I/O接口管理及文件管理,如图1所示。
图1 操作系统功能组成示意图 STM32系列单片机以其优良的价格,大容量的FLASH及RAM存储空间,极易用于较为复杂的控制系统;在STM32单片机上进行uC/OS-II实时操作系统的移植,提高了产品的设计灵活性,实现较为复杂的系统功能;通过将开源的uC/OS-II移植在STM32单片机上,以其较为低廉的硬件成本获得较高的使用性能,具有良好的应用前景。
2 uC/OS-II操作系统2.1 uC/OS-II操作系统的基本特征uC/OS-II是一个完整的、可移植、可固化、可剪裁的基于优先级调度的抢占式实时多任务操作系统;它能够在外界事件或数据产生时,能够接收图2 uC/OS-II文件结构示意图并以足够快的速度响应,其处理的结果又能够在规定的时间内输出,并控制所有实时任务协调、一致运行。
RT-Thread 应用篇—在STM32L051上使用 RT-Thread (四、无线温湿度传感器之串口通讯)•前言•一、设计思路说明•二、驱动移植•三、信号量的处理▪ 3.1 释放信号量▪ 3.2 获取信号量•四、基本测试▪ 4.1 接收测试▪ 4.2 串口通讯细节问题▪ 4.3 发送测试•五、时刻关注占RAM大小•结语前言在上一篇文章,我们实现了温湿度驱动移植,根据我们最初的基本设计思路,还有必须要实现的无线模块串口通讯,本文就来移植一下无线模块的串口通讯驱动。
再次说明一下,本应用篇重点在于理解在 RT-Thread 上的设计思路以及在小内存芯片上的注意事项,所以基础的驱动代码的实现并不会详细的分析说明,但是博主在把本系列更新完以后会把最后的整个项目上传,所以实在想看驱动实现的朋友到时候也可以去下载。
在STM32L051C8 上使用 RT-Thread 应用篇系列博文连接:RT-Thread 应用篇—在STM32L051上使用 RT-Thread (一、无线温湿度传感器之新建项目)RT-Thread 应用篇—在STM32L051上使用 RT-Thread (二、无线温湿度传感器之 CubeMX配置)RT-Thread 应用篇—在STM32L051上使用 RT-Thread (三、无线温湿度传感器之 I2C通讯)一、设计思路说明我们STM32L051C8与无线模块通讯的串口是LPUART1(对应pin to pin 的STM32F103C8 是串口3),使用的是中断方式接收,所以当时在CubeMX 设置的时候我们就需要使能中断。
STM32串口中断接收是很基础问题,本文的目的不在于说明STM32如何进行串口通讯,所以并不会详细阐述如何使用串口接收,我们只做简单说明:对于STM32 的串口接收中断,我们一般会使能UART_IT_RXNE或者UART_IT_IDLE。
简单说明一下,如果串口收到一个字节就会产生RXNE中断,如果接收完成一帧数据,就会产生IDLE中断。
RT—Thread操作系统在STM32中移植的研究作者:朱志国来源:《计算机光盘软件与应用》2012年第22期摘要:介绍了RT-Thread操作系统在STM32F107VC上的移植,简要说明了具体的移植过程和使用的方法,并分析了RT-Thread操作系统内核代码的各个功能,给出了移植环境的如何搭建,及编写应用程序如何修改代码的方法。
最后通过一个实例成功实现RT-Thread在STM32F107VC上的移植,证明了移植是可行的。
关键词:RT-Thread;STM32;嵌入式操作系统;Keil中图分类号:TP311.52 文献标识码:A 文章编号:1007-9599 (2012) 22-0000-02RT-Thread属于第二代微内核操作系统,最突出的优势就是其支持处理器平台广泛,最低要求8k ROM,4k RAM空间就可以了。
STM32是基于Cortex-M3内核的处理器,也是一款性能优越的32位单片机,在工业控制方面的应用大有取代传统16位单片机之势。
1 RT-Thread操作系统介绍RT-Thread主要优点是:实时、小型、可裁剪。
它不仅仅是一个实时内核,也是一个功能丰富的软件平台,可以搭建POSIX环境,运行独立的应用程序,这是传统的实时操作系统所不具备的。
RT-Thread具有32~256可选优先级抢占式调度,线程度不限,相同优先级线程时间片轮转调度,支持动态创建、销毁线程,任务等待可按优先级进行排队。
RT-Thread内核大致可分为对象管理、实时调度器、线程管理、线程间通信、时钟管理、设备驱动6个部分。
(1)对象管理(object.c):定义了对象容器的种类,包括线程、信号量、互斥量、事件、邮箱、消息队列、内存池、设备、定时器、组件。
此部分主要完成各模块的创建,系统对象的初始化。
(2)实时调度器(schedule.c):定义了优先级。
该部分完成优先级的创建及调度算法的定义,对线程的初始化、创建、插入、移动进行了描述。
RT-Thread 应用篇—在STM32L051上使用 RT-Thread (一、无线温湿度传感器之新建项目)•前言•一、使用 RT-Thread Studio 新建项目•二、初始项目代码分析▪ 2.1 内存堆▪ 2.2 main 线程初始化▪ 2.3 软件定时器▪ 2.4 rtconfig.h•三、初始项目占RAM大小•四、时刻保持查看测试结果•结语前言RT-Thread 专栏更新到今天,已经把内核基础全部讲完,还没有一个使用 RT-Thread Studio 完整的项目实例,我在第一篇文章中介绍版本的时候就说过,在一般普通的应用项目上,Nano估计用起来还更多,内存就是成本!既然我们把 RT-Thread Nano 内容大都过了一遍,那就来使用它实现一个传感器小项目。
看过我博文的朋友都知道为什么我会使用 STM32L051,我在前面文章已经提到过原因,满足应用要求,替换成本低。
本文完全从 0 开始新建工程,工程代码分析,修改,移植,测试,步步为营,最终完成一个完整的应用。
一、使用 RT-Thread Studio 新建项目首先,我们还是使用 RT-Thread Studio 新建工程,我们选择 Nano 项目,如下图:然后进入项目创建页面,项目基于芯片,然后在系列中选择 STM32L0 系列,如果没有需要添加,如下图:在这里插入图片描述在上面图点击添加更多,然后在 SDK 管理器中,安装 STM32L0 的资源包,选中,点击安装即可,如下图:完成上述步骤,再回过头来重新新建项目,整个选项如下图所示:新建完成工程以后,会直接在资源管理器出现,以前的项目不会被关闭:二、初始项目代码分析最初我们学习使用的开发板是自己画的 STM32F103VGT6,有着 96KB 的 RAM,已经是很大的内存了,而目前博主实际项目上很多产品使用的是 STM32L051C8 只有 8KB 的RAM,在使用 FreeRTOS 的时候我遇到的一个大问题就是 RAM 空间不足的问题。
FreeRTOS移植到STM32F103步骤与注意事项转载2017年05月29日 11:16:361496原文地址:前言:由于之前听过太多人抱怨移植FreeRTOS到STM32有各种各样的问题,小灯经过一年多对FreeRTOS的研究并在公司产品中应用,多少有些心得,接下来就由小灯以最新版的FreeRTOS为例一步一步移植到STM32F103上,并提醒大家某些需要注意的事项。
本文档为非正式技术文档,故排版会有些凌乱,希望大家能提供宝贵意见以供小灯参考改进。
下面先以IAR移植为例,说明移植过程中的诸多注意事项,最后再以MDK移植时不再重复说明,所以还是建议大家先花些时间看IAR的移植过程,哪怕你不使用IAR,最好也注意下那一大堆注意事项!一、从官网下载最新版的FreeRTOS源码下面的网址是官方最新源码的下载地址:projects/freertos/files/latest/downloadsource=files目前官方提供的最新版本是, FreeRTOS源码在解压目录下的路径为FreeRTOS组织为了抢用户也是拼了命的,不信你打开Demo文件夹看看,里面提供了FreeRTOS在各种单片机上已经移植好的工程,如果建工程时遇到什么问题,可以参考下这些Demo。
不过小灯现在着重于自己动手移植FreeRTOS,考虑到原子哥@正点原子的用户比较多,绝大多数习惯了使用MDK来开发STM32,因此小灯分别以IAR和MDK两种使用比较广泛的开发环境来移植FreeRTOS。
说到IAR和MDK,不得不提的是小灯自从用了IAR之后就果断放弃了MDK,相信很多人有这个经历,哈哈!在开始移植FreeRTOS之前,先介绍下FreeRTOS的源码:FreeRTOS的源码比较少,源文件也远没有UCOS多,不过麻雀虽小五脏俱全,FreeRTOS 的短小精悍也是最令小灯着迷的,虽然缺少了很多组成部分,例如GUI、网络协议栈、文件系统等,不过这些统统都不是问题,因为完全可以移植第三方的组件!一不小心牛逼又吹大了,哈哈!回归正题,FreeRTOS的源码核心部分是和,其余的几个文件功能都是可选的,例如软件定时器、队列、协程等等,小灯就不介绍了,有兴趣的话可以到官网上看介绍。