当前位置:首页 > 工业控制 > 工业控制
[导读]引 言 随着性能的提高和价格的降低,越来越多的嵌入式应用采用了ARM处理器。在强大功能及丰富外设的支持下,嵌入式实时操作系统凭借较高的开发效率、可维护性和可靠性成为开发设计的理想选择。 μC/OS-II

引 言
   
随着性能的提高和价格的降低,越来越多的嵌入式应用采用了ARM处理器。在强大功能及丰富外设的支持下,嵌入式实时操作系统凭借较高的开发效率、可维护性和可靠性成为开发设计的理想选择。
    μC/OS-II是一个完整的、可移植、可裁减的占先式实时多任务内核。它是用ANSI C语言编写的,包含一小部分汇编语言代码,可以供不同架构的微处理器使用。μC/OS由美国人Jean J.Labrosse于1992年完成,1998年发展到μC/OS-II,目前的版本为μC/OS-II v2.83。2000年,μC/OS得到美国航空管理局(FAA)的认证,可以用于飞行器中。作为一个典型的嵌入式操作系统,μC/OS-II的应用非常广泛,如照相机、医疗器械、音响设备、发动机控制、高速公路电话系统、自动提款机等等。
    本文主要讨论了μC/OS-II环境下中断按键消抖处理及LCD多级菜单显示的实现问题,并通过一款产品的实例设计阐述了中断按键的处理流程以及多级菜单显示的程序框架。

1 显示控制系统硬件设计
    本设计采用基于Cortex-M3架构的ARM处理器LM3S1960和液晶显示器HS240128A作为显示控制系统的核心,按键采用中断的方式。显示控制系统电路原理图如图1所示。

    LM3S1960是Luminary公司推出的高性价比微处理器。它具有256 KBFlash,64 KB RAM,4个32位定时器,6个运动控制PWM,3个UART,2个I2C,2个SSI以及60个用户可用I/O。LM3S1960最高运行频率为50 MHz,其所有GPIO输入可触发中断,支持IRDA的UART,非常适合嵌入式控制系统。
    HS240128A是240×128图形点阵液晶显示模块,采用T6963C作为内置控制器,内置字符发生器和32 KB显示缓冲区,具有接口简单、控制指令集功能齐全的特点。

2 中断按键消抖处理
   
在按键数目较多的情况下,一般采用扫描查询的方式。本设计中按键全部采用中断的方式,主要是考虑到按键数目不多,且处理器的每一个引脚都具有中断功能,实现简单,响应速度快。
    在按键的过程中容易产生抖动,没有按键按下有时也可能会有干扰脉冲,如果不加以处理,容易引起误操作。所以,消除抖动是按键处理的必要过程。在一般的处理器中,消抖处理多采用延时判断的方法,这种方法不适合在操作系统中实现。因为在中断中加入大的时延,会大大降低系统的实时性和响应速度,所以本设计采用图2所示的处理方法。

    图2(a)为按键中断处理程序流程。为了提高中断的实时性,在中断处理过程中尽可能进行少的操作。本设计中只进行了保存键值和发送按键中断信号量的操作,大大提高了中断响应的实时性。
    图2(b)为按键处理任务流程。在完成初始化后,任务开始等待中断发过来需要判断的原始按键值的信号量()SSemPend(C)SKeyRawSem,O,&err)。其中的参数OSKeyRawSem是原始按键中断信号量。如果没有信号量发过来,那么任务会在这里被挂起。接收到后首先关闭按键中断,进行系统延时OSTimeDlyHMSM(0,0,0,JitterTime),JitterTime是延时时间。在这个延时的过程中,会进行任务的调度,本任务也会被挂起,直到延时结束,重新被加入等待任务列表。在延时结束任务重新获得CPU后,进行按键的再次判断,判断是否真的发生了按键中断。如果判断正确,则需要等待按键的松开。在判断是否松开的过程中,同样加入了系统延时判断OSTimeDly-HMSM(0,0,0,CheckTime),CheckTime是每次检测延时的时间。按键松开后,任务发送按键信号量给其他任务使用OSSemPost(OSKeySem),其中OSKeySem为经过确认的按键中断。如果判断错误,则清除键值。最后,打开按键中断,重新等待新的按键中断。

3 LCD多级菜单显示
    对于多级菜单的编写,控制关系比较复杂,特别是对于不同的界面,人机交互的内容一般都不相同。所以在操作系统实现时,一般把每一级菜单的实现都作为一个任务分别设计。这样思路清晰,不容易出现问题,而且方便删减和增加菜单项,也便于程序的维护和更新。主菜单任务循环体内程序如下:


    程序说明如下:
    ①在任务开始时判断系统模式SystemMode是否为主菜单模式SysMode_MainMenu。如果不是,那么就需要把主菜单显示任务挂起,直到从其他任务返回。
    ②等待按键信号量OSKeySem,根据用户的按键执行相应的操作,RfreshTime是菜单的刷新时间。信号量等待函数在RfreshTime时间内等待,如果等待时间到了按键还没有操作,那么它继续执行下面的程序,err变量会返回错误的数值。
    ③如果②中的err返回没有错误,说明在刷新时间内发生了按键中断,那么进入按键的操作处理程序。
    ④根据键值变量KeyNumber进行相应的操作,例如确定按键的处理、返回按键的处理等。
    ⑤假如是确定键KEY_OK按下,那么首先把系统子菜单的编号SubMenuNumber赋给SystemMode变量,并进行相应的初始化操作。
    ⑥例如是XXXX子菜单,那么在初始化完成后发送信号量OSSemPost(OSDisXXXXSem)。其中,OSDisXXXXSem是子菜单XXXX的显示信号量。
    ⑦目的是调用主菜单显示函数。之所以再次进行判断,是因为在⑥中发送信号量要进行系统调度。如果子系统任务优先级比主菜单高,主菜单就会被挂起而去执行子菜单,在子菜单执行间隙会重新调度回来进行主菜单显示,那么就造成显示错误。
    子菜单显示的任务流程和主菜单类似。在按返回键时发送启动主菜单的信号量OSSemPost(OSDisMain-MenuSem),系统就会重新返回到主菜单。

结 语
    本文对μC/OS-II操作系统下的中断按键消抖处理及LCD多级菜单显示方法进行了研究,并提出了一种简单、可靠性高、维护方便的实现方案。该方法已经应用于某产品的开发设计中,效果较好,运行稳定可靠。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭