uCOS-II的嵌入式串口通信模块设计

本文介绍了如何在uCOS-II实时操作系统下设计串口通信模块,包括中断处理、51系列单片机中断系统分析、串口驱动程序的编写以及串口通信模块的设计。通过使用中断服务程序、信号量和环形缓冲区,实现了高效的串口通信,提高了系统的可靠性和实时性。
摘要由CSDN通过智能技术生成

在嵌入式应用中,使用RTOS的主要原因是为了提高系统的可靠性,其次是提高开发效率、缩短开发周期。uCOS-II是一个占先式实时多任务内核,使用对 象是嵌入式系统,对源代码适当裁减,很容易移植到8~32位不同框架的微处理器上。但uCOS-II仅是一个实时内核,它不像其他实时操作系统(如嵌入式 Linux)那样提供给用户一些API函数接口。在uCOS-II实时内核下,对外设的访问接口没有统一完善,有很多工作需要用户自己去完成。串口通信是 单片机测控系统的重要组成部分,异步串行口是一个比较简单又很具代表性的中断驱动外设。本文以单片机中的串口为例,介绍uCOS—II下编写中断服务程序 以及外设驅动程序的一般思路。

1 uCOS-II的中断处理及51系列单片机中断系统分析
    uCOS-II中断服务程序(ISR)一般用汇编语言编写。以下是中断服务程序的步骤。

  1. 保存全部CPU寄存器;调用OSIntEnter()或OSIntNesting(全局变量)直接加1;
  2. 执行用户代码做中断服务;
  3. 调用OSIntExit();
  4. 恢复所有CPU寄存器;
  5.  执行中断返回指令。

    uCOS-II提供两个ISR与内核接口函数;OSIntEnter()和OSIntExit()。OSIntEnter()通知uCOS-II核,中断 服务程序开始了。事实上,此函数做的工作是把一个全局变量OSIntNesting加1,此中断嵌套计数器可以确保所有中断处理完成后再做任务调度。另一 个接口函数OSIntExit()则通知内核,中断服务已结束。根据相应情况,退回被中断点(可能是一个任务或者是被嵌套的中断服务程序)或由内核作任务 调度。
    用户编写的ISR必须被安装到某一位置,以便中断发生后,CPU根据相应的中断号运行准确的服务程序。许多实时操作系统都提供了安装和卸载中断服务程序的 API接口函数,但uCOS-II内核

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值