参考:嵌入式专周_第1页
参考:嵌入式专周_第2页
参考:嵌入式专周_第3页
参考:嵌入式专周_第4页
参考:嵌入式专周_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 目录一、概述11.实验目的12.实习内容与要求1二、嵌入式系统技术21.嵌入式系统技术简介22.C/OS-II操作系统简介2三、硬件设计31.Cortex-M3芯片简介3a.芯片概述3b.内核架构32.stm32简介43. 硬件电路模块6a. 电路各模块图6b.电路总原理图:8c.电路PCB图9四、软件设计91.Keil软件基本用法9五、总结以及心得25一、概述1.实验目的1) 系统地了解嵌入式系统的基本组成、工作原理和应用;熟悉嵌入式系统的开发流程。2) 学会阅读中文、英文技术文档,理解ARM硬件体系结构。3) 了解嵌入式系统硬件和软件开发的技术,熟悉电路原理图和PCB的设计、Keil软件

2、的应用。4) 熟悉嵌入式系统硬件和软件的调试方法。5) 了解C/OS-II操作系统内核的基本结构和移植方法;掌握将C/OS-II内核移植到Cortex-M3处理器上的方法和步骤。6) 综合应用所学过的专业知识。2.实习内容与要求1) 阅读Cortex-M3处理器相关技术文档(中文、英文Datasheet,以STM32F103为主),理解ARM处理器的组成、工作原理,以及典型系统硬件的设计。2) 用电路CAD软件,设计Cortex-M3的最小系统,得到电路原理图和PCB图。3) 熟悉Keil MDK 5.14进行ARM开发的方法,包括:软件基本操作、创建工程、调试方法、ARM接口驱动程序库的使用

3、方法。4) 了解C/OS-II操作系统内核的基本结构和移植方法。5) 撰写报告。二、嵌入式系统技术1.嵌入式系统技术简介 嵌入式系统(Embedded system),是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”,根据英国电气工程师协会( U.K. Institution of Electrical Engineer)的定义,嵌入式系统为控制、监视或辅助设备、机器或用于工厂运作的设备。与个人计算机这样的通用计算机系统不同,嵌入式系统通常执行的是带有特定要求的预先定义的任务。由于嵌入式系统只针对一项特殊的任务,设计人员能够对它进行优化,减小尺寸降低成本。嵌入式系统通常进行大量

4、生产,所以单个的成本节约,能够随着产量进行成百上千的放大。嵌入式系统是用来控制或者监视机器、装置、工厂等大规模设备的系统。国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是由单个程序实现整个控制逻辑。嵌入式系统的核心是由一个或几个预先编程好以用来执行少数几项任务的微处理器或者单片机组成。与通用计算

5、机能够运行用户选择的软件不同,嵌入式系统上的软件通常是暂时不变的;所以经常称为“固件”。2.C/OS-II操作系统简介C/OS-II 是一种基于优先级的抢占式多任务实时操作系统,包含了实时内核、任务管理、时间管理、任务间通信同步(信号量,邮箱,消息 队列)和内存管理等功能。它可以使各个任务独立工作,互不干涉,很容易实现准时而且无误执行,使实时应用程序的设计和扩展变得容易,使应用程序的设计过程大为减化。C /OS-II是一个完整的、可移植、可固化、可裁剪的抢占式实时多任务内核。C/OS-II绝大部分的代码是用ANSII的C语言编写的,包含一小部分汇编代码,使之可供不同架构的微处理器使用。至今,从

6、8位到64位,C/OS-II已在超过40种不同架构上的微处理器上运行。C/OS-II已经在世界范围内得到广泛应用,包括很多领域, 如手机、路由器、集线器、不间断电源、飞行器、医疗设备及工业控制上。实际上,C/OS-II已经通过了非常严格的测试,并且得到了美国航空管 理局(Federal Aviation Administration)的认证,可以用在飞行器上。这说明C/OS-II是稳定可靠的,可用于与人性命攸关的安全紧要(safety critical)系统。除此以外,C/OS-II 的鲜明特点就是源码公开,便于移植和维护。三、硬件设计1.Cortex-M3芯片简介a.芯片概述Cortex-M

7、3是一个32位处理器内核。内部的数据路径是32位的,寄存器是32位的,存储器接口也是32位的。CM3采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问并行不悖。这样一来数据访问不再占用指令总线,从而提升了性能。为实现这个特性,CM3内部含有好几条总线接口,每条都为自己的应用场合优化过,并且它们可以并行工作。但是另一方面,指令总线和数据总线共享同一个存储器空间(一个统一的存储器系统)。换句话说,不是因为有两条总线,可寻址空间就变成8GB了。比较复杂的应用可能需要更多的存储系统功能,为此CM3提供一个可选的MPU,而且在需要的情况下也可以使用外部的cache。另外在CM3中,Bot

8、h小端模式和大端模式都是支持的。CM3内部还附赠了好多调试组件,用于在硬件水平上支持调试操作,如指令断点,数据观察点等。另外,为支持更高级的调试,还有其它可选组件,包括指令跟踪和多种类型的调试接口。b.内核架构ARMCortex-M3采用哈佛结构,并选择了适合于微控制器应用的三级流水线,但增加了分支预测功能。现代处理器大多采用指令预取和流水线技术,以提高处理器的指令执行速度。流水线处理器在正常执行指令时,如果碰到分支(跳转)指令,由于指令执行的顺序可能会发生变化,指令预取队列和流水线中的部分指令就可能作废,而需要从新的地址重新取指、执行,这样就会使流水线“断流”,处理器性能因此而受到影响。特别

9、是现代C语言程序,经编译器优化生成的目标代码中,分支指令所占的比例可达10-20%,对流水线处理器的影响会的更大。为此,现代高性能流水线处理器中一般都加入了分支预测部件,就是在处理器从存储器预取指令时,当遇到分支(跳转)指令时,能自动预测跳转是否会发生,再从预测的方向进行取指,从而提供给流水线连续的指令流,流水线就可以不断地执行有效指令,保证了其性能的发挥。ARMCortex-M3内核的预取部件具有分支预测功能,可以预取分支目标地址的指令,使分支延迟减少到一个时钟周期。针对业界对ARM处理器中断响应的问题,Cortex-M3首次在内核上集成了嵌套向量中断控制器(NVIC)。Cortex-M3的

10、中断延迟只有12个时钟周期(ARM7需要24-42个周期);Cortex-M3还使用尾链技术,使得背靠背(back-to-back)中断的响应只需要6个时钟周期(ARM7需要大于30个周期)。Cortex-M3采用了基于栈的异常模式,使得芯片初始化的封装更为简单。Cortex-M3加入了类似于8位处理器的内核低功耗模式,支持3种功耗管理模式:通过一条指令立即睡眠;异常/中断退出时睡眠;深度睡眠。使整个芯片的功耗控制更为有效。2.stm32简介STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-0内核(ST's product portfolio

11、contains a comprehensive range of microcontrollers, from robust, low-cost 8-bit MCUs up to 32-bit ARM-based Cortex®-M0 and M0+, Cortex®-M3, Cortex®-M4 Flash microcontrollers with a great choice of peripherals. ST has also extended this range to include an ultra-low-power MCU platform)

12、。按内核架构分为不同产品:其中STM32F1系列有:STM32F103“增强型”系列STM32F101“基本型”系列STM32F105、STM32F107“互联型”系列增强型系列时钟频率达到72MHz,是同类产品中性能最高的产品;基本型时钟频率为36MHz,以16位产品的价格得到比16位产品大幅提升的性能,是32位产品用户的最佳选择。两个系列都内置32K到128K的闪存,不同的是SRAM的最大容量和外设接口的组合。时钟频率72MHz时,从闪存执行代码,STM32功耗36mA,是32位市场上功耗最低的产品,相当于0.5mA/MHz。STM32平台采用核心板+外围板方式。核心板主要包括STM32F

13、103VET6最小系统、按键、LED灯、TF卡、串口和JTAG电路。可以完成STM32内部资源的大部分开发应用。外围板包括数码管电路、存储器电路、红外、光敏电阻、温度传感器、ULN2003电路、步进电机、蜂鸣器、DS1302时钟电路和CAN总线等电路设计,基本包括了STM32的所有资源、同时又对IIC、单总线、SPI总线、CAN总线等协议进行了硬件设计。可以说,如何将核心板和外围板调试完成,就掌握了大部分的STM32内容。核心板的资源有: 1. 主CPU, 为STM32F103VET62.  MiniUSB插座,具有通信功能,可进行USB通信实验3. 电源模块,可

14、以为系统提供3.3V电源4.  单片机最小系统,包括晶振,复位电路,去耦电容等 5. 4个LED灯6. 4个按键电路7. TF卡电路外围板的资源有: 1. 2个四路数码管2. 1个ULN2003电路、1个步进电机3. 1个蜂鸣器4. 1个24C02芯片5. 1个红外检测芯片HX18386. 1个光敏电阻7. 1个DS18B20温度检测芯片8. 1个DS1302时钟芯片9. 1个CAN通信芯片TJA10503. 硬件电路模块a. 电路各模块图Stm32系统原理图b.电路总原理图:c.电路PCB图四、软件设计1.Keil软件基本用法1) 在桌面新建文件夹,命名。打开下

15、载好的Keil软件,如图2) 选择菜单栏(工程新建工程),然后出现的对话框,保存在选-桌面_选择自己新建的文件夹打开,输入任意名字,点击保存,如图3) 然后出现如图所示,选择89c51,点击确定4) 选择文件新件文件,输入程序,然后点击保存,出现对话框文件名后记得加.c 。如图所示5) 然后选择左方框中的Target 1文件夹展开,选择Souece Group1点击鼠标右键,选择增加文件到组,打开如图所示,选择Text1.c,单击Add6) 然后选择左方框中的Target 1文件夹,右击鼠标,打开选择目标Target 1属性,在出现的对话框选择输出按钮下的E生成HEX文件前打钩,点击确定如图7

16、) HEX文件已产生,如图2温度测量电路图3.程序#include"stm32f10x.h"#include"string.h"#include"usart.h"#include"delay.h"#include"led.h"#include"key.h"#include"24cxx.h"#include"ili93xx.h"#include"touch.h"#include "ucos_ii.h"

17、; #include"GUI.h"#include"app_cfg.h"OS_STK Start_Task_StkSTART_TASK_STK_SIZE; static void Load_Drive(void)u8 key; Stm32_Clock_Init(9); delay_init(72); uart_init(72,9600); LED_Init(); KEY_Init(); AT24CXX_Init(); GUI_Init();tp_dev.init();key = KEY_Scan(0);if(key=1)TP_Adjust(); int

18、main(void) Load_Drive(); while(1) OSInit(); OSTaskCreate(Start_Task, (void *)0, &Start_Task_StkSTART_TASK_STK_SIZE-1, START_TASK_PRIO); OSStart(); return 0; 6.2、app.c#include"app_cfg.h"#include "ucos_ii.h" #include "led.h"#include "gui.h"OS_STK UCGUI_DEMO_

19、Task_StkUCGUI_DEMO_TASK_STK_SIZE; OS_STK LED_Task_StkLED_TASK_STK_SIZE; OS_STK TOUCH_TEST_Task_StkTOUCH_TEST_TASK_STK_SIZE; OS_STK LED1_Task_StkLED1_TASK_STK_SIZE;static void Create_Task(void); void Start_Task(void *p_arg);static void UCGUI_DEMO_Task(void *p_arg);static void LED_Task(void *p_arg);st

20、atic void LED1_Task(void *p_arg);static void TOUCH_TEST_Task(void *p_arg);void GUID(void);static void Create_Task(void) OSTaskCreateExt(UCGUI_DEMO_Task, (void *)0,&UCGUI_DEMO_Task_StkUCGUI_DEMO_TASK_STK_SIZE -1, UCGUI_DEMO_TASK_PRIO,UCGUI_DEMO_TASK_PRIO, & UCGUI_DEMO_Task_Stk0, UCGUI_DEMO_TA

21、SK_STK_SIZE, (void *)0, OS_TASK_OPT_STK_CHK|OS_TASK_OPT_STK_CLR ); OSTaskCreateExt(LED_Task, (void *)0,&LED_Task_StkLED_TASK_STK_SIZE -1, LED_TASK_PRIO,LED_TASK_PRIO, & LED_Task_Stk0, LED_TASK_STK_SIZE, (void *)0, OS_TASK_OPT_STK_CHK|OS_TASK_OPT_STK_CLR ); OSTaskCreateExt(LED1_Task, (void *)

22、0,&LED1_Task_StkLED1_TASK_STK_SIZE -1, LED1_TASK_PRIO,LED1_TASK_PRIO, & LED1_Task_Stk0, LED1_TASK_STK_SIZE, (void *)0, OS_TASK_OPT_STK_CHK|OS_TASK_OPT_STK_CLR ); OSTaskCreateExt(TOUCH_TEST_Task, (void *)0,&TOUCH_TEST_Task_StkTOUCH_TEST_TASK_STK_SIZE -1, TOUCH_TEST_TASK_PRIO,TOUCH_TEST_TA

23、SK_PRIO, & TOUCH_TEST_Task_Stk0, TOUCH_TEST_TASK_STK_SIZE, (void *)0, OS_TASK_OPT_STK_CHK|OS_TASK_OPT_STK_CLR ); void Start_Task(void *p_arg) (void)p_arg; Create_Task(); while (1) OSTimeDlyHMSM(0, 0, 0, 500); static void UCGUI_DEMO_Task(void *p_arg)(void)p_arg;while(1) MainTask(); OSTimeDlyHMSM(

24、0, 0, 0, 10); static void LED_Task(void *p_arg)(void)p_arg;while(1)led_on(0);OSTimeDlyHMSM(0,0,1,0); led_off(0);OSTimeDlyHMSM(0,0,1,0); static void LED1_Task(void *p_arg)(void)p_arg;while(1)led_on(1);OSTimeDlyHMSM(0,0,0,500); led_off(1);OSTimeDlyHMSM(0,0,0,500); static void TOUCH_TEST_Task(void *p_a

25、rg)(void)p_arg;while(1) GUI_TOUCH_Exec(); OSTimeDlyHMSM(0, 0, 0, 10); 6.3、MainTask.c#include "GUI.h"#include "button.h"#include "DIALOG.h"#include "delay.h"BUTTON_Handle hButton;BUTTON_Handle hButton1;BUTTON_Handle hButton2; int Key = 0;void BUT(void);void ESC

26、(void);void MainTask(void)GUI_Init();BUT();ESC();Key = GUI_WaitKey();while(1)if (Key!=0)switch(Key)case 1: GUI_DispStringAt("Hello world!",113,70);BUTTON_Delete(hButton);BUTTON_Delete(hButton1);BUTTON_Delete(hButton2);GUI_DispDecAt(Key,140,140,4);Key=3;break;case 2: GUI_DispStringAt("hehe!",113,70);BUTTON_Delete(hButton1);BUTTON_Delete(hButton1);BUTTON_Delete(hButton2);GUI_DispDecAt(Key,140,140,4);Key=3;break;case 3: delay_ms(10);BUT();break;default:break;Key=0;elsedelay_ms(10);void ESC(void)GUI_SetColor(GUI_CYAN);GUI_SetFont(&GUI_Font8x

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论