财讯中国

单片机与程序设计(上)

来源:网络 2022-01-27 15:00:00

单片机中,不仅频繁地使用“○月○日○点○分”这种时刻显示,显示过去的时间和一定的周期这种形式也被频繁地使用。例如,“该程序从运行开始过去了多少时间?”、“每秒输送128次信号”等等。另外,还经常被用于“等待指定的时间”、“经过指定的时间后将转移到下一个处理”这样的情况。对这些与时间和时刻有关进行处理的外设功能就是定时器(图1)。

我们也可以不使用外设功能(硬件)的定时器,而是通过软件来计算时间。下面通过图2来说明使用软件来定时的示例,图中假设循环(重复)部分的处理需要费时1μs(微秒:100万分之1秒)。由此可以计算出该循环部分重复1000次需要花费1ms(毫秒:千分之1秒),重复100万次则需费时1秒。即:通过“等待经过循环处理所指定的时间”来计算时间。但是,CPU将会集中进行时间计算的处理而无法进行其他处理。而且,只能计算一个周期的时间。而现实当中,单片机需要对应0.1秒和1/1024秒等各种周期的时间。

另外,CPU的计时器频率(驱动速度)也将对软件产生影响。如果将100MHz驱动的CPU改为50MHz,那么循环1次所需的时间将变为原来的两倍。因此,需要对计算时间的软件进行修正。如上所述,由于在管理上既花时间又容易出错,所以要极力避免通过软件来计算时间。

稍微介绍一下中断的内容……

下面,我们简单介绍一下和定时器不可分割的技术——“中断功能”。单片机中的“中断功能”是指某个程序在执行过程中,因某种原因而发出“开始进行其他处理”的请求。由于可以使用中断功能,所以可使CPU不集中进行一个处理。

让我们想象一下日常生活中用到“中断功能”的情景,当我们把热水倒入方便面盒中后,如果我们在3分钟内一直盯着时钟看,那么这段时间内我们就不能做其它事情。但如果用厨房定时器设定3分钟的时间,在厨房定时器的警报响起之前我们便可以去做其它事情。在这个例子中,“一直盯着时钟看”就相当于前一节中所介绍的“等待经过循环处理所指定的时间”,所以在处理结束之前不能去做其它事情。同时,厨房定时器的警报就相当于中断功能。在中断发生前还可以去做其它事情。

单片机的外设功能中有各种各样的定时器,这些定时器在经过指定的时间或处理结束时向CPU发送中断信号。不仅是定时器,很多外设功能都会在“产生变化”、“处理开始/结束”时将中断信息传送给CPU。所以,CPU在中断功能发生前还可以继续做其它工作,因此可提高作业效率。关于中断功能的详细内容,将在本系列第4期的《外部中断功能IRQ》中做详细介绍。本期中,我们先事先了解一下“从外设功能以中断的形式向CPU传送信息”的内容。

各式各样的定时器中,还有“看门狗定时器”!

在单片机的外设功能中,最贴心的定时器是计算到指定时间的定时器和每隔一段时间便发生中断的定时器。另外,在瑞萨电子的RX63N单片机中,搭载了为控制伺服电动机而产生脉宽调制解调(PWM)信号的定时器、计算输入信号间隔的定时器、显示现在时刻的RTC(实时时钟)等各种各样的定时器。

在定时器中,最具特色的是WDT(看门狗定时器)。其名字Watch Dog Time中的Watch dog意思为“看门狗”,它的工作就是监视程序是否出现失控。由WDT监视的程序通过事先将设定的值写入WDT后启动。WDT每隔一定时间便减掉写入的值,当程序正常运行时,处理结束前会对WDT清零再结束。但是,如果程序失控(进入意料之外的重复状态且无法停止)时,写入WDT的值将小于0(称为下溢),因此向CPU通知程序出现了失控。在不允许睡眠的重要系统中,单片机中搭载的“看门狗定时器”DWDT发挥了极其重要的作用。

轻松尝试使用定时器

虽然说:“我们就通过程序来实际使用定时器……”,但是实际上,要想熟练运用定时器,必须先理解单片机的操作步骤。而且,不仅需要了解通过软件进行操作的步骤,还需理解单片机的硬件(结构)以及所使用的零部件的规格等。

因此,需要帮助时请使用“数据库”。对于搭载了RX63N单片机的GR-SAKURA电路板,我们准备了几个与时间和时刻有关的数据库。

SAKURA 的sketch参数:樱花程序库时间(仅英文版)

在这个程序中,要让GR-SAKURA上的LED在一定周期内发光。虽然仅是很简单的操作,但是要想让LED在正确的周期内发光就需要使用定时器。在上述樱花程序库的“时间”选项内,有计算经过时间的数据库,所以我们就使用它。

程序如图3所示。第14行的millis函数以从程序开始时经过的时间ms(毫秒:千分之一秒)为单位送回,没有参数。使用该函数,通过获取和最初的测定(第14行)之间的差距来取得1秒后、2秒后的结果。用while语言生成循环,从a的值等待1秒或2秒(第15行、第19行)。于是,1秒后LED0(GR-Sakura电路板的D1)亮灯,2秒后灭灯。灭灯后结束loop函数,但是该操作会再次反复继续执行。另外,millis函数没有符号,将返回long型的整数。

图3:使用定时器功能使LED亮灯的程序。此例中,以1秒钟为周期闪烁。

※//~是用于进行评价,对程序的执行不产生影响

将程序输入Web编译器,再将编译完成后的二进制文件传送给GR-SAKURA。传送结束后,4个LED灯将暂时熄灭后再开始执行,LED0(GR-Sakura电路板的D1)开始闪烁。

接我们讲解了必要的外设功能之一“定时器”。有关时间和时刻的处理,在各种场合都需要。请大家借此机会实际操作各种数据库。

但是,文中的“懊128次”和“1/1024秒”这些数字突然冒出来,是否让你吃了一惊呢?128是2的7次方,1024是2的10次方。RTC中具有每1/128秒产生一次中断的功能……这是在单片机的世界中经常看到的数字。

接下来讲中断功能

提高作业效率的“中断功能”指的是什么?

我们回顾一下“定时器”中简单介绍过的“中断功能”概念。任何人都有过这样的经验,就是“将鸡蛋放进沸腾的热水中,直到鸡蛋煮熟的10分钟内要确认好几次时钟”的经历。在单片机的世界中也同样,在等待某种状态达成时,具有对对象进行定期检查的方法。例如,在等待向GPIO(通用I/O端口)的输入从0变为1时,程序可以一定的间隔来检查GPIO的状态。这种处理被称为“轮询”。

轮询虽然是一种了解状态变化的简单方法,但是如果检查的频度低(间隔长)就会错过变化,如果频度过高(间隔短),即使查也查不到变化“空耗”。由于轮询通过简单的程序便能完成处理,所以在掌握对象的变化频度时是有效的。但是,进行多次检查也会给单片机带来负荷,对功耗不利。

因此就要用到本期介绍的“中断功能”。产生中断时,CPU会暂时停止正在执行的任务,转而进行别的任务。也就是有别的任务“穿插”进来的意思(图1)。当中途穿插进来的任务结束后,CPU再返回处理原来的任务。

设想一下你在工作的同时煮鸡蛋的情况。由于你不想停下手中的工作,所以把鸡蛋放入热水中后就设置定时器并继续工作,10分钟后定时器一响就把鸡蛋从热水中捞起。这时,定时器的鸣叫就是中断,而“把鸡蛋从热水中捞起”就是穿插进来的工作。大家可以通过这种方式来了解中断功能。

单片机中的中断处理

中断产生于单片机内部和外部的各种设备。于开关和感应器等单片机外部的中断称为外部引脚中断,来自这些机器的中断信号由名为“IRQ”的引脚接收,再向中断控制器(在RX63N中称被称为“ICUb”)发出通知。IRQ为“Interrupt ReQuest”的略称,意思为“中断请求”。另外,来自单片机内部的定时器和GPIO、串行通信设备UART等外设机器的中断被称为外部设备中断,中断信号直接从各外部设备通知中断控制器。

在中断控制器中,各种设备的中断信号按照先来后到的顺序,以适当的顺序被传送到CPU。而且,中断被设为无效的设备的中断信号将不会被传送到CPU,也就意味着可以忽视(屏蔽)这些信号。CPU按照从中断控制器接收到的指示来执行对应的程序(中断处理)。

CPU一旦接收到中断控制器的中断信号,首先将终止执行中的程序。然而,会自动保存“从何处重启”的出栈(POP)信息,这被称为“进栈(PUSH)”。进栈结束后,将开始由中断执行的程序。该程序结束时,进栈信息将回送到CPU,这种现象被称为“出栈”(图2)。由于进栈和出栈都由CPU自动执行,因此程序设计者不必因顺序问题而费心。

例如,通过UART执行串行通信时,经常监视字节是否被接收了而导致效率不佳。所以,多数情况下都对程序进行如下编程,即在信息送达时就会产生中断并进行适当的处理,另外,使定时器产生中断的情况也不在少数。进行“经过了一定时间后该做什么”这类处理时,应进行如下编程,即通过来自定时器的信号开始进行处理。如上所述,在有效利用单片机方面,中断功能发挥了很大的作用。

还可使用数据库尝试编写复杂的中断程序!

为了编写与中断相关的程序,就需要了解单片机的运行。由于需要深入了解,所以不能仅是进行简单的尝试。幸好还有本系列中介绍过的GR-SAKURA数据库,可在GR-SAKURA数据库中进行与外部引脚中断相关的处理,所以请尝试使用GR-SAKURA数据库来进行编程。

SAKURA sketch参数:樱花程序库--中断(仅限英文版)

为了向GR-SAKURA提供外部引脚中断,还需要做些工作。在GR-SAKURA中,从IO30引脚到IO35引脚接收来自外部的中断信号。这次是将定时器输出引导到IO0引脚,再将它传送到IO31引脚作为中断信号。因此,要从IO30引脚到GND的部分设置引脚接口,由底板用的电线将IO0和IO31连接起来(图3)。

在示例程序(图4)中预先准备了如下功能,即当GR-SAKURA的外部中断信号引脚(从IO30到IO35中的一个)的输入从L电平变为H电平时,LED灯将启动。而且是在检测到相当于上述所说明的“外部引脚中断”的中断信号后才会变化。从IO0引脚进行定时器输出,并将之与中断输入引脚即IO31引脚连接,通过这样的方式便可以与一定的时间间隔发生中断。

※即使已对该程序进行了汇编,在没有将上述的IO0和IO31引脚进行连接的GR-SAKURA中也无法运行。

以下为图4的程序

※图4程序结束

※图4:用于外部引脚中断的示例程序

在此数据库中,可对分别与前述中断信号输入引脚对应的处理。本次所示的是根据向IO31引脚输入的变化(从L电平变为H电平)来产生中断的情况。第48行的attachInterrupt()定义了在某个输入引脚出现某种变化时该调用什么函数。因此,设定为根据输入IO31引脚的中断信号来启动irq3()。这样的设定只需在setup()中定义一次便能在整个程序中有效。除此以外,在setup()中还记述了定时器的定义、定时器输出引脚的设定、LED输出的设定等初始条件。

没有通过loop()函数进行的处理。取而代之的是由irq3()这个函数进行处理。从这个函数来看是看不出它是从程序中调用的。但是,正是由于这个函数,才能使中断信号进入IO31引脚时使LED的光发生变化。在函数irq3()中,四盏LED中只有一盏亮灯,这个函数一旦被调用,亮灯的LED就发生一次变化。为了让人看得到这个“变化”,在case标签的部分,通过来自GPIO的输出来灭灯且使旁边的LED亮灯(边缘的LED灯亮灯时,相反侧的边缘的LED亮灯或灭灯)。

为了应对不知何时会发生的意外,中断就是非常有效的应对方法。而且,中断还可以减少程序的不必要运行,从而可降低功耗。也可以说,为了真正有效地利用单片机,这是一项不可缺少的技术。

关键词: 单片机

相关新闻

单片机与程序设计(上)
2022-01-27 15:00:00
三星S22支持IP68防尘防水功能:可在1.5米深水下工作30分钟
三星S22支持IP68防尘防水功能:可在1.5米深水下工作30分钟
2022-01-27 14:36:13
黑峡谷发布 X3 Pro、X5 Pro 三模机械键盘
2022-01-27 13:51:18
微软 Surface Pro 8 推送 1 月驱动更新
2022-01-27 13:51:10
索尼PlayStation VR2官宣,《Horizon》系列VR游戏确认开发中
2022-01-27 13:51:03
高颜值瞬间种草 三星Galaxy Z Flip3 5G成年度最热销折叠屏手机
2022-01-27 13:38:23
Magic3用户抢先体验 MagicUI6.0开启内测 限2000名额
2022-01-27 13:38:13
虎年限定图案来啦 OPPO 5款耳机支持个性化主题弹窗
2022-01-27 13:38:02
到底值不值?索泰至尊版GTX560显卡拆解
2022-01-27 13:30:24
华为——5G之路上的实干家
2022-01-27 13:30:18
机顶盒加解扰技术
2022-01-27 13:30:12
数字电视技术及其应用
2022-01-27 13:30:06
D触发器原理之低调的真相
2022-01-27 13:30:00
传苹果研发15英寸iPad Pro,比Mac电脑还大
2022-01-27 12:10:30
赶快更新!苹果发布iOS 15.3和iPadOS 15.3 修复了这个大Bug
2022-01-27 12:10:23
更新侧重点不同,moto三款手机迎来系统更新
2022-01-27 12:10:15
张一鸣退出字节跳动,卸任多家字节关联公司职务
2022-01-27 12:10:08
服务口碑领先 年服务用户过万 苏宁帮客老板:春节不打烊
2022-01-27 12:10:01
苹果、小米销量再创新高 2021欧洲手机市场报告出炉
2022-01-27 12:09:54
一加BudsPro新增2022年吾皇万睡虎年限定主题
2022-01-27 12:09:47
能打能撩 2022最惹火雷神女团真人版驾到!才艺满分为电竞上分
2022-01-27 12:09:40
粉色机身 华硕推出TUF GT301 鬼灭之刃联名限定版机箱
2022-01-27 12:09:33
雷军红包封面开放领取 米粉不容错过
2022-01-27 12:09:26
原神无悬念夺冠 2021Q4出海影响力榜单出炉
2022-01-27 12:09:18
15.8万特斯拉今年底上市?马斯克回应此事
2022-01-27 12:09:10
容声冰箱带来年货盛宴 让健康与爱抢“鲜”回家
2022-01-27 12:09:02
小米雷军红包封面来了 限量快点抢
2022-01-27 12:08:53
你集齐五福了吗?来海信真空冰箱扫一扫,助你集“福”一臂之力!
2022-01-27 12:08:43
外媒公布iPhone 14 Pro外观设计图:网友吵翻了
2022-01-27 12:08:33
超50个国家和地区 Disney+订阅服务计划将扩展
2022-01-27 12:08:24
春季公开发售 一加 10 Pro产品页面印度官网上线
2022-01-27 12:08:14
DXOMARK全球排名第20名!联想拯救者电竞手机2 Pro音频成绩揭晓
2022-01-27 12:08:04
光耦原理
2022-01-27 12:00:32
太阳能电池的工作原理
2022-01-27 12:00:26
几种微波信号发生器选择比较
2022-01-27 12:00:20
LM4890功放电路的分析
2022-01-27 12:00:14
学习篇:认识LED单元板/模组
2022-01-27 12:00:08
液晶及其显示原理
2022-01-27 12:00:02
IPC性能大涨19% 平民价位12代酷睿装机指南
2022-01-27 10:51:27
英特尔 ARC DG2 GPU 显存配置曝光:最高为 16GB GDDR6
2022-01-27 10:51:20
机械革命无界 16 大屏轻薄本上架:14 核 i7-12700H
2022-01-27 10:51:10
OPPO Reno7 系列将于 2 月 4 日在印度发布
2022-01-27 10:51:02
苹果发布iOS 15.3:修复iPhone 13大漏洞
2022-01-27 10:39:13
联想智慧赋能中国短道速滑国家队圆梦冰雪赛场
2022-01-27 10:39:05
约2522元起售!Steam Deck掌机定档2月25日发售
2022-01-27 10:38:57
Redmibook Pro 15增强版直降700元!卢伟冰:春节可以入手了!
2022-01-27 10:38:48
12代酷睿也有千元神U?已经上架了!
2022-01-27 10:38:39
微信键盘上线了,但等于没上线
2022-01-27 10:38:29
联想摩托罗拉手机更新系统 16大功能齐推送
2022-01-27 10:38:17
华硕B550鬼灭之刃主板开启预售 祢豆子与你同战
2022-01-27 10:38:03
万用表测电压方法详解
2022-01-27 10:30:25
计数器原理—不懂就要看哦~~
2022-01-27 10:30:20
滤波器原理
2022-01-27 10:30:15
堆栈指针寄存器 SP 详解
2022-01-27 10:30:10
WI-FI产品日本MIC认证(TELEC)测试方法
2022-01-27 10:30:05
视频压缩技术解析
2022-01-27 10:30:00
微软第二财季营收517亿美元 服务器及云服务等部门营收183.27亿元
微软第二财季营收517亿美元 服务器及云服务等部门营收183.27亿元
2022-01-27 09:59:12
腾讯投资心域科技!注册资本增加至212.68万元人民币
腾讯投资心域科技!注册资本增加至212.68万元人民币
2022-01-27 09:44:09
iPhone 15将搭载潜望式长焦镜头 最高可支持5倍光学变焦
iPhone 15将搭载潜望式长焦镜头 最高可支持5倍光学变焦
2022-01-27 09:23:43
2021全年手机市场数据出炉 vivo22%市场份额排名第一
2021全年手机市场数据出炉 vivo22%市场份额排名第一
2022-01-27 09:21:58
直流调速器原理
2022-01-27 09:00:26
ARM体系结构版本与相应的内核名称
2022-01-27 09:00:21
VGA接口定义、功能用途和种类
2022-01-27 09:00:16
中国移动面试试题及答案(全)
2022-01-27 09:00:11
激励器的作用
2022-01-27 09:00:05
超声波传感器原理
2022-01-27 09:00:00
Windows 11正式发布3个月 当季度商业产品及云服务营收增长13%
Windows 11正式发布3个月 当季度商业产品及云服务营收增长13%
2022-01-27 08:45:05
微软发布更新帮Win10用户升至Win11 包括系统优化及蓝牙设备
微软发布更新帮Win10用户升至Win11 包括系统优化及蓝牙设备
2022-01-27 08:43:36
月用户达14亿!微软称Win11比以前的系统更加成功
月用户达14亿!微软称Win11比以前的系统更加成功
2022-01-27 08:41:29
微信iOS版8.0.18发布:朋友圈最多支持20张照片,可选择模板制作视频
微信iOS版8.0.18发布:朋友圈最多支持20张照片,可选择模板制作视频
2022-01-27 08:39:49
微软宣布Win11安卓子系统下月全面开放 可直接在系统商店下载应用
微软宣布Win11安卓子系统下月全面开放 可直接在系统商店下载应用
2022-01-27 08:33:00
苹果发布iOS 15.3:修复iPhone、iPad安全性更新及充电问题
苹果发布iOS 15.3:修复iPhone、iPad安全性更新及充电问题
2022-01-27 08:31:12
AMD锐龙5000低调升级B2步进 优化功耗及发热可支持DDR4-4100超频条
AMD锐龙5000低调升级B2步进 优化功耗及发热可支持DDR4-4100超频条
2022-01-27 08:28:07
Intel新季度财报公布:营收205.28亿美元,同比增长3%
Intel新季度财报公布:营收205.28亿美元,同比增长3%
2022-01-27 08:11:29
ZOL百万补贴:滴滴浓香 松下滴漏式蒸汽煮咖啡机259元
2022-01-27 07:38:35
攒机单点评:选择CPU带不带“F”很重要
2022-01-27 07:38:27
开“新”融冰雪 点亮年轻人热爱生活之光
2022-01-27 07:38:20
还是白嫖更香!《绝对求生》免费后玩家暴涨486%
2022-01-27 07:38:11
造车的反去造手机 吉利投资手机业务会不会亏钱?
2022-01-27 07:38:03
逆变器电路DIY(图文详解)
2022-01-27 07:30:20
VHDL语言应用实例指导
2022-01-27 07:30:14
几种常用的幻灯机介绍
2022-01-27 07:30:09
逆变器工作原理
2022-01-27 07:30:04
一代神车迎来黄昏:大众帕萨特正式停产!
2022-01-27 06:21:01
可随心DIY 影驰GAMER RGB DDR5-5600内存现已开售
2022-01-27 06:09:09
预计3月下旬上市 惠普Elite Mini 800 G9主机发布
2022-01-27 06:09:02
采用“人声合成”音源技术 卡西欧发布新款电子键盘
2022-01-27 06:08:56
入侵模式来袭 《狙击精英 5》2022在Xbox等设备发布
2022-01-27 06:08:49
179美元起 Redmi Note 11/11S海外发布
2022-01-27 06:08:42
喜迎虎年 《地平线5》推出五菱宏光及中配
2022-01-27 06:08:34
家电行业首提“羽绒织物烘干护理”认证
2022-01-27 06:08:27
1899元交个朋友 映众RTX3050黑金至尊版
2022-01-27 06:08:20
显卡危机再度来袭?《孤岛危机4》确定开发中
2022-01-27 06:08:12
微软财报公布:Xbox业务收入创历史
2022-01-27 06:08:03
Mini DisplayPort接口规范正式颁布
2022-01-27 06:00:35
数字滤波器原理
2022-01-27 06:00:29
韩华集团设立中国总部
2022-01-27 06:00:24
漏电流的客观分析
2022-01-27 06:00:19
电容的作用--你知道多少?
2022-01-27 06:00:14
电磁波谱的基本原理
2022-01-27 06:00:09

热门文章

热点专题