8- 利用定时中断实现频闪灯_第1页
8- 利用定时中断实现频闪灯_第2页
8- 利用定时中断实现频闪灯_第3页
8- 利用定时中断实现频闪灯_第4页
8- 利用定时中断实现频闪灯_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

本书结合汽车技术发展和汽车类专业特点,按照“由简到难、循序渐进”的原则,共设置了“绪论”“汽车程序设计基础”“汽车嵌入式技术基础”三部分内容。通过本书的学习,可以从整体上加深理解汽车电子控制系统的组成和工作原理,对后续的汽车电子控制技术类课程和智能网联汽车技术类课程学习奠定良好的汽车计算机基础。

本书特色:任务驱动,理实一体,学以致用。内容组织由简到难、循序渐进,灵活采用对比法、类比法、启发法、实验法等多种教学方法,有效降低教学难度和学习难度。

本书可作为高职院校汽车类专业的汽车计算机基础教材,也可供从事相关技术的工程人员参考。汽车嵌入式技术基础

第7单元:利用GPIO实现闪灯和开关状态检测与控制功能第8单元:利用定时中断实现频闪灯第9单元:利用PWM实现灯光亮度控制第10单元:利用UART实现上位机和下位机通信第11单元:利用ADC设计简易数字电压表第12单元:利用CAN实现多机通信第8单元利用定时中断实现频闪灯

在第7单元中,利用软件延时Delay_ms函数(循环计数)实现闪灯的效果。

该方式有两大缺点:

①软件延时一般用于粗略延时的场合;

②执行延时子程序期间,CPU一直被占用而不能做其他事情,从而降低了CPU的利用率。【单元导读】第8单元利用定时中断实现频闪灯

为此,可使用MCU内部可编程的定时/计数器实现延时。用户根据需要设置定时时间,并启动定时/计数器计数,当定时时间到时,它将自动产生一个定时输出信号(通常是中断请求信号)告知CPU,使CPU转去执行定时中断服务程序,从而实现某些定时功能(如改变小灯的状态)。定时/计数器在计数期间,与CPU并行工作,不占用CPU的工作时间。该方式通过简单的程序设置即可实现准确的定时。单元学习目标:(1)理解定时器的定时原理。(2)理解中断的通用知识。(3)掌握MCU的定时器基本定时底层驱动构件使用方法。(4)能够利用定时中断功能实现频闪灯或流水灯的效果。任务8.1理解定时器的定时原理定时器本质上是一个对计数时钟进行周期统计的计数器。

上图中,计数器采用增1计数。计数器从初值0开始计数,每经过一个计数时钟周期,计数器的值就加1,若计数器的值达到终值4,则在下一个时钟到来时,计数器溢出,计数器的值恢复至初值0,然后进行下一轮的加1计数,如此重复。

定时器每一轮的定时时间t=

计数次数×计数时钟周期

上图中,一轮的计数次数是5,若计数时钟频率为1kHz(计数时钟周期为1ms),则一轮的定时时间为5ms。任务8.1理解定时器的定时原理对于n位(二进制)定时/计数器,计数器的终值最大值为2n-1,结合上图,定时/计数器一轮计数次数最大值为2n。n位定时/计数器一轮的最大定时时间t:

t=2n×计数时钟周期

=2n/计数时钟频率

f若

f=

时钟源频率/分频系数,则

t=2n/(时钟源频率/分频系数)

【同步练习8-1】知识运用。

当计数器溢出时,定时器可向CPU发出中断请求信号,使CPU暂停当前的工作,而转去执行中断服务程序,在中断服务程序中实现具体的定时功能(如改变小灯的状态等)。任务8.2理解中断的通用知识1、中断的含义

中断是计算机的一项重要技术,利用中断可以提高CPU的执行效率。所谓中断,是指MCU在正常运行程序时,由于MCU内核异常

MCU各功能模块发出请求事件,使MCU停止正在运行的程序,而转去处理异常

执行处理内核外部事件的程序(中断服务程序)。任务8.2理解中断的通用知识2、中断源和中断优先级

引起MCU中断的事件称为中断源。MCU的中断源分为两类:内核中断源和非内核中断源。

当MCU内核异常时,内核中断会使芯片复位或使MCU做出其他处理。

非内核中断是由MCU各功能模块引起的中断,MCU执行完中断服务程序后,又回到刚才正在执行的主程序,从停止的位置(断点)继续执行后续的指令。

当某一中断源需要CPU为其服务时,它会将对应的中断标志位置1,以便向CPU发出中断请求信号。如定时器溢出时,溢出标志位被置1,向CPU发出溢出中断请求信号。任务8.2理解中断的通用知识2、中断源和中断优先级

在进行MCU设计时,一般都定义了中断源的优先级。在程序执行过程中,若有两个以上的中断同时发生,则优先级高的中断源最先得到响应。

对于KEA128而言,定时器中断、UART接收中断和CAN接收中断,都是非内核中断源。KEA128中有3个定时器(FTM0、FTM1、FTM2)、3个UART(UART0、UART1、UART2)、1个CAN(MSCAN),它们的中断优先级由高到低依次是:UART0、UART1、UART2、FTM0、FTM1、FTM2、MSCAN。任务8.2理解中断的通用知识4、使用中断的嵌入式应用层程序设计方法

(1)在main.c文件的主程序中,进行中断模块初始化,并使能模块中断(使CPU能够响应模块发出的中断请求,转去执行中断服务程序)。

(2)在isr.c文件中,设计中断服务程序,在中断服务程序中实现某些中断功能(如改变小灯状态等)。3、使用中断的嵌入式应用层程序构成

使用中断的嵌入式应用层程序,共有两条独立的程序运行线:

(1)main.c文件中的主程序运行线;

(2)isr.c文件中的中断服务程序运行线。任务8.3掌握MCU的FTM基本定时底层驱动构件使用方法

KEA128的FTM(FlexTimer)是一个具有基本定时、脉宽调制(PWM)、输入捕捉和输出比较等多种功能的综合定时器。KEA128中的3个定时器FTM0、FTM1和FTM2,均是16位定时器,其时钟源频率为24MHz(由内核时钟频率48MHz经过2分频得到),在此只利用FTM的基本定时功能。

FTM基本定时底层驱动构件由ftm_timer.h头文件和ftm_timer.c源文件组成,若要使用FTM基本定时底层驱动构件,只需将这两个文件添加到所建工程的04_Driver(MCU底层驱动构件)文件夹中。见工程文件:..EmbededSource\03-Software\KEA128\KEA128.uvprojx

用户只要熟悉ftm_timer.h头文件的内容,即可使用FTM基本定时底层驱动构件进行编程,实现定时器的定时功能。

其中,ftm_timer.h头文件主要包括相关头文件的包含、相关的宏定义、对外接口函数的声明;而ftm_timer.c源文件是对外接口函数的具体实现,初学者不必深究。

【同步练习8-2】学以致用。

任务8.4利用FTM定时中断实现频闪灯的应用层程序设计

在嵌入式软件最小系统框架下,设计07_Source(应用层软件构件)文件夹中的文件,以实现小灯闪烁的效果。1)工程总头文件includes.h:

包含04、05、06文件夹中的头文件2)主程序源文件main.c:

定义全局变量;初始化;使能定时器中断;

在主循环中,根据全局变量的值,改变小灯的状态在工程文件中分析代码并编程:..EmbeddedSource\03-Software\KEA128\KEA128.uvprojx3)中断服务程序源文件isr.c:声明全局变量;实现定时功能(更

温馨提示

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

评论

0/150

提交评论