博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
定时中断
阅读量:6321 次
发布时间:2019-06-22

本文共 931 字,大约阅读时间需要 3 分钟。

呜呜呜,又听得稀里糊涂的,只能狠下功夫来复习啦。

首先自己想一下,今天学了个啥吧!

首先,老师想给演示一个根据定时器的计数在数码管上实时显示时间的程序,里面有很多编程的小技巧,很是值得学习!后来,通过这个程序中出现的一个小问题:最后一个数码管的显示总是比前面的亮一些,引出了我们今天要学习的技术——定时中断,用这个定时中断可以控制代码执行的时间间隔{这是如何实现的} 。对原代码进行改进后,将外部中断和定时中断进行了计较,并引入了中断优先级的概念。最后,也就讲了如何设置中断和中断优先级。

选学的内容是特权级和普通级的关系。

 

难点的话,也就是对代码还是理解地不够透彻,很多不能结合理论知识来解释地通。同时,对寄存器操作的具体过程,缺乏明确的理解。希望看完PPT之后能够理解吧!


 

一、大概看完代码,依据自己的理解整理一下思路:

  • 首先,这里是用了分时复用的方法,并没有32根线控制4个数码管,而是只用了8根线分别控制4个数码管,另外用4根线分别控制4个数码管的阴极。

6个数码管都是靠PE口的0-7位控制的,所以显示的内容肯定是一样的。这是,要想每个数目管上显示不一样的数字,就只能分时复用,逐个点亮,利用视觉暂留来实现同时显示4个不同的数码管。

二、关于定时中断的设置

1、中断执行的函数的名称应该是固定的,但具体执行什么操作要自己设定:

2、这个定时中断何时触发?触发的条件是什么?这些都需要在初始化的时候进行设置:

这里使用的是系统时钟定时器,24位的倒计数器。因为时钟周期是72MHz,所以LOAD进去72000-1,每次由0跳72000-1,都会触发中断,也就是设定了每1ms就触发一次定时中断。

      

最后要中断响应之后要立即清除。

注:当使用的不是系统时钟定时器,而是TIM时,由于只有16位,能表示的最大范围是65535,不能到72000-1,所以要对72MHz的时钟进行预分频,二分频则为36MHz,这样LOAD一个36000-1,每次有0跳36000-1时,都触发一次中断,时间间隔同样为1ms。

 

三、NVIC嵌套向量中断控制器NVIC    

 

 

转载于:https://www.cnblogs.com/dadidelearning/p/9951468.html

你可能感兴趣的文章
iOS开发-音乐播放
查看>>
用函数SendARP()获取局域网计算机的MAC地址
查看>>
locate 命令(转)
查看>>
JUnit入门
查看>>
Linux内存管理大图
查看>>
sql中exists,not exists的用法
查看>>
WebGIS中兴趣点简单查询、基于Lucene分词查询的设计和实现
查看>>
实现android activity之间的跳转
查看>>
XMPP协议实现原理介绍
查看>>
HttpWebRequest类
查看>>
Eureka 的 Application Client client的执行演示样例
查看>>
从决策树学习谈到贝叶斯分类算法、EM、HMM
查看>>
Ubuntu 14.04 字体设置
查看>>
【转载】VS配置路径和宏
查看>>
Appium移动自动化测试(四)--one demo
查看>>
jQuery来源学习笔记:扩展的实用功能
查看>>
STM32 CRC-32 Calculator Unit
查看>>
BZOJ2790 : [Poi2012]Distance
查看>>
jenkins 安装 SVN Publisher 后向 svn 提交代码报错: E170001: Authentication required for...
查看>>
伪异步IO理解
查看>>