嵌入式课程设计模式探索

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:czy239239
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:针对传统嵌入式课程设计的弊端,给出一种新的以ARM开发板为硬件基础的嵌入式课程设计方案,方案以介绍开发流程为主线,引入嵌入式实时操作系统,使学生能够从整体把握嵌入式开发流程。实践表明,以开发板为硬件基础的嵌入式课程设计,能够提高学生的开发兴趣和自主开发能力,达到嵌入式教学目标。
  关键词:STM32;μC/OS-III;ARM;嵌入式开发;课程设计
  中图分类号:TP338 文献标识码:A 文章编号:1009-3044(2017)06-0177-02
  1概述
  嵌入式课程是高等院校电子和信息专业一门非常重要的课程。嵌入式技术应用规定了嵌入式这门课程应该侧重于工程性和应用性。然而目前嵌入式教学仍然处于以理论学习为主,课程设计为辅的局面。这导致了学生的实践能力得不到提升,缺乏对嵌入式课程的学习兴趣[1]。其次,现有的嵌入式课程设计多以教学试验箱为主,这类教学试验箱配备的微处理器性能低下,难以满足复杂项目的开发需求。这些缺点都限制了学生对嵌入式课程的学习热情,嵌入式教学难以达到预期效果[2]。使用开发板进行嵌入式教学将有效解决上述问题。首先,从接触硬件开始,学生有一定的开发兴趣,其次,目前市面上的教学开发板都配备了当前主流单片机,这类单片机具备卓越的处理性能和丰富的外设接口,能够设计更为复杂和实用的系统。最后,规范化的嵌入式开发流程也可以提高学生的动手能力和开发兴趣[3]。本文以远洋电子工作室出品的野火STM32开发板为例,设计一个加入嵌入式实时操作系统μC/OS-Ⅲ的课程设计,目的在于使学生能够接触当前主流的ARM芯片的结构并且学习复杂工程的基本开发流程,提高学生工程开发能力和开发兴趣。
  2 开发环境介绍
  硬件方面,野火开发板上的微处理器使用的是意法半导体公司的STM32F103ZET6。该处理器是Cortex-M3内核的32位微处理器,最高工作频率可达72MHz,内置512K的FLASH和64K的SRAM,11个定时器,同时具有多达13个通信接口。该开发板以总线的方式引出IO,这样的设计可以方便用户进行通信接口的外接工作,隔离跳帽设计可以方便用户进行DIY设计。开发板可以用于完成跑马灯、文件系统移植、微型实时操作系统移植等一系列复杂的实验,这些实验可以增强学生的动手能力和自主学习能力,同时培养他们对于嵌入式开发的兴趣。
  软件方面,以μC/OS-Ⅲ嵌入式操作系统为开发环境。μC/OS以其开源、可裁剪、可固化、稳定性和安全性高的特点,在嵌入式领域有着极其广泛的应用,该嵌入式系统也以短小简洁而著称,适合引入嵌入式课程设计。μC/OS-Ⅲ作为μC/OS的最新版本,较前面的版本加入了许多新的特性。比如,不再限制最大任务数目,允许相同优先级存在,加入时间片任务调度算法等。新的特性使得μC/OS-Ⅲ的功能更为强大,也方便了开发者的使用[4]。
  3 μC/OS-Ⅲ在STM32上的应用
  μC/OS-Ⅲ的代码量大约在6K~24K。野火STM32开发板的上512K字节FLASH和64K字节的SRAM运行μC/OS-Ⅲ是非常充足的,本次课程设计采用的是μC/OS-Ⅲ的V3.02.00版本。经过测试,该版本系统在STM32上可以可靠运行,并且非常稳定。下面将介绍课程设计的主要内容。
  3.1 功能要求
  根据图2所示的开发板上LED灯的硬件原理图,在给定的MDK工程中进行编程,实现以下要求:
  开发板上电以后,三个绿色的LED小灯将进行间隔为200ms的闪亮,表示系统已经运行。使用PortHelper上位机软件,输入LED灯编号和长亮时间,对应的LED灯将进行定时长亮。长亮完毕后,LED灯将继续进行200ms的间隔闪亮。
  3.2 设计分析
  按照从下往上的原则,首先进行板级代码的编写工作,主要内容是LED的控制和串口的配置部分。之后进行应用级编程,在应用级代码中创建相应的任务,实现数据接收和长亮控制。具体编程步骤:首先编程实现板级驱动控制。然后在μC/OS-Ⅲ中建立启动任务,在启动任务中继续创建三个LED1~LED3灯的闪亮任务。上位机通过串口发送控制数据到内存中,各个LED任务通过检测内存中的数据来确定是否进行长亮和进行长亮的时间。
  需要指出的是,在使用串口中断进行数据传输时,如果操作较快可能会出现数据出错的现象。鉴于此,将串口配置为DMA(Direct Memory Access)方式传输数据,这种方式可以有效提高传输速度和稳定性。
  最后,为各个任务分配相应的任务优先级,分配方案如下表1所示:
  3.3 编程流程
  按照从下往上的编程原则首先进行板级代码编程,在MDK工程的bsp项目组中新建两个源文件和对应的头文件,这两个源文件分别是LED灯对应端口的配置程序和串口的配置程序。
  对于LED灯的编程,为了方便移植,使用带参宏定义LED对应引脚:
  #define Reset(p,i) {p->BRR=i;}
  #define Set(p,i) {p->BSRR=i;}
  BRR和BSRR寄存器是STM32的GPIO端口对应的设置/清除寄存器。寄存器只能进行写1操作,在对应的端口输出低/高电平,写0将不产生影响。上述宏定义将控制引脚的电平高低,实现LED点亮和熄灭操作[5]。
  串口用来连接上位机和开发板,在串口编程中主要包括串口配置、DMA配置和printf()函数的重定向编程。串口配置为波特率是115200,1个停止位,8个数据位,没有校验位,不使用硬件流控制。这种常用的配置方式既安全又高效[6]。
  最后,对printf()函数进行重定向。printf()函数作为C语言的格式化輸出函数,将数据发送到标准输出设备以达到显示的目的。在嵌入式开发中,对于没有标准输出设备的情况,需要重定向该函数,即将待发送数据发送至串口,利用串口助手进行显示。
其他文献
程序设计基础课程是高等院校学生的必修课程,对于程序初学者而言,不易理解和把握程序的复杂语法和程序的运行过程。为了促进学生理解、提高课堂效果,引入图示法。以多表逻辑
印度化工业在1999~2000年度的增长速度仍然强劲,达到11%~12%。印度化学品制造商协会(ICMA)主席及Herdillia化工公司总经理Rajeev Pandia说,这一增长的原因是印度向正在恢复的亚洲市
以具有优良抗性的加拿大披碱草(Elymus canadensis L.)新品系为试验材料,研究加拿大披碱草新品系在高盐胁迫下生理生化指标的变化,以期揭示其耐盐生理特性。研究结果表明:在质量
今年4月在德国杜塞尔多夫举行的2001年美容化妆品博览会上(In-Cosmetics),有250家以上的参展商推出了它们最新的美容化妆品用原料、香料和其他成分等。
该文主要研究面向高校新生入学报到的信息发布平台及Android App开发的设计与实现,帮助新进校的学生提前了解学校、知晓学校相关信息,便于新生提前融入学校,为新生的学习与生
新的课程标准要求:教师应努力使自己所掌握的课堂资源与学生所提供的充满个性化的课程资源共融,努力将学生所掌握的信息转化为课堂教学的现实资源。也就是说,教师要充分挖掘和利用学生的能力和掌握的知识,为课堂所用。我们不得不承认,现在的学生在好多方面都证明着“弟子不必不如师”的理论。计算机自不待言,单就普通话来说,绝大多数学生要比教师讲得自然和标准得多。由于年龄和地域的关系,我们这儿的语文教师,尤其是男教师
<正> 为了不断地满足塑料制品向高度集成化、高度精密化、高度机能化、高产量等方面发展的要求,塑料注射成型技术也有很大进步:①电动式注射机、螺杆头部或螺杆压缩段设置高