当前课程知识点:ARM微控制器与嵌入式系统 >  第五章 ARM微控制器的各种外设 >  E3 实验三 定时器中断编程实操 >  E3 实验三 定时器中断编程实操

返回《ARM微控制器与嵌入式系统》慕课在线视频课程列表

E3 实验三 定时器中断编程实操在线视频

E3 实验三 定时器中断编程实操

下一节:5.5.1 ARM微控制器外设:PWM的原理

返回《ARM微控制器与嵌入式系统》慕课在线视频列表

E3 实验三 定时器中断编程实操课程教案、知识点、字幕

各位同学大家好

我是清华大学工程物理系的曾鸣老师

欢迎大家回到我们

ARM微控制器与嵌入式系统的MOOC课堂

进行每周一次的嵌入式系统之旅

那么在这个单元里呢

我们紧接着刚刚学习的关于时钟中断的知识

进行我们第三次的实验

我们在前面若干次实验里呢

熟悉了我们嵌入式系统

进行了串行的通讯

进行了IO的点灯

那么在时钟中断这个实验内容里头

我们将进行一些既简单

又不那么简单的实验任务

首先回顾一下我们实验所涉及到的知识

从我们MOOC课程的学习结构来讲

我们在第三章 第二节

大家回忆一下学习过关于中断的

若干个基本概念和知识

那么在刚刚完成的

第五章第四节这个单元里头呢

我们学习了对于IRQ的这个时钟中断

这一类中断的一些基本知识

那么这些知识如果大家按照曾老师的要求

去好好的学习阅读芯片手册的话

关于寄存器的地址定义

大家可以在KL25的芯片手册的第四章找到

而关于Sys Tick这样一个系统时钟这样一个外设

它是由ARM公司所定义的

所有ARM公司通用的内核外设

所以它的内容呢

应该在ARM公司

ARMCortexM0+的通用芯片手册的

第四章第四节System timer

也就是Sys Tick这个单元里头

可以找到它的详细功能定义和说明

所以大家应该把芯片手册和老师讲的内容

对应起来看和学习

好 我们看一看我们的实验内容

这个实验我们把第一个实验任务

和第二个实验任务直接就一起给出来了

因为在我们学习的课程内容里

我已经讲的非常的详细

第一个任务呢

就是大家学习使用Sys Tick这样一个系统时钟

来改一改我们以前最最简单一个闪灯的程序

还是每秒钟让LED闪烁一次

但是把它改成用Sys Tick的时钟中断来驱动

那么与之相关的第二个任务呢

其实就是把我们原来通过一个按键

来控制灯的闪烁模式切换这个任务变一变

希望我们能够通过一个按键

比如我们面板上的下这个按键

来控制我们的灯的闪烁频率发生变化

按一下 按一赫兹来闪烁

一秒钟一次

再按一下 按两赫兹来闪烁

一秒钟两次 这样周而复始

那么这两个任务

为什么我直接一次性给出来呢

因为我们实验在不断进步

大家编程能力应该越来越强

大家回忆一下我们在课上给大家讲过的

编程的思想和这个主程序的结构

这两个任务其实非常容易的

应该能够在那个框架上修改

自己就能写出来

我带着大家简单的看一看

我们有了一个主程序

一个main函数

当我们用中断的方式来写这个程序的时候

大家牢牢记住

中断是一种什么样的工作模式

是设置好了中断发生的条件

当这个条件无论是定时还是通讯

还是按键满足的时候

从硬件通知CPU自动去调用对应的函数

加以执行

所以我们的main函数就像

现在大家所看到的这样

变得非常的简洁

除了一些最基本的初始化

加的这些红色的代码呢

就是把我们要用到的时钟中断

包括任务二要用到的IO的按键中断

给初始化好

main函数里头的最后一个for循环

基本上是空的

我在这里说的是

做一些比较慢的不需要时间严格的任务

日后大家可以在这里添加

但是在目前我们完成了初始化

和中断的初始化

主函数

特别是主函数的循环

它是空的

这是一个重要的编程思想

大家应该要回忆起来

那么有了这样一个main函数以后

我们是不是就把我们任务一和任务二的

要做的事情适当的分配到我们的中断里头

用中断来实现

这就是这一次实验的精髓

那对于任务一点灯

我们是不是就应该到定时器的定时中断的

那个时间间隔发生的那个

中断函数里头去定时

去做点灯这件事

而对于按键改变点灯的频率

我们应该在对应的按键中断里去做这件事

所以这两个函数的框架

就跟我们在讲课的时候给出来大家一样的

分别在Sys Tick的这个Handler和这个IRQHandler

这两个中断处理函数里头

大家去填写自己应该编写的代码

来把它加以完成

当我们的实验进行到实验3的时候

曾老师不会再给大家一个详细的

让大家可以直接照着敲的代码

大家应该锻炼自己把它编写出来的能力

那么大家可以在这里停一下

花一些时间

自己去把这个任务完成

然后再看看我们这个实验

我们这次实验非常的简单

一共就三个任务

最后一个任务是什么呢

它有点小小的难度

最后一个任务就是希望大家学会灵活的

使用Sys Tick这个时钟

在你的微控制器内部

维持一个实时钟

什么叫实时钟

就是最小限度保持 时 分 秒

就是几点几分几秒这样的时间值

你要维持这样一个时间值自己不停的运行

不停的刷新

并且呢

结合我们上上次实验做的串行通讯

然后把这个时间值通过一个UART的

异步串行通讯程序不停的从串口发送出去

换言之让你的计算机每秒一次收到一个字符串

带换行的

显示现在是几点几分几秒

于是我们在超级终端里

去看串口收到的数据的时候

曾老师希望这个程序写完以后

能收到的效果是

不停的收到

现在是比如说10点5分35秒

10点5分36秒

但是大家做这个程序一开始

你可能无法对时

你至少实现从00时00分00秒

开始计时不断的累加

那么这里给大家一些提示

就是你的Sys Tick这个系统时钟

要保证你这样一个内部数据结构

每秒钟逐一

逐渐的加一

然后这个逐渐的加一

你需要在一个变量上进行存储

而这个变量又需要在你的中断里不断的更新

又需要在你的主程序里

不断的通过串口来发送

所以大家要想清楚两件事

一个是你可能要设置一个全局变量

来分别保存你的时分秒这些值

另外呢 就是你除了在中断里

定时的去更新这些值

你可能还要学会在主程序

刚才那个空着的for循环里

去写你的串口通讯函数

把这些值从数字转换成ASCII码

再把它发送出去

大家注意我给的这两个提示

一个是全局变量

一个是在中断里改变全局变量的值

在主程序里用串口的通讯函数

把这个数据变成ASCII码

以每秒钟一次的间隔发送出去

对不对

那当然这个程序的前后台

他们之间如何调度

你这个串口发送是放在主程序

还是放在中断

其实每个同学还可以灵活

然后呢

然后曾老师没有然后了

在这个任务里

我不会再给大家一个完整的程序

甚至连程序框架都不给

这是给大家的

第一个challenge 第一个挑战

我们逐渐从第三次实验大家要过渡到

有了一个任务凝练思想

自己用代码把它写出来

当然如果大家有困难的话

欢迎大家看我们的微信群

和我们MOOC的这个讨论区里来进行讨论

大家一起来分析问题来进行学习

这就是这次实验的内容

大家好好试一试吧

ARM微控制器与嵌入式系统课程列表:

第一章 概览

-1.1 课程概览

--1.1 课程概览

-1.2 如何学好嵌入式系统

--1.2 如何学好嵌入式系统

第二章 绪论

-2.1 计算机的基本概念、发展历史

--2.1 计算机的基本概念、发展历史

-2.2 从晶体管到CPU

--2.2 从晶体管到CPU

-2.3 概念CPU、微控制器MCU和嵌入式系统

--2.3 概念CPU、微控制器MCU和嵌入式系统

-2.4 八卦计算机史

--2.4 八卦计算机史与创新

-2.5 不同领域、不同系列的嵌入式系统

--2.5 不同领域、不同系列的嵌入式系统

-2.6 ARM历史与MKL25Z128 MCU

--2.6 ARM历史与MKL25Z128 MCU

--2.6 ARM历史与MKL25Z128 MCU【习题】

--2.6 ARM历史与MKL25Z128 MCU【讨论】

第三章 MCU基础

-3.1 CPU的基本结构和运行机制

--3.1 CPU的基本结构和运行机制

-3.2.1 堆栈的概念

--3.2.1 堆栈的概念

--3.2.1 堆栈的概念【习题】

-3.2.2 堆栈的概念-头脑体操

--3.2.2 头脑体操

-3.3.1 ARM的体系结构

--3.3.1 ARM的体系结构

--3.3.1 ARM的体系结构【习题】

-3.3.2 ARM的体系结构-头脑体操

--3.3.2 ARM的体系结构-头脑体操

-3.4.1 中断的概念和机制

--3.4.1 中断的概念和机制

-3.4.2 中断子程的概念和编程

--3.4.2 中断子程的概念和编程

-3.5 复位、时钟、存储器和总线

--3.5 复位、时钟、存储器和总线

--3.5 复位、时钟、存储器和总线【习题】

-3.6 小结:MCU的总体结构和程序运行机制

--3.6 小结:MCU的总体结构和程序运行机制

--3.6 小结:MCU的总体结构和程序运行机制【习题】

第四章 ARM微控制器的开发

-4.1 第一种外设:IO

--4.1 第一种外设:IO

-4.2 IO外设的编程实操-点亮LED

--4.2 IO外设的编程实操-点亮LED

-4.3 IO外设的进阶知识

--4.3 IO外设的进阶知识

-4.4 嵌入式开发的基本概念与工具链

--4.4 嵌入式开发的基本概念与工具链

-4.5 嵌入式开发的进阶知识

--4.5 嵌入式开发的进阶知识

-4.6 嵌入式开发中的C语言(上)

--4.6 嵌入式开发中的C语言(上)

--4.6 嵌入式开发中的C语言(上)【习题】

-4.7 嵌入式开发中的C语言(下)

--4.7 嵌入式开发中的C语言(下)

--4.7 嵌入式开发中的C语言(下)【习题】

-E0.1 实验零 开发板的初步认识与工具链的安装

--E0.1 实验零 开发板的初步认识与工具链的安装

-E0.2 实验零 体验一个例程的编译与下载

--E0.2 实验零 体验一个例程的编译与下载

-E0.3 实验零 编写第一个程序:点亮核心板LED

--E0.3 实验零 编写第一个程序:点亮核心板LED

-E1 实验一 点灯秘籍

--E1 实验一 点灯秘籍

第五章 ARM微控制器的各种外设

-5.1 ARM微控制器外设学习概述

--5.1 ARM微控制器外设学习概述

-5.2.1 ARM微控制器外设:通讯

--5.2.1 ARM微控制器外设:通讯

-5.2.2 ARM微控制器外设:异步串行通讯UART的原理(上)

--5.2.2 ARM微控制器外设:异步串行通讯UART的原理(上)

--5.2.2 ARM微控制器外设:异步串行通讯UART的原理(上)【习题】

-5.2.3 ARM微控制器外设:异步串行通讯UART的原理(下)

--5.2.3 ARM微控制器的外设:异步串行通讯UART的原理(下)

--5.2.3 ARM微控制器外设:异步串行通讯UART的原理(下)【习题】

-5.2.4 ARM微控制器外设:RS-232串口与USB虚拟串口

--5.2.4 ARM微控制器外设:RS-232串口与USB虚拟串口

-5.2.5 ARM微控制器外设:UART的寄存器编程(上)

--5.2.5 ARM微控制器外设:UART的寄存器编程(上)

-5.2.6 ARM微控制器外设:UART的寄存器编程(下)

--5.2.6 ARM微控制器外设:UART的寄存器编程(下)

--5.2.6 ARM微控制器外设:UART的寄存器编程(下)【习题】

-E2 实验二 UART编程实操

--E2 实验二 UART编程实操

-5.3.1 ARM微控制器外设:IO的中断编程(上)

--5.3.1 ARM微控制器外设:IO的中断编程(上)

-5.3.2 ARM微控制器外设:IO的中断编程(下)

--5.3.2 ARM微控制器外设:IO的中断编程(下)

-5.4.1 ARM微控制器外设:定时器的原理

--5.4.1 ARM微控制器外设:定时器的原理

-5.4.2 ARM微控制器外设:定时器的编程

--5.4.2 ARM微控制器外设:定时器的编程

--5.4.2 ARM微控制器外设:定时器的编程【习题】

-E3 实验三 定时器中断编程实操

--E3 实验三 定时器中断编程实操

-5.5.1 ARM微控制器外设:PWM的原理

--5.5.1 ARM微控制器外设:PWM的原理

-5.5.2 ARM微控制器外设:PWM寄存器与编程

--5.5.2 ARM微控制器外设:PWM寄存器与编程

-5.5.3 ARM微控制器外设:PWM编程实例—电子音乐

--5.5.3 ARM微控制器外设:PWM编程实例—电子音乐

-E4 实验四 数码管显示编程实操

--E4 实验四 数码管显示编程实操

-5.6.1 ARM微控制器外设:SPI通讯简介

-- 5.6.1 ARM微控制器外设:SPI通讯简介

--5.6.1 ARM微控制器外设:SPI通讯简介【习题】

-5.6.2 ARM微控制器外设:SPI寄存器与编程

-- 5.6.2 ARM微控制器外设:SPI寄存器与编程

-5.6.3 ARM微控制器外设:SPI编程实例—OLED显示屏驱动

--5.6.3 ARM微控制器外设:SPI编程实例—OLED显示屏驱动

-5.7.1 ARM微控制器外设:I2C通讯简介

--5.7.1 ARM微控制器外设:I2C通讯简介

-5.7.2 ARM微控制器外设:I2C的通讯协议

--5.7.2 ARM微控制器外设:I2C的通讯协议

-5.7.3 ARM微控制器外设:I2C寄存器与编程

--5.7.3 ARM微控制器外设:I2C寄存器与编程

--5.7.3 ARM微控制器外设:I2C寄存器与编程【习题】

-5.7.4 ARM微控制器外设:I2C编程实例—加速度传感器

--5.7.4 ARM微控制器外设:I2C编程实例—加速度传感器

-5.8.1 ARM微控制器外设:ADC简介

--5.8.1 ARM微控制器外设:ADC简介

-5.8.2 ARM微控制器外设:ADC基础

--5.8.2 ARM微控制器外设:ADC基础

-5.8.3 ARM微控制器外设:ADC寄存器与编程

--5.8.3 ARM微控制器外设:ADC寄存器与编程

-E5 实验五 ADC编程实操

--E5 实验五 ADC编程实操

-E6 挑战实验

--E6 挑战实验

第六章 嵌入式系统设计

-6.1 嵌入式系统的接口与设计

--6.1 嵌入式系统的接口与设计

-6.2 嵌入式系统的实例

--6.2 嵌入式系统的实例

E3 实验三 定时器中断编程实操笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。