嵌入式系统设计平台课v_第1页
嵌入式系统设计平台课v_第2页
嵌入式系统设计平台课v_第3页
嵌入式系统设计平台课v_第4页
嵌入式系统设计平台课v_第5页
已阅读5页,还剩126页未读 继续免费阅读

下载本文档

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

文档简介

嵌入式系统设计主讲:王晓荣Email:wang@

D301实验室网络设置无线网络:D301_2、D301_3、D301_4无线网络密码:D301D303入网登录账号:zdh25入网登录密码:301303第1章嵌入式系统简介1什么是嵌入式系统1什么是嵌入式系统?广义:带有微处理器的专用软、硬件系统狭义:微处理器中带有嵌入式操作系统(EmbeddedOperatingSystem)的专用软、硬件系统思考STC89C52是不是嵌入式系统?什么是嵌入式操作系统1什么是嵌入式操作系统嵌入式操作系统EOS(EmbeddedOperatingSystem)是用在嵌入式系统中的操作系统。它在硬件和应用程序之间,通过提供应用程序接口,屏蔽了硬件工作的一些细节,从而使应用程序的设计人员得以在一个友好的平台上进行应用程序的设计和开发,大大提高了应用程序的开发效率。嵌入式操作系统的优缺点优点:提高了系统的可靠性程序设计和扩展更容易应用程序模块化,设计过程大为简化缩短了产品的开发周期。缺点:ROM/RAM开销大2~5%的CPU额外负荷内核费用较高嵌入式操作系统分类微型操作系统:UCOSII、UCLINUX、rt-thread等大型操作系统:Linux、WindowsCE、VxWorks、Symbian、PalmOS、QNX等UCOSIIμC/OS-II是一个源码公开、可移植、可固化、可裁剪、占先式的实时多任务操作系统。其绝大部分源码是用ANSIC写的,使其可以方便移植并支持大多数类型的处理器。μC/OS-II通过了联邦航空局(FAA)商用航行器认证。μC/OS-II占用很少的系统资源(几K的RAM和ROM),并且在高校教学使用是不需要申请许可证。UCLINUXuClinux是完全符合GNU/GPL公约的操作系统,完全开放代码。uClinux从Linux2.0/2.4内核派生而来,沿袭了主流Linux的绝大部分特性。适用于没有虚拟内存或内存管理单元(MMU)的处理器,例如ARM7TDMI。它通常用于具有很少内存或Flash(几百K)的嵌入式系统。它保留了Linux的大部分优点:稳定、良好的移植性、优秀的网络功能、完备的对各种文件系统的支持、以及标准丰富的API等。WINCEWindowsCE是微软开发的一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作,它是精简的Win95。WindowsCE的图形用户界面相当出色。WinCE具有模块化、结构化和基于Win32应用程序接口以及与处理器无关等特点。WinCE不仅继承了传统的Windows图形界面,并且在WinCE平台上可以使用Win95/98上的编程工具(如VisualBasic、VisualC++等)、使绝大多数的应用软件只需简单的修改和移植就可以在WindowsCE平台上继续使用。VxWorksVxWorks操作系统是美国WINDRIVER公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等,甚至在1997年4月登陆火星表面的火星探测器上也使用到了VxWorks。嵌入式系统的应用1辆汽车中有很多嵌入式系统马达控制器车灯尾灯控制系统后车门控制系统前车门控制系统座椅控制系统发动器控制系统所有的控制系统都是一个完整的嵌入式系统嵌入式系统的未来嵌入式系统的应用将无处不在。目前,产品市场翻番的周期狂热到6~9个月。STM32F107VCT61STM32F107VCT6本次课程以讲解STM32F107VCT6微控制器为主。STM32F107VCT6是STM32系列产品中的1款微控制器。STM32系列产品的命名规则见[2]P3。STM32是基于ARM公司Cortex-M3核的32位微控制器。Cortex-M3核CortexM3是MCU的中央处理单元(CPU),完整的基于CM3的MCU还需要很多其它组件。芯片制造商得到CM3内核的使用授权后,就可以在CM3内核基础上,添加存储器,外设,I/O以及其它功能块,形成自己的MCU。Cortex-M3芯片Cortex-M3的优点性能强劲功耗低实时性好成本低开发工具便宜程序开发容易Cortex

M3Cortex

M3的出现,在MCU市场上横扫一片,带来行业地震,引发MCU市场统一狂潮。以处处满溢的先进特性力压群芳。[1]P17Cortex-M3系列的生产厂商意法半导体(ST)恩智浦(NXP)德州仪器(TI)爱特梅尔(ATMEL)等等课后练习查阅资料,熟悉ARM架构的背景。STM32系列意法半导体生产的以Cortex-M3为内核的芯片统称为STM32系列2010年,STM32系列的总销量为1.44亿片,制约瓶颈为产能。2011年,STM32系列的产能扩大1倍。2011,STM32系列芯片的总销量占全部Cortex-M3内核总销量的45%。STM32F107VCT6的功能详见[5]。第2章GPIO1GPIOGPIO(GeneralPurposeInputOutput)通用输入输出接口GPIO引脚的内部结构思考同AT89S51、STC89C52相比有什么不同?输入输出数据寄存器输入的上拉和下拉电阻保护二极管输入输出数据寄存器定时将数据采样到输入数据寄存器。定时将数据送到输出数据寄存器。思考GPIO添加输入输出数据寄存器有什么优点?GPIO的功能模拟输入浮空输入下拉输入上拉输入开漏输出推挽输出复用开漏输出复用推挽输出专用寄存器GPIOx_CRL(配置)GPIOx_CRH(配置)GPIOx_IDR(输入数据)GPIOx_ODR(输出数据)GPIOx_BSRR(位置位/位清零)GPIOx_BRR(位清零)GPIOx_LCKR(配置锁定)RCC_APB2ENR([2]P70)

GPIO口的输出1例题例题:

LED(不用库)功能:不用库,在学习板上实现1个LED闪烁。课堂练习参考[6],新建一个项目,并下载到学习板上,观察运行结果。例题讲解硬件电路STM32内部结构简介STM32存储器映射片上外设的映射区域头文件启动代码书写规范版本号硬件电路供电电路晶振电路复位电路LED电路供电STM32的工作电压(VDD)为2.0~3.6V可通过LM1117稳压芯片实现[15]。课后上网查资料,熟悉LM1117芯片及其稳压电路。晶振电路内部晶振(精度较差,误差约为2%)外部晶振(普通晶振误差小于1000ppm,高精度晶振可达10ppm以下)复位电路低电平复位(同AT89S51相反)LED电路限流电阻的选择。Stm32引脚的驱动能力约为8mA。最好采用“灌电流”方式设计。STM32芯片内部结构简图存储器映射[1]P31(课本P17)STM32F107VCT6SRAM(64K)0x20000000~0x2000FFFFFLASHROM(256K)0x08000000~0x0803FFFF片上外设(散布)0x40000000~0x5003FFFF片上外设的起始地址参考[2]P28CPU对片上外设的控制是通过对存储单元的读写来实现思考GPIO端口D

(GPIOD)的控制存储区域复位和时钟控制(RCC)的控制存储区域GPIOD共有多少个专用寄存器?RCC共有多少个专用寄存器?GPIOD->CRL的地址是?RCC->APB2ENR的地址是?头文件头文件中对片上外设专用寄存器的符号做了定义。头文件添加方法:在编辑区域右击鼠标添加。用库和不用库头文件是不同的,为什么?启动代码启动代码的作用主要是对最小系统的初始化。版本号版本号:v0.0.0当版本号带有第3个数字时,为调试版本,当修改程序时,需保存老版本,并增加该数字的值在新版本上修改。当程序调试成功,可以发布时,可增加中间的数字,并去掉第3个数字。当可发布的版本有重大改进,可增加第1个数字。课堂练习完全掌握例题的软硬件设计。课堂练习在例题基础上修改,实现流水灯功能。例题例题:

LED功能:利用固件库,在学习板上实现1个LED的闪烁。课堂练习参考[6],新建一个项目,在学习板上实现例题功能。熟悉例题。课堂练习在例题(v0.0.0)基础上修改,实现流水灯功能。熟悉例题(v0.1.1).在例题(v0.1.1)基础上修改,实现流水灯功能。课后练习在例题基础上修改,分别用库和不用库实现LED的定时加一(二进制显示)。GPIO口的输入1例题例题:key(不用库)功能:不用库实现:按键控制LED亮灭。按键的硬件连接参考[15]。课堂练习在例题基础上修改,实现:4个按键控制4个LED亮灭。例题例题:key(v0.0.0版本)功能:用库实现:按键控制LED亮灭。课堂练习在例题基础上修改,实现:4个按键控制4个LED亮灭。例题例题:

key(v0.1.1版本)课堂练习在例题(v0.1.1)基础上修改,实现:4个按键控制4个LED亮灭。课后练习编写程序(用库)在学习板上实现下列功能:LED同时闪烁,LED左移的流水灯,

LED右移的流水灯,按键控制LED值加一和减一。不同功能通过KEY_1键切换,加一通过KEY_2键实现,减一通过KEY_3键实现。(注意格式的规范化)第3章中断和异常1中断和异常中断(Interrupt),异常(Exception)凡是打断程序顺序执行的事件,都被称为异常。异常包括:系统异常和外部中断。异常系统异常包括:有指令执行了“非法操作”,访问被禁的内存区间,因各种错误产生的fault,不可屏蔽中断等引起的与内核相关的异常。外部中断是指芯片内部片上外设引起的中断。外部中断相当于传统意义上的中断,包括:传统意义上的外部中断,定时中断,串行中断,SPI中断,AD中断等。中断和异常在不严格意义下:严格意义下的外部中断统称为中断;严格意义下的系统异常统称为异常。Cortex-M3的异常Cortex-M3的异常见[1]P33表2-2(课本P20)CM3支持240个中断,但具体使用多少个是由芯片生产商决定。STM32F107VC的异常见[2]P130表54。CM3异常的处理由NVIC(嵌套向量中断控制器)与CM3内核里应外合,共同完成。NVICNVIC(NestedVectoredInterruptController)CM3和NVIC对所有异常按优先级进行排序并处理。默认排序:异常向量表中位置靠前的优先级越高。思考默认情况下,外部中断0和外部中断1哪个优先级高?如何更改默认的优先级顺序呢?优先级对异常向量表中默认排序可通过设置抢占式优先级和响应式优先级进行修改。抢占式优先级高的中断可以嵌套抢占式优先级低的中断。抢占式优先级相同时,如同时产生中断,响应式优先级高的中断先得到处理。如两种优先级都相同时,默认优先级高的中断先得到处理。。优先级的设置STM32系列的抢占式优先级数量可设置为:1,2,4,8,16个当抢占式优先级设为1个时,该级别的响应式优先级可设16个。当抢占式优先级设为2个时,每个级别的响应式优先级可设8个,依此类推。思考当抢占式优先级设为8个时,每个级别的响应式优先级可设多少个?具体如何设置,详见后面的例题。相关库函数见后面的例题。操作模式1操作模式特权级handler模式特权级thread模式用户级thread模式关于用户级thread模式用户级代码禁止写特殊功能寄存器如果芯片带有MPU,用户级代码还禁止访问部分内存区域。STM32不带MPU双堆栈机制MSP、PSP默认使用MSPhandler模式只能使用MSPthread模式可以使用MSP或PSPCONTROL[1]=1时,为PSP第4章外部中断1外部中断本章的外部中断均指传统的外部中断。STM32F10X的每个IO口都可以设为外部中断,最多可设19个。外部中断的引脚0号外部中断线只能设在GPIO口的0号引脚,依此类推,

15号外部中断线只能设在GPIO口的15号引脚。16号外部中断线只能连到PVD输出引脚。17号外部中断线只能连到RTC闹钟事件。18号外部中断线只能连到USB唤醒事件。例题例题:XINT功能:将学习板上的4个按键作为4个外部中断的输入,分别控制4个LED亮灭。课堂练习在例题“KEY”的基础上,进行修改,最终修改为例题“XINT”。用word文档记录修改过程。分析修改的每一步过程,搞懂为什么这样修改。课堂练习在学习板上实现下列功能:LED同时闪烁,LED左移的流水灯,

LED右移的流水灯,按键控制LED值加一和减一。不同功能通过KEY_1键切换,加一通过KEY_2键实现,减一通过KEY_3键实现。(按键用外部中断实现)课后练习阅读并熟悉[1]第2章、第7章、第8章。理解例题“XINT”。第5章系统时基定时器1系统时基定时器简介STM32F10X内核中有一个24位的系统时基定时器。设定初值并使能后,该定时器每经过1个系统时钟周期减1,当减到0时,自动重装初值,并触发中断。例题例题:SysTick功能:利用系统时基定时器,实现LED定时加一。例题例题:

KEY_SysTick要求:利用系统时基定时器实现按键去抖动。功能:按键控制LED闪烁课堂练习在例题“KEY_SysTick”的基础上,进行修改,最终修改为例题“KEY_SysTick”。用word文档记录修改过程。分析修改的每一步过程,搞懂为什么这样修改。课后练习利用系统时基定时器实现LED二进制显示值每隔1秒定时加一,其中,显示值可通过按键设置。第6章系统时钟1startup_stm32f10x_cl.s汇编代码简介时钟设置流程HSE(25MHZ)PREDIV2(/5,

5M)

PLL2MUL

(*8,40M)

PREDIV1SCR(PLL2,40M)

PREDIV1(/5,8M)

PLLSCR(PREDIV1,8M)

PLLMUL((*9,72M)

SW(PLL,72M)

SYSCLK(72MHZ)课堂练习找到系统时钟设置代码,结合[2],看懂系统时钟设置程序。一边看一边加注释。讨论和解释。课堂练习修改系统时钟,编写程序,观察修改后的效果。课后练习阅读并熟悉[2]第7章。第7章定时器1例题例题:

timer功能:利用通用定时器实现LED二进制显示值每隔1秒定时加一,其中,显示值可通过按键设置。课堂练习在其它例题基础上,进行修改,实现上面的例题“timer”。用word文档记录修改过程。分析修改的每一步过程,搞懂为什么这样修改。课堂练习改用tim5以外的通用定时器实现例题功能。课后练习编写测试代码,试试通用定时器的其它功能。第8章TFT-LCD1TFT-LCD简介TFT(ThinFilmTransistor)应用广泛学习板上的TFT彩屏分辨率为320*240,彩屏模块集成了SSD1289控制器[9]。TFT-LCD原理阅读[3]P266~270熟悉TFT-LCD的基本原理。例题例题:TFT-LCD功能:在TFT-LCD上显示字符及颜色。讨论和解释。课堂练习在TFT-LCD上显示电子钟。课后练习在TFT-LCD上显示可调时的电子钟。创新练习利用学习板实现一款创新作品。第9章uCGUI1uCGUI初识μC/GUI以C源代码形式给LCD应用程序提供了一个高效的封装库

温馨提示

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

评论

0/150

提交评论