配套课件-基于构件化的ARM嵌入式系统设计(共2册).ppt

上传人(卖家):三亚风情 文档编号:3224476 上传时间:2022-08-07 格式:PPT 页数:129 大小:5.65MB
下载 相关 举报
配套课件-基于构件化的ARM嵌入式系统设计(共2册).ppt_第1页
第1页 / 共129页
配套课件-基于构件化的ARM嵌入式系统设计(共2册).ppt_第2页
第2页 / 共129页
配套课件-基于构件化的ARM嵌入式系统设计(共2册).ppt_第3页
第3页 / 共129页
配套课件-基于构件化的ARM嵌入式系统设计(共2册).ppt_第4页
第4页 / 共129页
配套课件-基于构件化的ARM嵌入式系统设计(共2册).ppt_第5页
第5页 / 共129页
点击查看更多>>
资源描述

1、ARM嵌入式系统设计 以ARM微处理器为核心的嵌入式系统应用越来越广泛。本书特色:采用项目化教学方式,以“项目、任务、活动”等理实一体教学模式呈现教学内容。按照循序渐进、搭积木的设计思想,共设计了10个项目:闪灯的设计与实现、开关状态指示灯的设计与实现、利用定时中断实现频闪灯、利用数码管显示数字、键盘的检测与控制、利用UART实现上位机和下位机的通信、利用PWM实现小灯亮度控制、利用输入捕捉测量脉冲信号的周期和脉宽、利用ADC设计简易数字电压表、利用CAN实现多机通信。每个项目均基于构件化设计,且均采用了“通用知识”“硬件构件设计”“软件构件设计”“应用层程序设计”的学习流程。最后可根据学生的

2、基础层次,利用10个项目中的部分项目或全部项目进行综合应用系统设计和课程考核。本书可作为高等院校电子信息类、计算机类、自动化类、机电类等专业的单片机与嵌入式系统教材,也可供从事嵌入式技术开发的工程技术人员参考。项目1:闪灯的设计与实现项目2:开关状态指示灯的设计与实现项目3:利用定时中断实现频闪灯项目4:利用数码管显示数字项目5:键盘的检测与控制项目6:利用UART实现上位机和下位机的通信项目7:利用PWM实现小灯亮度控制项目8:利用输入捕捉测量脉冲信号的周期和脉宽项目9:利用ADC设计简易数字电压表项目10:利用CAN实现多机通信教学内容:项目1 闪灯的设计与实现【项目导读】在嵌入式系统中,

3、LED小灯是必备的状态指示设备。本项目的学习目标:使微控制器点亮一个LED小灯,在此基础上再实现流水灯的效果。在本项目中,首先,需要熟悉嵌入式系统的概念、组成以及嵌入式技术的学习方法;其次,需要熟悉本课程所采用的基于ARM Cortex-M0+内核的KEA128的芯片资源和硬件最小系统;再次,需要熟悉通用输入/输出(GPIO)底层驱动构件的设计及使用方法;最后,以LED小灯为例学习嵌入式硬件构件和嵌入式软件构件的设计及使用方法,掌握嵌入式软件最小系统的搭建方法和实现LED小灯闪烁的应用层程序设计方法,并在此基础上,自行完成流水灯的应用层程序设计任务。在本项目中,可借助附录B和附录C分别掌握嵌入

4、式软件集成开发环境Keil MDK及目标程序下载软件J-Flash的使用方法,以便为后续的学习奠定良好的基础。任务1.1 熟悉嵌入式系统,明确课程学习方法 微型计算机具有很大的通用性,所以又称通用计算机。测控领域的计算机系统是嵌入到应用系统中,以计算机技术为基础,软、硬件可裁剪,适应应用系统对功能、成本、体积、可靠性、功耗严格要求的专用计算机系统,即嵌入式计算机系统,简称嵌入式系统(Embedded System)。通俗地说,除了通用计算机(如台式计算机和笔记本计算机)外,所有包含CPU的系统都是嵌入式系统,其中以微控制器(Micro Controller Unit,MCU,国内也称为单片机)

5、为核心的嵌入式系统应用最广泛。1.1.1 嵌入式系统的由来和分类1、通用计算机和嵌入式计算机(1)MCU的基本结构 MCU的基本含义:在一块芯片上集成了CPU、ROM、RAM、定时/计数器、中断系统、看门狗及通用输入输出(GPIO)、模-数(A-D)转换、数-模(D-A)转换、串行通信I/O等多种输入输出接口的比较完整的数字处理系统。CPU与其他部件交互是通过MCU内部总线实现的。任务1.1 熟悉嵌入式系统,明确课程学习方法2、以MCU为核心的嵌入式系统1.1.1 嵌入式系统的由来和分类(2)以MCU为核心的嵌入式系统的基本组成任务1.1 熟悉嵌入式系统,明确课程学习方法2、以MCU为核心的嵌

6、入式系统1.1.1 嵌入式系统的由来和分类任务1.1 熟悉嵌入式系统,明确课程学习方法1.1.2 嵌入式技术基础与实践路线 嵌入式硬件构件设计主要包括MCU硬件最小系统(硬件核心构件)设计和常用外设硬件构件(小灯LIGHT、蜂鸣器BZ、开关SW、键盘KB、数码管LED、液晶LCD等)设计。嵌入式软件构件设计采用分层设计思想,自下而上依次是“底层驱动构件”、“应用外设构件”和“应用层软件”共3层软件设计。为了实现嵌入式系统设计的可移植和可复用,大幅度有效降低嵌入式技术学习难度和开发难度,嵌入式硬件和软件均需采用“构件化”设计。其中底层驱动构件和应用外设构件都包括对应的.h头文件和.c源文件,而应

7、用层程序包括总头文件includes.h、主程序源文件main.c和中断服务程序源文件isr.c。通用软件构件与CPU和MCU基本无关,是服务于以上3层软件设计的,其中公共软件构件主要包括公共文件的包含、公共宏定义和公共函数的实现,而功能软件构件包括一些功能软件的实现。任务1.2 熟悉KEA128资源和硬件最小系统 Kinetis EA(简称KEA)系列MCU是恩智浦公司开发的基于ARM Cortex-M0+(简称CM0+)内核的MCU。S9KEAZ128AMLK(简称KEA128)资源如下图所示。任务1.2 熟悉KEA128资源和硬件最小系统 片内Flash区(0 x0000_00000 x

8、0001_FFFF),共128KB,一般被用来存放中断向量、程序代码、常数等,其中前192B为中断向量表(中断函数的入口地址)。片内RAM区(0 x1FFF_F0000 x2000_2FFF),共16KB,一般被用来存储全局变量、静态变量、临时变量(堆栈空间)等。该芯片的堆栈空间的使用方向是向小地址方向进行,因此,堆栈的栈顶应该设置为RAM地址的最大值+1。这样,全局变量及静态变量从RAM的最小地址向大地址方向开始使用,堆栈从RAM的最高地址向小地址方向使用,从而可以减少重叠错误。1、KEA128的存储映像 KEA128把CM0+内核之外的模块用类似存储器编址的方式统一分配地址。在4GB的存储

9、映像空间内,分布着片内Flash、SRAM、系统配置寄存器及其他外设等,以便CPU通过直接地址进行访问。任务1.2 熟悉KEA128资源和硬件最小系统2、KEA128的引脚功能 从需求和供给的角度,把MCU的引脚分为硬件最小系统引脚和I/O端口资源类引脚两大类。(1)硬件最小系统引脚:需要服务的引脚,包括电源、复位、晶振、程序写入接口(SWD)等引脚。任务1.2 熟悉KEA128资源和硬件最小系统2、KEA128的引脚功能 从需求和供给的角度,把MCU的引脚分为硬件最小系统引脚和I/O端口资源类引脚两大类。(2)I/O端口资源类引脚:对外提供服务。I/O引脚一般具有多个复用功能,详见附录A的K

10、EA128引脚功能分配表,在实际应用时只能使用其中的一个功能。在嵌入式系统设计中,需要根据所使用的外设(含片内外设)对MCU的引脚资源进行统筹规划,以免多个外设使用相同的引脚而相互冲突。任务1.2 熟悉KEA128资源和硬件最小系统3、KEA128的硬件最小系统 MCU硬件最小系统是可以使MCU内部程序正常运行的最小规模的电路,主要包括MCU和电源、晶振、复位、写入调试器接口等外围电路。需要说明的是,若使用MCU内部的时钟作为系统时钟源,则外部晶振电路可省略。任务1.3 学习GPIO底层驱动构件设计及使用方法 GPIO(General Purpose Input Output),即通用输入/输

11、出,也称并行I/O,它是I/O的最基本形式。某个引脚作为通用输入引脚,MCU可以通过读取其内部寄存器的值“1”或“0”,以确定该引脚的状态是高电平还是低电平,即开关量输入;某个引脚作为通用输出引脚,MCU可以通过向其内部寄存器写“1”或“0”,以控制该引脚输出高电平或低电平,即开关量输出。MCU的大多数GPIO引脚可以通过编程来设定其工作方式为输入或输出,称之为双向GPIO。1.3.1 GPIO的通用知识1、GPIO概念任务1.3 学习GPIO底层驱动构件设计及使用方法 若MCU的某个引脚通过一个电阻接电源(VCC),则该电阻被称为“上拉电阻”;若MCU的某个引脚通过 一 个 电 阻 接 地(

12、GND),则该电阻被称为“下拉电阻”。1.3.1 GPIO的通用知识2、上拉电阻、下拉电阻与输入引脚的基本接法任务1.3 学习GPIO底层驱动构件设计及使用方法 作为通用输出引脚,MCU内部程序向该引脚输出高电平或低电平驱动外部设备工作,即开关量输出。输出引脚O1和O2分别采用了直接驱动和放大驱动方式。1.3.1 GPIO的通用知识3、输出引脚的基本接法任务1.3 学习GPIO底层驱动构件设计及使用方法1.3.2 KEA128的GPIO底层驱动构件设计及使用方法1、KEA128的GPIO引脚(1)KEA128芯片的GPIO引脚名 PTA7PTA0、PTB7PTB0、PTC7PTC0、PTD7P

13、TD0、PTE7PTE0、PTF7PTF0、PTG7PTG0、PTH7PTH0、PTI6PTI0。任务1.3 学习GPIO底层驱动构件设计及使用方法1.3.2 KEA128的GPIO底层驱动构件设计及使用方法1、KEA128的GPIO引脚(2)KEA128芯片I/O引脚的技术特性 I/O引脚的驱动能力:I/O引脚输出高电平,引脚与地之间的电压(或I/O引脚输出低电平,电源与引脚之间的电压)分别是5V和3V时:单个引脚的拉电流(或灌电流)分别是5mA和2.5mA,部分引脚的高驱动拉电流(或灌电流)分别是20mA和10mA,所有端口引脚总的最大拉电流(或灌电流)分别是100mA和60mA。I/O引

14、脚的输入电压参数(VIH和VIL):4.5VVDD5.5 V时,VIH0.65VDD,VIL0.35VDD;2.7VVDD4.5 V时,VIH0.7VDD,VIL0.3VDD。任务1.3 学习GPIO底层驱动构件设计及使用方法1.3.2 KEA128的GPIO底层驱动构件设计及使用方法1、KEA128的GPIO引脚(2)KEA128芯片I/O引脚的技术特性 I/O引脚的内部上、下拉电阻:所有能配置为GPIO的数字引脚(除了PTA2和PTA3)可通过编程配置为内部上拉到VDD,内部上拉电阻的阻值范围为30k50k。PTA2和PTA3引脚为开漏I/O引脚,用于输出时,需要外接上拉电阻。KEA128

15、芯片的数字输入引脚内部无下拉电阻。引脚复用:当引脚的其他功能复用时,相应的GPIO功能就被关闭。芯片复位后,复用的外设功能会被关闭,引脚自动成为GPIO引脚(除了默认被用作SWD_DIO、SWD_CLK、NMI功能的PTA4、PTA5、PTB4、PTC4引脚)。所有GPIO引脚都被配置为高阻抗状态。引脚的复用功能,可以通过系统集成模块(SIM)提供的引脚选择寄存器SIM_PINSEL编程来设定(使用其中某一种功能)。任务1.3 学习GPIO底层驱动构件设计及使用方法1.3.2 KEA128的GPIO底层驱动构件设计及使用方法2、KEA128的GPIO底层驱动构件设计分析 在设计驱动构件时,重点

16、是分析需要设计几个封装函数,每个函数的名称、参数、返回和功能等要素。引脚初始化函数:void gpio_init(uint_16 port_pin,uint_8 dir,uint_8 state)设置引脚状态函数:void gpio_set(uint_16 port_pin,uint_8 state)获取引脚状态函数:uint_8 gpio_get(uint_16 port_pin)引脚状态反转函数:void gpio_reverse(uint_16 port_pin)引脚上拉使能函数:void gpio_pull(uint_16 port_pin,uint_8 pull_select)端口_

17、引脚号引脚方向引脚状态上拉选择任务1.3 学习GPIO底层驱动构件设计及使用方法1.3.2 KEA128的GPIO底层驱动构件设计及使用方法2、KEA128的GPIO底层驱动构件设计分析 为了实现程序的可移植和可复用,减小重复劳动,MCU底层驱动程序封装成构件。GPIO底层驱动构件由gpio.h头文件和gpio.c源文件组成,若要使用GPIO底层驱动构件,只需将这两个文件添加到所建工程的04_Driver(MCU底层驱动构件)文件夹中,即可实现对GPIO引脚的操作。其中,gpio.h头文件主要包括相关头文件的包含、一些必要的宏定义、对外接口函数的声明;而gpio.c源文件则是对外接口函数的具体

18、实现,需要结合KEA128参考手册中的GPIO、PORT模块信息进行分析与设计,其程序请参阅附录F.1。应用开发者只要熟悉gpio.h头文件的内容,即可使用GPIO底层驱动构件进行编程,实现通过GPIO对不同外设进行检测或控制的功能。任务1.3 学习GPIO底层驱动构件设计及使用方法1.3.2 KEA128的GPIO底层驱动构件设计及使用方法3、KEA128的GPIO底层驱动构件头文件gpio.h任务1.4 嵌入式构件化设计方法及闪灯的实现 为了实现嵌入式系统设计在不同MCU和不同应用场合中的可移植和可复用,降低嵌入式技术学习难度和开发难度,嵌入式硬件和软件均需采用“构件化”设计。现以小灯构件

19、设计为例,说明嵌入式硬件构件和软件构件的设计方法。1.4.1 小灯硬件构件和软件构件的设计及使用方法1、小灯硬件构件及使用方法 a)小灯硬件构件 b)小灯硬件构件与MCU的引脚连接 图中虚线框内的粗体标识为硬件构件的接口注释,以便于理解该接口的含义和功能;虚线框外的正体标识为硬件构件的接口网标,具有电气连接特性,表示硬件构件的接口与MCU的引脚相连接。硬件构件在不同应用系统中移植和复用时,仅需修改接口网标。任务1.4 嵌入式构件化设计方法及闪灯的实现1.4.1 小灯硬件构件和软件构件的设计及使用方法2、小灯软件构件的设计及使用方法 小灯软件构件由 light.h 头文件和light.c 源文件

20、组成,若要使用小灯软件构件,只需将这两个文件添加到所建工程的05_App(应用外设构件)文件夹中即可实现对小灯的控制。其中,light.h 头文件主要包括相关头文件的包含、小灯硬件构件相关的宏定义、小灯构件对外接口函数的声明。用户只要熟悉light.h 头文件的内容,即可使用小灯软件构件进行编程。软件构件在不同应用系统中移植和复用时,仅需根据硬件构件接口修改软件构件头文件中的相关宏定义即可。任务1.4 嵌入式构件化设计方法及闪灯的实现1.4.1 小灯硬件构件和软件构件的设计及使用方法 light.c 源文件是小灯构件对外接口函数的具体实现。2、小灯软件构件的设计及使用方法 任务1.4 嵌入式构

21、件化设计方法及闪灯的实现1.4.2 嵌入式软件最小系统设计实现闪灯1、嵌入式软件最小系统 在嵌入式基础实践中,一般以“MCU控制小灯闪烁”作为入门实验,对应的程序框架称为“嵌入式软件最小系统”。“04底层驱动构件”、“05应用外设构件”、“06通用软件构件”、“07工程源程序构件”的文件都是由本构件的.h和.c文件组成。在此框架下可通过添加其他软件构件和修改应用层程序(工程源程序)完成不同功能的软件设计。任务1.4 嵌入式构件化设计方法及闪灯的实现1.4.2 嵌入式软件最小系统设计实现闪灯1、嵌入式软件最小系统 在嵌入式软件设计中,底层驱动构件和应用外设构件可由用户设计或使用他人设计好的,而应

22、用层软件由用户设计。对初学者,底层驱动构件和应用外设构件可直接使用他人设计好的,教学重点是教师引导学生熟悉并掌握MCU底层驱动构件头文件和应用外设构件头文件的使用方法,熟悉相关的宏定义,掌握对外接口函数的调用方法,并在此基础上根据系统功能,进行应用层功能软件设计和优化。任务1.4 嵌入式构件化设计方法及闪灯的实现1.4.2 嵌入式软件最小系统设计实现闪灯1、嵌入式软件最小系统 有一定基础者,可自行分析和设计应用外设构件。学习能力更强者,可借助芯片手册分析与设计底层驱动构件,进一步提高嵌入式软件设计水平。任务1.4 嵌入式构件化设计方法及闪灯的实现1.4.2 嵌入式软件最小系统设计实现闪灯2、闪

23、灯的应用层程序设计 在嵌入式软件最小系统框架下,设计07_Source(工程源程序构件)的文件,以实现小灯闪烁的效果。1)工程总头文件includes.h任务1.4 嵌入式构件化设计方法及闪灯的实现1.4.2 嵌入式软件最小系统设计实现闪灯2、闪灯的应用层程序设计 在嵌入式软件最小系统框架下,设计07_Source(工程源程序构件)的文件,以实现小灯闪烁的效果。2)主程序源文件main.c任务1.4 嵌入式构件化设计方法及闪灯的实现1.4.2 嵌入式软件最小系统设计实现闪灯【思考与实验】请读者通过修改主程序的代码,分别完成:(1)改变小灯闪烁的频率;(2)控制其他小灯闪烁;(3)实现流水灯的效

24、果。项目2 开关状态指示灯的设计与实现【项目导读】现实生活的很多场合中,通过开关(switch)控制用电设备。本项目是在项目1的基础上,实现通过指示灯反映开关状态的功能。在本项目中,重点掌握开关硬件构件和开关软件构件的设计及使用方法,并在基础上学会开关检测与控制功能的应用层程序设计方法。任务2.1 学习开关硬件构件和软件构件的设计及使用方法1、开关硬件构件及使用方法 a)开关硬件构件 b)开关硬件构件、小灯硬件构件与MCU的引脚连接任务2.1 学习开关硬件构件和软件构件的设计及使用方法2、开关软件构件及使用方法 开关软件构件由 sw.h 头文件和sw.c 源文件组成,若要使用开关软件构件,只需

25、将这两个文件添加到所建工程的05_App(应用外设构件)文件夹中即可实现对开关的操作。其中,sw.h 头文件主要包括相关头文件的包含、开关硬件构件相关的宏定义、开关构件对外接口函数的声明。用户只要熟悉sw.h头文件的内容,即可使用开关软件构件进行编程。软 件 构 件在不同应用系统中移植和复用时,仅需根据硬件构件接口修改软件构件头文件中的相关宏定义即可。任务2.1 学习开关硬件构件和软件构件的设计及使用方法2、开关软件构件及使用方法 sw.c 源文件是开关构件对外接口函数的具体实现。任务2.2 学习开关状态指示灯的应用层程序设计 在嵌入式软件最小系统框架下,设计07_Source(工程源程序构件

26、)的文件,以实现开关状态指示功能。1)工 程 总 头 文 件includes.h 利用项目1中的小灯软件构件和本项目中的开关软件构件,编程实现开关状态指示功能:开关SW1的状态由小灯LIGHT1指示。开关SW1闭合,小灯LIGHT1亮;SW1断开,小灯LIGHT1灭。任务2.2 学习开关状态指示灯的应用层程序设计2)主 程 序 源 文 件main.c 开关SW1闭合,小灯LIGHT1亮;SW1断开,小灯LIGHT1灭。【思考与实验】请读者通过修改主程序的代码,实现:多路开关状态指示功能,即4个开关SW1、SW2、SW3、SW4的状态分别由小灯LIGHT1、LIGHT2、LIGHT3、LIGHT

27、4指示。任务2.2 学习开关状态指示灯的应用层程序设计任务3.1 理解中断的基本概念及基本过程3.1.1 中断的基本概念1、中断的含义 中断,是指MCU在正常运行程序时,由于MCU内核异常(内核中断)或MCU各功能模块发出请求事件(非内核中断),使MCU停止正在运行的程序,而转去处理异常(使芯片复位或使MCU做出其他处理)或执行处理外部事件的程序(中断服务程序)。任务3.1 理解中断的基本概念及基本过程3.1.1 中断的基本概念2、KEA128的中断源、中断向量表中断向量号是每个中断源的固定编号。中断向量表是指按照中断源的中断向量号的固定顺序,用于存放中断服务程序入口地址(中断向量)的一段连续

28、存储区域,其本质是一个常量指针数组。IRQ中断号是每个中断源的编号,每一个编号代表一个中断源。在芯片头文件SKEAZ1284.h中,使用一个枚举类型实现了中断号的编排。任务3.1 理解中断的基本概念及基本过程3.1.1 中断的基本概念2、KEA128的中断源、中断向量表任务3.1 理解中断的基本概念及基本过程3.1.1 中断的基本概念2、KEA128的中断源、中断向量表任务3.1 理解中断的基本概念及基本过程3.1.1 中断的基本概念3、中断优先级、可屏蔽中断和不可屏蔽中断在进行MCU设计时,一般都定义了中断源的优先级。若有两个以上的中断同时发生,则优先级最高的中断源最先得到响应。可屏蔽中断:

29、可通过编程方式关闭的中断。不可屏蔽中断:不能通过编程方式关闭的中断。任务3.1 理解中断的基本概念及基本过程3.1.2 中断的基本过程1、中断请求当某一中断源需要CPU为其服务时,它会将对应中断源的中断标志位置1,以便向CPU发出中断请求信号。2、中断响应和中断处理在响应中断请求时,首先保护现场(将CPU内部寄存器的数据依次压入RAM堆栈中);然后从目前等待的中断源中取出优先级最高中断源的中断向量,执行相应的中断服务程序;最后恢复现场(从RAM堆栈依次弹出CPU内部寄存器的数据)、中断返回(返回到中断前的程序)。说明:上述过程是由系统自动完成的,用户只需专注于主程序和中断服务程序的设计。任务3

30、.1 理解中断的基本概念及基本过程3.1.3 CM0+的中断管理机制1、CM0+的中断结构及中断过程CM0+的中断结构由模块中断源、嵌套向量中断控制器(Nested Vectored Interrupt Controller,NVIC)和CM0+内核组成。中断过程分两步:首先,模块中断源向NVIC发出中断请求信号;然后,NVIC对发来的中断信号进行管理,判断该中断是否使能,若使能,则通过私有外设总线发送给CM0+内核,由内核进行中断处理。2、非内核中断使能初始化步骤设置模块中断使能位使能模块中断,使模块能够发出中断请求信号;将该模块在NVIC的中断使能寄存器(NVIC_ISER)中对应的使能位

31、置1,允许该模块的中断请求。任务3.2 利用FTM定时中断实现频闪灯3.2.1 FTM基本定时底层驱动构件设计及使用方法KEA128芯片的FTM(FlexTimer)是一个具有基本定时、脉宽调制(PWM)、输入捕捉和输出比较等多种功能的综合定时器。KEA128芯片中有3个FTM模块,分别是FTM0、FTM1和FTM2。在此只介绍FTM模块的基本定时功能,PWM功能和输入捕捉功能将分别在项目7和项目8中介绍。在本项目中,FTM定时器采用增1计数方式,计数器从初值开始增1计数,当计数器达到模数寄存器中的值时,定时器溢出标志位TOF将在下一个时钟到来时被硬件置位。若定时器溢出中断使能且NVIC允许F

32、TM模块中断请求,则TOF等于1时产生定时器溢出中断,使CPU转去执行FTM中断服务程序。FTM基本定时底层驱动构件由ftm_timer.h头文件和ftm_timer.c源文件组成,若要使用FTM基本定时底层驱动构件,只需将这两个文件添加到所建工程的04_Driver(MCU底层驱动构件)文件夹中即可实现对FTM定时器的操作。其中,ftm_timer.h头文件主要包括相关头文件的包含、相关的宏定义、对外接口函数的声明;而ftm_timer.c源文件是对外接口函数的具体实现,需要结合KEA128参考手册中的FTM模块信息进行分析与设计,其程序请参阅附录F.2。应用开发者只要熟悉ftm_timer

33、.h头文件的内容,即可使用FTM基本定时底层驱动构件进行编程。任务3.2 利用FTM定时中断实现频闪灯3.2.1 FTM基本定时底层驱动构件设计及使用方法初始化函数:void ftm_timer_init(uint_8 ftm_No,uint_32 t_us)FTM号:FTM_0、FTM_1、FTM_2定时时间,单位为usFTM模块的中断使能函数:void ftm_int_enable(uint_8 ftm_No)FTM模块的中断禁止函数:void ftm_int_disable(uint_8 ftm_No)获取FTM定时器溢出标志TOF函数:uint_8 ftm_tof_get(uint_8

34、 ftm_No)清除FTM定时器溢出标志TOF函数:void ftm_tof_clear(uint_8 ftm_No)定时时间t_us=FTM计数次数*FTM计数周期 =FTM计数次数/FTM计数频率 =FTM计数次数/(FTM时钟源频率/分频因子)=FTM计数次数*分频因子/FTM时钟源频率任务3.2 利用FTM定时中断实现频闪灯3.2.2 利用FTM定时中断实现频闪灯的应用层程序设计 在嵌入式软件最小系统框架下,设计07_Source(工程源程序构件)的文件,利用FTM0定时中断实现频闪灯的功能。1)工程总头文件includes.h任务3.2 利用FTM定时中断实现频闪灯3.2.2 利用F

35、TM定时中断实现频闪灯的应用层程序设计2)主程序源文件main.c任务3.2 利用FTM定时中断实现频闪灯3.2.2 利用FTM定时中断实现频闪灯的应用层程序设计3)中断服务程序源文件isr.c 使用03_MCUstartup_SKEAZ1284.S文件中弱定义的函数名【思考与实验】请读者通过修改main.c和isr.c的代码,分别完成:改变小灯闪烁的频率;控制其他小灯闪烁;实现流水灯的效果;使用FTM1或FTM2实现相同的效果。任务3.2 利用FTM定时中断实现频闪灯 ARM Cortex-M内核中都包含了一个简单的定时器SysTick,又称为“滴答”定时器。SysTick被捆绑在NVIC中

36、,有效位数是24位,采用减1计数的方式工作,当减1计数到0时,可产生SysTick异常(中断),中断向量号为15。任务3.3 利用内核定时器(SysTick)中断实现频闪灯SysTick定时器底层驱动构件由systick.h头文件和systick.c源文件组成,若要使用SysTick定时器底层驱动构件,只需将这两个文件添加到所建工程的04_Driver(MCU底层驱动构件)文件夹中即可实现对SysTick的操作。其中,systick.h头文件主要包括相关头文件的包含、对外接口函数的声明;而systick.c源文件是对外接口函数的具体实现,其程序请参阅附录F.3。应用开发者只要熟悉systick

37、.h头文件的内容,即可使用SysTick定时器底层驱动构件进行编程。3.3.1 SysTick定时器底层驱动构件头文件初始化函数:void systick_init(uint_32 core_clk_khz,uint_8 int_ms)内核时钟频率,单位为kHz,可使用06_Softcommon.h中的宏定义CORE_CLK_KHZ定时时间,单位为ms任务3.3 利用内核定时器(SysTick)中断实现频闪灯3.3.2 利用SysTick中断实现频闪灯的应用层程序设计 在嵌入式软件最小系统框架下,设计07_Source(工程源程序构件)的文件,利用SysTick中断实现频闪灯的功能。1)工程总

38、头文件includes.h任务3.3 利用内核定时器(SysTick)中断实现频闪灯3.3.2 利用SysTick中断实现频闪灯的应用层程序设计2)主程序源文件main.c任务3.3 利用内核定时器(SysTick)中断实现频闪灯3.3.2 利用SysTick中断实现频闪灯的应用层程序设计3)中断服务程序源文件isr.c【思考与实验】请读者通过修改main.c和isr.c的代码,分别完成:改变小灯闪烁的频率;控制其他小灯闪烁;实现流水灯的效果。任务3.3 利用内核定时器(SysTick)中断实现频闪灯项目4 利用数码管显示数字【项目导读】数码管是嵌入式智能产品中常用的输出设备。本项目的学习目标

39、:能用MCU控制数码管显示数据。在本项目中,首先学习数码管的通用知识、数码管的硬件构件设计方法;然后学习数码管软件构件设计及使用方法;最后学习数码管显示的应用层程序设计方法。任务4.1 学习数码管通用知识及数码管硬件构件设计1、8段数码管的结构任务4.1 学习数码管通用知识及数码管硬件构件设计2、一位独立数码管的硬件构件设计MCU 需 要 9个GPIO引脚控制1位数码管,因此,若MCU控制4位独立数码 管,则 需 要36个GPIO引脚,这 将 导 致 硬 件电路连接复杂、MCU的GPIO引脚资源紧张。任务4.1 学习数码管通用知识及数码管硬件构件设计3、四位一体组合数码管硬件构件设计MCU控制

40、四位一体组合数码管时,只需12个GPIO引脚,其中8个GPIO引脚控制数码管的8根数据线,4个GPIO引脚控制数码管的4根位选线。任务4.1 学习数码管通用知识及数码管硬件构件设计4、数码管的笔形码共阳极数码管的笔形码(不带小数点)若需要编制带小数点的笔形码,只需将此表中的h段改为“0”即可。若使共阳极数码管的某段点亮,则该段对应的数据线应为低电平(逻辑0)。0 0 0 0 0 01 10 xC00 01 1 1 1 1 10 xF91 1 1 0 0 0 0 0 0 xA41 1 1 0 0 0 0 0 0 xB01 1 1 1 0 0 0 0 0 x991 1 1 0 0 0 0 0 0

41、x921 1 0 0 0 0 0 0 0 x821 1 1 1 1 0 0 0 0 xF81 0 0 0 0 0 0 0 0 x801 1 0 0 0 0 0 0 0 x901 1 1 1 1 1 1 1 0 xFF 其中,led.h 头文件主要包括相关头文件的包含、数码管硬件构件相关的宏定义、数码管构件对外接口函数的声明。用户只要熟悉led.h头文件的内容,即可使用数码管软件构件进行编程。任务4.2 学习数码管软件构件设计及使用方法 数码管软件构件由 led.h 头文件和led.c 源文件组成,若要使用数码管软件构件,只需将这两个文件添加到所建工程的05_App(应用外设构件)文件夹中即可实

42、现对数码管的操作。软件构件在不同应用系统中移植和复用时,仅需根据硬件构件接口修改软件构件头文件中的相关宏定义即可。任务4.2 学习数码管软件构件设计及使用方法 led.c 源文件是数码管构件对外接口函数的具体实现。任务4.3 数码管显示的应用层程序设计 在嵌入式软件最小系统框架下,设计07_Source(工程源程序构件)的文件,以实现数码管显示功能。1)工程总头文 件includes.h任务4.3 数码管显示的应用层程序设计2)主程序源文件main.c(使某位数码管显示数据)任务4.3 数码管显示的应用层程序设计(使多位数码管轮流显示数据)2)主程序源文件main.c 思考与实验:将Delay

43、_ms函数中的参数值500依次改为50、10、5,即逐渐缩短间隔的时间,观察实验现象。任务4.3 数码管显示的应用层程序设计(使多位数码管“同时”显示数据)2)主程序源文件main.c动态显示思考与实验:将for循环体的顺序结构改为循环结构拓展与实验:实现在4位数码管先后显示两组数据:年份“2021”和月日“0318”。例如,在1s内显示数据“2021”,在下1s内显示数据“0318”。任务4.3 数码管显示的应用层程序设计 前面的主程序中通过调用软件延时(5ms)实现了数码管动态显示效果。现改用定时中断实现5ms延时。若使用SysTick中断实现延时,则需要将SysTick定时器底层驱动构件

44、的两个文件systick.h和systick.c添加到所建工程中的04_Driver(MCU底层驱动构件)文件夹中。1)工程总头文 件includes.h利用定时中断实现数码管动态显示效果任务4.3 数码管显示的应用层程序设计利用定时中断实现数码管动态显示效果2)主程序源文件main.c任务4.3 数码管显示的应用层程序设计利用定时中断实现数码管动态显示效果3)中断服务程序源文件isr.c任务4.3 数码管显示的应用层程序设计利用定时中断实现数码管动态显示效果【思考与实验】请读者通过修改main.c和isr.c的代码,分别实现:(1)实现在4位数码管先后显示两组数据:年份“2021”和月日“0

45、318”。例如,在1s内显示数据“2021”,在下1s内显示数据“0318”。(2)4位数码管显示秒计数值(可使用数码管软件构件中的led_buff_update函数)。(3)4位数码管显示分和秒的计数值,其中分和秒之间显示小数点。项目5 键盘的检测与控制【项目导读】键盘(keyboard)是嵌入式智能产品中常用的输入设备。本项目的学习目标是实现MCU对键盘的检测和识别,并根据识别结果完成相应的控制功能。在本项目中,首先学习键盘的通用知识、键盘硬件构件设计方法;然后学习键盘软件构件设计及使用方法;最后学习键盘检测与控制的应用层程序设计方法。任务5.1 学习键盘通用知识及键盘硬件构件设计1、键盘

46、操作、抖动问题5.1.1 键盘通用知识4引脚直插式键盘按钮实物图及内部结构图2引脚贴片式键盘按钮实物图VCC任务5.1 学习键盘通用知识及键盘硬件构件设计1、键盘操作、抖动问题5.1.1 键盘通用知识按下抖动释放抖动稳定闭合510ms510ms理想实际 操作者几乎感觉不到抖动,但MCU以为操作者在此期间连续操作若干次键,从而引起按键命令的错误执行或重复执行,因此需要对按键抖动进行处理。(1)滤波去抖:实现键操作时电压的变化为理想的矩形波。(2)延时躲抖:MCU检测到有键被按下时,先软件延时10ms以避开按键抖动 (惹不起但可以躲得起),然后再判断该键是否被按下。例如:电容滤波去抖。0.1uF任

47、务5.1 学习键盘通用知识及键盘硬件构件设计2、键盘连击问题5.1.1 键盘通用知识 当按下某个键时,如果操作者还没有释放该键,MCU则以为操作者在连续操作该键(连击),对应的按键功能程序将会反复被执行。大多数应用场合需要防止连击,即一次按键只让MCU执行一次功能程序,该键不释放就不执行第二次。任务5.1 学习键盘通用知识及键盘硬件构件设计5.1.2 独立式键盘硬件构件设计 嵌入式系统中的键盘有独立式和矩阵式两种接口方式。各个键相互独立,按照一对一的方式接到MCU的引脚上,另一端接地。采用查询扫描时,MCU可 通 过 直 接 读 取KEY引脚的电平状态来判断键是否被按下。采用外部中断扫描时,一

48、般利用按键的下降沿触发MCU中断。独立式键盘查键方便,但占用I/O资源较多,因此一般适用于键较少的场合。任务5.1 学习键盘通用知识及键盘硬件构件设计5.1.3 矩阵式键盘硬件构件设计 44=16个键,只占用MCU的8个I/O引脚,矩阵式键盘应用于键较多的场合。结构原理:用一部分I/O作为行线,另一部分I/O作为列线,在每个行线和列线的交叉点放置一个键,当某个键被按下时,其对应的行线和列线短路,MCU通过检测是否有行线和列线短路来确定是否有键被按下,并确定被按下键的位置。任务5.2 学习键盘软件构件设计及使用方法 其中,.h 头文件主要包括相关头文件的包含、键盘硬件构件相关的宏定义、键盘构件对

49、外接口函数的声明。用户只要熟悉.h头文件的内容,即可使用键盘软件构件进行编程。键盘软件构件由对应的.h 头文件和.c 源文件组成,若要使用键盘软件构件,只需将这两个文件添加到所建工程的05_App(应用外设构件)文件夹中即可实现对键盘的操作。5.2.1 独立式键盘软件构件设计及使用方法1.独立式键盘软件构件头文件indep_kb.h 软件构件在不同应用系统中移植和复用时,仅需根据硬件构件接口修改软件构件头文件中的相关宏定义即可。任务5.2 学习键盘软件构件设计及使用方法5.2.1 独立式键盘软件构件设计及使用方法2.独立式键盘软件构件源文件indep_kb.c任务5.2 学习键盘软件构件设计及

50、使用方法5.2.2 矩阵式键盘软件构件设计及使用方法 MCU查询识别矩阵式键盘中被按下键的位置,可用反转扫描法:(1)行线作为输出线,列线作为输入线。使所有行线R1R4输出0,读取列线C1C4的值,值为0的列为被按下键所在的列。(2)列线作为输出线,行线作为输入线。使所有列线C1C4输出0,读取行线R1R4的值,值为0的行为被按下键所在的行。例如,假定行线R2和列线C3交叉点上的6号键被按下,先使所有行线R1R4输出0,读取列线C1C4的值,结果为C3=0,对应第3列;然后使所有列线C1C4输出0,读取行线R1R4的值,结果为R2=0,对应第2行。因此,6号键在第2行、第3列上。任务5.2 学

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(配套课件-基于构件化的ARM嵌入式系统设计(共2册).ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|