嵌入式系统课程设计报告

上传人:cn****1 文档编号:488984458 上传时间:2022-09-23 格式:DOCX 页数:16 大小:404.96KB
返回 下载 相关 举报
嵌入式系统课程设计报告_第1页
第1页 / 共16页
嵌入式系统课程设计报告_第2页
第2页 / 共16页
嵌入式系统课程设计报告_第3页
第3页 / 共16页
嵌入式系统课程设计报告_第4页
第4页 / 共16页
嵌入式系统课程设计报告_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《嵌入式系统课程设计报告》由会员分享,可在线阅读,更多相关《嵌入式系统课程设计报告(16页珍藏版)》请在金锄头文库上搜索。

1、NORTH CHINA UNIVERSITY OF SCIENCE AND TECHNOLOGY嵌入式系统课程设计报告学生姓名:学 号:学 院:专业班级:指导教师:同组成员:2016年 12月26日一、课程设计目的本课程设计是在嵌入式系统原理与应用课程的基础上,通过软件编程及 仿真调试的实践,进一步掌握嵌入式系统的原理和应用方法, 是毕业设计前的一 次重要实践,为今后从事嵌入式系统相关工作岗位打下良好的基础。二、设计题目及要求2.1 设计题目:基于STM32口 uC/OS-II的多任务设计2.2 功能实现:使用uC/OS-II的任务管理函数和STM32库函数控制相应的寄存器,完成 一个多任务设

2、计。整个设计共有 4个任务,驱动一个LED指示灯闪烁、由3 个LED指示灯组成的流水灯、驱动蜂鸣器和利用 swd方式进行printf输出。2.3 设计要求:理解和熟练使用KEIL软件、STM32寄存器、STM32库函数和uC/OS-II 任务管理函数,用KEIL软件完成编程和调试,下载到开发板中实现 4个设 定的任务,并完成课程设计报告。四个任务分别为:(1)驱动1个LED指示灯闪烁、(2)由3个LED指示灯组成流水灯(3)驱动蜂鸣器发出响声。(4)利用swd方式进行printf输出。三、设计原理说明3.1硬件说明本次课程设计主要使用的是 STM32神舟IV号开发板为基础进行课 程设计的,本节

3、将详细介绍神舟IV号开发板的各部分硬件原理与实现。(1)开发板资源图电源音频插座音频芯片复位BEEP指示灯后动 模式2个ADC2 个 DAC电源选 择开关4组用户功能按键JTAG/SWD调试仿真接口方个总线 1个485总线31sM无线模块接口10/100M以太用芯片USB OTG 生从接口2Kbit 24C02 ELPROMSTIJ2F107VCoj-tex-MADCS*电源输入3.3V电源 转换芯片I6M bitSPI FLASHXS寸Z3寸寸 TFT LCD 触摸屏接口 320 X 2中 26万色可调电阻 模数转换rtc实时vq串口芯片J_1串口激认)J时钟电池 J (2) MCU开发板的

4、处理器是STM32F107VCT6,该处理器基于ARM V7架构的 Cortex-M3内核,主频72Mhz,内部含有256K字节的FLASH和64K字节 的SRAM, LQFP100 封装。(3)蜂鸣器开发板板载一个无源蜂鸣器,用于产品告警或声音提醒。蜂鸣器连 接到了处理器的PA3管脚,当处理器的PA3管脚输出低电平时蜂鸣器开始 鸣响,反之处理器的PA3管脚输出高电平时蜂鸣器停止鸣响.(4)指示灯开发板提供了 1个电源指示灯和4路通用LED指示灯。电源指示灯指 示3.3V电源是否正常。4路通用LED指示灯可以用于指示STM32开发板的 状态。用户LED指示灯由GPIO管脚控制LED灯的亮灭,当

5、GPIO管脚输 出低电平时,LED指示灯亮。反之,当GPIO管脚输出高电平时,LED 指示灯灭。这四个LED指示灯分别由PD2、PD3、PD4和PD7控制。(5) JTAG仿真调试开发板提供标准的20针JTAG接口,可以直接和JLINK V8仿真器连接,下载程序,调试仿真;(6)晶振电路STM32F107部已经包含了 8MH高速内部RCS荡电路,但是其精准度 不是很高;为此在外部增加了 25MHz勺晶振电路,为系统的可靠工作提供 时序基准。(7)设计中用到的管脚芯片引脚开发板模块PD2LED1PD3LED2PD4LED3PD7LED4PA3蜂鸣器3.2 STM32寄存器使用说明设计中,只用到时

6、钟和GPIOI关的寄存器。(1) STM32F107VC共有 80个GPIQ 分成 A、B、C、D EM个组,每组 有13-16个可用的I/O端口,每个GPIOT以自由编程。通过各个寄存器来控制 GPIO俞出高电平或者是低电平。每个GPIOt7个寄存器来控制,其中CRLSCRH 用来确定I/O管脚的方向和速率以及何种驱动方式,BSRRT直接修改某一个CPI4唧的高低电平,BRUT将GPIOS零。(2) 在使用配置GPIOif存器之前,都要先配置 GPIO勺时钟。通过RCC 寄存器当中的CR CFGR3CIR#设置系统时钟。GPI也在APB23、线上,可对 APB2ENR存器设置来确定所用到的G

7、PIO寸钟。(3) pC/OSII用Cortex-M3的SysTick定时器产生操作系统需要的滴答 时钟,作为整个系统的根基。SysTick定时器的四个寄存器SysTick_CTRL SysTick_LOAD SysTick_VAL、SysTick_CALIB控制每隔一定时间产生一个中 断使nC/OSII系统能进行多任务控制。(4) 用至用勺寄存器:CRL CRH BRR BSRR CR CFGR CIR、APB2ENR SysTICK_CTRL SysTICK_LOAD SysTICK_VAL SysTICK_CALIB3.3 STM32库函数使用说明设计中只用到时钟和GPIO相关的库函数。

8、(1)直接配置寄存器开发,如果代码比较庞大,可读性差。ST针对STM32 封装好一个软件封装库,开发者可调用函数接口( API , Application Program Interface )来完成相应的开发工作,配置寄存器的工作由接口函;.数完成,使开发人员脱离最底层的寄存器操作,易于阅读,维护成本低。库 是架设在寄存器与用户驱动层之间的代码,向下处理与寄存器直接相关的配 置,向上为用户提供配置寄存器的接口。库开发方式与直接配置寄存器的方 式的区别:库开发方式直手配宜麦学卷直接配置寄存器方式*(2)库目录和文件简介Libraries文件夹下是驱动库的源代码及启动文件。在使用库开发时,需要把

9、libraries目录下的相关库函数文件添加到工程中。进入Libraries文件夹看到,关于内核与外设的库文件分别存放在CMSIS和 STM32F10x_StdPeriph_Driver文件夹中。CMSIS (Cortex Microcontroller Software Interface Standard ) : ARMf所有 Cortex 芯片厂商的产品的软件接口标准化,制定了 CMSIS标准。CMSIS层起着承上 启下的作用,一方面该层对硬件寄存器层进行了统一的实现,屏蔽了不同厂 商对Cortex-M系列微处理器核内外设寄存器的不同定义,另一方面又向上 层的操作系统和应用层提供接口,简

10、化了应用程序开发的难度。LibrariesCMSISCM3 文件夹下又分为 CoreSupport 和DeviceSupport 文 件夹。在CoreSupport中的是M3核通用的源文件core_cm3.c和头文件 core_cm3.h,作用是为采用Cortex-M3核设计SOC的芯片商设计的芯片外设提 供一个进入M3内核的接口。这两个文件在其它公司的 Cortex-M3系列芯片也 是相同的。我们只需把这个文件加进我们的工程文件即可。在DeviceSupport文件夹下的是启动文件、外设寄存器定义 &中断向量定 义层 的一些文件,由ST公司提供。system_stm32f10x.蚊件的功能是

11、设置系 统时钟和总线时钟,该文件中包含了 stm32f10x.h这个头文件。启动文件要 选择startup_stm32f10x_cl.s系统启动文件由汇编编写,不同的文件对应不同 的芯片型号。启动文件是任何处理器在上电复位之后最先运行的一段汇编程 序。在我们编写的c语言代码运行之前,需要由汇编为c语言的运行建立一 个合适的环境,接下来才能运行我们的程序。所以我们也要把启动文件添加 进我们的的工程中去,其作用相当于 bootloader。STM32F10x_StdPeriph_Driver :该文件夹下有inc和srcffi个文件夹,者B 属于CMSIS的设备外设函数部分。src里面是每个设备外

12、设的驱动程序。src和inc文件夹里的就是ST公司针对每个STM32外设而编写的库函数 文件,每个外设对应一个.c和.h后缀的文件。我们把这类外设文件统称为: stm32f10x_ppp.c 或stm32f10x_ppp.h 文件,ppp表示外设名称。如针对 GPIO 外设,在src文件夹下有一个stm32f10x_gpio.c源文件,在inc文件夹下有一 个stm32f10x_gpio.h文件,设计中用到了 STM32的GPIO,则至少要把这两 个文件包含到工程里。这两个文件夹中,还有一个很特别的misc.c文件,这个文件提供了外设对 内核中的NVIC(中断向量控制器)的访问函数,在配置中断

13、时,我们必须把这 个文件添加到工程中。在用库建立一个完整的工程时,还需要添加user目录下的stm32f10x_it.c、 stm32f10x_it.h、stm32f10x_conf.h 这三个文件。stm32f10x_it.c用来编写中断 服务函数;stm32f10x_conf.h用来配置使用了什么外设的头文件, 用这个头文 件我们可以很方便地增加或删除外设驱动函数库。库文件直接包含进工程即可,丝毫不用修改,而有的文件就要我们在使 用的时候根据具体的需要进行配置。(3)用到的库函数:SystemInit、RCC_APB2PeriphClockCmd SysTick_Config、GPIO_I

14、nit 、GPIO_SetBits、GPIO_ResetBits。3.4 uC/OS-II任务管理函数使用说明设计中用到的任务管理函数包括任务堆栈的建立、任务的创建和 uC/OS-II的初始化和任务的启动。(1) UCOSI的前身是UCO S最早出自于1992年美国嵌入式系统专 家Jean J.Labrosse把UCOS的源码发布在BBS上。目前最新的版本是 UCOSIII,但是现在使用最为广泛的还是 UCOSILUCOSII是一个可裁减的、抢占式、实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,已经移植到近40多种处理器体系 上,涵盖了从8位至I 64位各种CPU包才5 DSP

15、)。UCOSII (V2.91版本) 体系结构如下图所示:section 2 ARM Cortex-M3 / Target Board(2) uC/OS-II操作系统内核的主要工作就是对任务进行管理和调度,任 务的执行代码通常是一个无限循环结构。从程序设计的角度来看,一个 uC/OS-II任务的代码就是一个C语言函数,任务的参数是一个 void类型的 指针,但是这些函数是由主函数 main ()来负责创建和启动,然后由操作系 统负责调度和运行,而不是调用的关系。OSTaskCreate()为仓ij建任务的函数,OSStart ()为启动任务的函数。使 用OSStart ()之后,任务就交由操作系统来管理和调度。每个任务都必须具有一个唯一的优先级别,每一个级别都用一个数字来表示,比如数字为0 255.在存储器中按数据“后进先出”的原则组织的连续存储空间称为堆栈, 为了满足任务切换和响应中断时保存 CPUS存器中的内容及存储任务私有数 据的需要,每个任务都应该配有自己的堆栈。任务堆栈是任务的重要组成部 分。使用数据类型。$_$丁来定义任务堆栈,即定义一个OS_ST族型的数组。在使用uC/OS-II的所有服务之前,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号