《嵌入式系统原理与开发教程 作业习题及答案赖树明.docx》由会员分享,可在线阅读,更多相关《嵌入式系统原理与开发教程 作业习题及答案赖树明.docx(30页珍藏版)》请在第一文库网上搜索。
1、第1章嵌入式基础知识U思政作业:阅读嵌入式系统发展历史文献,了解嵌入式系统的发展历程及其对社会进步和科技发展的贡献,撰写一篇阅读报告,其中报告格式不限,字数不少于800字。答案:省略说明:本题是开放作业,自行发挥。1.2 简述嵌入式系统国内定义及国际定义。答案:国际定义:用于控制、监视或者辅助操作机器和设备的装置。该定义是从应用上考虑的,嵌入式系统是软件和硬件的综合体,还可以涵盖机电等附属装置,只要是一个专用的工控系统都可以认为是嵌入式系统。国内定义:在国内,将嵌入式系统的一般定义是:是以应用为中心,通过软硬件裁减,适应对功能、可靠性、成本、体积、功耗等要求的专用计算机系统。1.3 简述ARM
2、公司与芯片厂家的关系。答案:ARM公司本身不进行具体芯片生产,它只负责设计处理器的构架,即处理器最核心的部件,然后把这个核心部件技术授权给全球各大半导体厂家,芯片厂家在这个核心部件基础上增加上外围设备设计成具有特定功能的处理器,再卖给设备厂家。1.4 简述STM32F40x最小系统包括哪几部分电路。答案:在结构上由片内/片上外设、板上外设构成,在电路上由芯片、电源电路、复位电路、振荡电路、启动电路组成。1.5 举例描述嵌入式系统的应用领域。答案:嵌入式系统几乎包括了生活中的所有电器设备,如掌上PDA、移动工控设备、电视机顶盒、手机、数字电视、多媒体、汽车导航仪、微波炉、数字相机、电梯控制器、空
3、调控制器、安全控制系统、自动售货机、消费电子设备、工业仪表与医疗仪器等。1.6 总结冯诺依曼体系结构和哈佛结构的特点。答案:冯诺依曼结构:把程序本身当作数据来对待,程序和该程序处理的数据用同样的方式存储,该结构的主要特点:单一存储、统一编址、分时复用。哈佛结构:使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存;使用独立的两条总线,分别作为CPU与每个存储器之间的专用通信路径,而这两条总线之间毫无关联,也就是该结构分开存储、独立编址、两倍带宽、效率更高。第2章Kei1开发环境及调试方法2.1 完成STM32F4的KEi1ARMMDK5开发集成开发环境的安装。答案:
4、省略说明:自选根据书木介绍,动手实际安装操作。2.2 使用MDK5创建一个基本STM32F407工程,并且编写一个基本的main函数。答案:省略说明:请根据STM32F407软件开发环境搭建.pdf步骤完成。2.3 扩展:请自选查阅资料,理解CMS1S的含义及常用的规范说明。答案:CMSIS(CortexMicrocontro11erSoftwareInterfaceStandard),翻译过来是ARMCortex微控制器软件接口标准。这个标准是ARM跟芯片厂商共同提出的,是为了不同芯片厂商生产的CorteX-Mo/M3/M4芯片能在软件上基本兼容,各芯片厂商只需要按照该标准实现自家芯片外设驱
5、动程序,就是兼容CMSIS标准的。CMSIS在规范内容很多,比如系统函数的命名、芯片初始化启动流程等,如STM32的标准库、HA1库、11库驱动程序就是根据该标准写的。关于CMSIS官方设备的框架结构如下图所示:第3章STM32F40x外设原理及控制方法3.1 使用寄存器配置方式,如何使能端口F的硬件?答案:查询芯片手册的外设时钟寄存器可以知道F在AHB1ENR寄存器的第5位,6.3.12RCCAHB1夕卜设时钟使能寄存器(RCCAHB1ENR)RCCAHB1periphera1c1ockenab1eregister偏移地址:0x30复位值:OXOo1OOOoo访问:无等待周期,按字、半字和字
6、节访问。3130292827225242322212019181716ReservedOTGHSU1PIENOTGHSENETHMACPTPENETHMACRXENETHMACTXENETHMACENReservedDMA2ENDMAIENCCMDATARAMENRes.BKPSRAMENReservedWrwrwrwrwrwrwrwrw1514131211109876543210ReservedCRCENReservedGPIOIENGPIOHENGPK)GENGPIOFENGPIOEENGPIODENGPIOCENGPIOBENGPIOAENrwrwrwrwrwrwrwfWrwrw3.2
7、因此,只需要把RCC_AHB1ENR寄存器第5位设置为1即可:RCC-AHB1ENR|=15;3.3 使用寄存器配置方式,如何配置PF1O为输出模式、PE13为输入模式?答案:开GGPF口时钟RCC-AHB1ENR=15;/配置GPF10:01通用输出模式对应的两位分别清0对应的两位分别设置为3对应的两位分别清0对应的两位分别清0对应的两位分别设置为01GPIOF-MODER&=(310*2);GPIOF-MODER=(110*2);配置默认输出高电平GPIOF-ODRI=110;开GPE,口时钟RCC-AHB1ENR=14;/配置GPF10:00输入模式GPIOE-MODER&=(313*2
8、);配置为:01:上拉-可选GPIOE-PUPDR&=(313*2);GPIOE-PUPDR=(113*2);3.4 使用寄存器配置方式,编写引脚电平输出控制函数。答案:/*:* 函数名:gpio_x_output_ctr1* 功能描述:控制指定引脚输出电平* 作者:ZhifaChen* 参数说明:gpio_obj:GPK)地址,GPIOA,GPIOA,.pinIUm:本组引脚号;Va1Ue:1或0* 返回值:无* 修改记录:无* 其他:voidgpio_x_output_ctr1(GPIO_TypeDef*gpio_obj,intpin_num,intva1ue)if(va1ue)gpio.
9、obj-ODR=(1pin_num);输出高电平e1segpio.obj-ODR&=(1pin_num);输出低电平3.4使用寄存器配置方式,编写读取输入引脚电平的函数。* 答案:* 函数名:gpio_x_read_pin* 功能描述:读取指定GPIO引脚电平* 作者:Zhifaehen* 参数说明:gpio_obj:GPK)地址,GPIOA,GPIOA,pinIUm:本组引脚号;* 返回值:1:高电平,0低电平* 修改记录:无其他:intgpio_x_read_pin(GPIO_iypeDef*gpio_obj,intpin_num)/!是把非1变成1,0还是0,因为一个引脚值一定是0或Ir
10、eturn!1(gpio-obj-IDR&(1pin-num);3.5 使用寄存器配置方式,根据图3.80原理图,实现跑马灯功能。图3.801ED电路图答案见:homework-ch3-3.51-1eds工程3.6 使用寄存器配置方式,根据图3.81,实现按键控制灯的亮、灭,每个按键控制一个1ED灯,实现按一下亮、再按一下灭,如此循环。图3.811ED电路图答案见:homework-ch3-3.6-button-1eds工程3.7 结合图3.80和图3.81,编程实现4个按键中断,正确控制1ED11ED4的亮、灭。答案见:homework-ch3-3.7-bu1ton-1eds-interru
11、p工程3.8 编程实现三个按键中断不同的抢占优先级,且分别控制1ED1-1ED3,它们中断抢占优先级分别设置如下:按键1:抢占优先级1按键2:抢占优先级2按键3:抢占优先级3若轮流按下按键3按键2按键1,请说明1ED11ED3的亮、灭现象。若轮流按下按键1按键2按键3,请说明1ED11ED3的亮、灭现象。答案见:homework-ch3-3.8-button-1eds-interrup1-nest工程说明:1.1 码中在中断服务程序是人为加入1.5S的延时,是为了方便模拟中断执行没完时按键其他按键可以看到是否能嵌套中断的效果。1.2 象是按下KEYI,在1.5S内按键KEY2或KEY3,都不会
12、马上响应,而是等待KEY1中断程序执行完成,会响应KEY2,KEY3,按下的中断程序,也就是低优先级不能嵌套高优先级。反之,按下KEY3,在1.5S内按键K2或K1,会马上响应,而是不需要等待KEY3中断程序执行完成,就响应KEY2KEYI的中断程序,会马上响应KEY1,KEY2,按下的中断程序,也就是高优先级可以嵌套高优先级。其他顺序分析方法如上面一样,请自选写。3.9 描述串口数据帧中的起始位、数据位、停止位的作用。起始位:一帧数据中,用1个低电平位来表示通信的开始;数据位:长度是58位,通常是一个字节有效数据,用来存放一帧要传输的有效数据。停止位:传输一帧数据后停止1位或1.5位传输的时
13、间长度,用于消除异步通信会产生的时间积累误差,或者说重新同步新的一帧数据传输,这样才可以确保长时间通信数据传输的正确性。答案见:homework-ch3-3.9-1eds-uart工程3.11 描述RC的起始信号、应答信号、停止信号的细节。答案:起始信号:SC1和SDA初始化为高电平,开始通信时SC1高电平期间SDA由高变成低,其作用相当于总线复位,通知所有I2C从机准备开始通信了。应答信号:在每个字节传输后紧跟着一个应答位,即第9个时钟SC1高电平期间,SDA是低电平表示应答信号,即告诉发送方数据已经成功接收。停止信号:当主机不想通信了,停止通信的条件是SC1高电平期间SDA由低电平变成高电
14、平,其作用是终止通信。3.12 根据课本PC时序图,编写代码,实现向AT24C02的连续写入与连续读取。答案见:homework-ch3-3.12-at24c02工程3.13 结合DMA和UART章节内容,编写代码,实现过DMA方式发送数据。答案见:homework-ch3-3.13-uart-dma-send工程3.14 综合应用:结合定时器、UART实现程序运行时间统计并且存储,以及通过UART与上位机通信修改存储EEPROM中运行时间。答案见:homework-ch3-3.14-runtime-save-eeprom工程分析:1. EEPROM读写工程基本上增加上定时器示例代码2 .记录机器运行时间,需要考虑新机器第一次运行时是没有正确的时间记录的,而EEPROM中的数值是无法确定的,因此程序设计需要能识别当前是否是已经设置过正确的运行时间,如果没有设置过运行时间,则表示是新机器,此时设置运行时间为0,更新至IJEEPROM中。解决方法是在EERPoM中增加一个初始化的标志值,开机先读取标志位置,判断是否是正确的初始化标志值,如果是,则表示不是新机器,读取此时的运行时间做当前起始时间,否则运行时间设置为0。为方便管理运行时间和已初始化标志,我们把他们设定为一个结构体,并且规定初始化标志值,代码片段如下所示:#defineRUNT1ME_HAVEJNIT_VA1UE0x