主页 > 科技 > μC/OS—II的嵌入式串口通信模块设计“yb5点ac只为非凡”

μC/OS—II的嵌入式串口通信模块设计“yb5点ac只为非凡”

AG亚博真人 科技 2021年05月05日
本文摘要:嵌入式应用程序中用于RTOS的主要原因是为了提高系统的可靠性,其次是提高研发效率和延长开发周期。C/OS-II是对象为嵌入式系统的Fanton式动态多任务核心,需要减少源代码,可以轻松复制到具有8~32位不同框架的微处理器上。但是,C/OS-II只是动态内核,与其他实时操作系统(如嵌入式Linux)一样,不会向用户提供某些API函数模块。 在C/OS-II动态内核中,安装在外部的采访模块不统一,需要用户亲自去完成的事情很多。

yb5点ac只为非凡

嵌入式应用程序中用于RTOS的主要原因是为了提高系统的可靠性,其次是提高研发效率和延长开发周期。C/OS-II是对象为嵌入式系统的Fanton式动态多任务核心,需要减少源代码,可以轻松复制到具有8~32位不同框架的微处理器上。但是,C/OS-II只是动态内核,与其他实时操作系统(如嵌入式Linux)一样,不会向用户提供某些API函数模块。

在C/OS-II动态内核中,安装在外部的采访模块不统一,需要用户亲自去完成的事情很多。串行通信是单片机控制系统最重要的组成部分,异步串行端口是比较简单、不具代表性的中断驱动外设。本文以单片机的串口为例,说明了在C/OSII中编写中断服务程序和外围设备驱动程序的一般思路。

1C/OS-II中断处理和51系列单片机中断系统分析C/OS-II中断服务程序(ISR)通常用汇编语言编写。以下是停止服务过程的步骤。维护所有CPU寄存器调用OSIntEnter()或OSIntNesting(全局变量)所需的T1;继续运行用户代码以停止服务。0s intexit();完全恢复所有CPU寄存器。

继续执行中断返回命令。C/OS-ii获得两个ISR和内核接口函数。OSIntEnter()和OSIntExit()。

OSIntEnter()通知c/osii核心已启动中断服务进程。实际上,该函数执行全局变量OSIntNesting。通过此中断嵌套计数器,您可以在所有中断处理完成后计划任务。

另一个接口函数OSIntExit()通知内核中断服务已完成。根据需要撤回中断的点(任务或嵌套中断服务程序),或不在内核中安排任务。用户编写的ISR必须添加到特定位置,以便在中断再次发生后,CPU能够根据相应的中断编号运行正确的服务程序。许多实时操作系统获得了安装和维修中断服务程序的API接口函数,但C/OSII内核得不到类似的接口函数,因此需要用户通过CPU复制自行构建。

这些接口函数与明确的硬件环境相关,接下来详细说明为51单片机的中断处理响应。51单片机的中断基本过程如下。CPU在每个机器周期的S5P2时间采样中断标志,并查找在下一个命令周期采样的中断。

AG亚博

yb5点ac只为非凡

如果有中断请求,将根据优先强弱的原则展开处分。请求中断时,首先将适当的优先战士触发器放在适当的位置,拦截对等或低级中断,然后根据中断源类别,将中断地址推入硬件控制下的堆栈中,并更改为适当的中断矢量输入设备。

通常,在接收设备上放置函数调用命令,以继续中断服务程序。如果将中断再次进行到命令RETI,则请求中断时所在的优先级战士触发器将被删除为0,然后从堆栈中取出维护的断点地址,并删除程序计数器PC,CPU将返回到最初中断的位置,然后运行程序。(注:)复制期间,使用KeilC51作为编译器环境。KeilC5l编译器和汇编程序构建中断子程序用汇编语言编写,并放置在复制C/0 SII后的OS_CPU_A.ASM编辑文件中。

以下是以串行端口中断为例复制中断服务子程序代码。CSEGAT0023H;串行中断呼叫接收地址LJMPSerialISR;转到串行中断子程序输入地址RSEG?PR?SeriallSR?OS _ CPU OS _ CPU _ ASerialISR:USINGOCLREA;首先关闭中断,然后嵌套PUSHALL防止中断。

定义的堆栈宏,用作;CPU寄存器值为堆栈LCALL_?OSIntEnter;监视中断嵌套LCALL_?串行;串行中断服务程序LCALL_?。


本文关键词:—,的,嵌入式,串口,通信,模块,设计,“,yb5,点,AG亚博

本文来源:AG亚博-www.dsuraj.com

标签: 通信       嵌入式   串口   yb5     设计     模块