1.中断函数概念
上一讲里,当赋值IT0为1时,P3.2遇到下降沿,IE0被置1,要想使IE0自动清零,我们引用中断函数就可以了。
我们可能已经习惯了都是在main函数里阅读分析代码,其实还有另一种函数需要我们认识的,那就是中断函数。所谓中断函数就是当它满足一定的条件时就会暂停主函数的执行内容,转而去执行中断函数。关于这个概念网上很多说法都已经讲解的很详细了,这里点一下即可。
因为我们擅长的是从实践中领悟真理,所以后面我们尽量用例程去理解中断函数。
2.中断函数的书写
中断函数与其他我们封装过的子函数的写法不同,有个区分标志“interrupt”。
至于后面为什么会有个数字0我们以后再讲。
当然函数名我们可以随意取,只要不跟以前封装定义好的函数名冲突就行。这里我们取“EXTI0_IRQHandler”作为函数名是模仿STM32单片机的写法。
3.EX0和EA
我们说过要想进入中断函数,必须满足它的一些前提条件。这里的EX0(IE^0)和EA(IE^7)要初始化赋值给1才能进入的了中断函数去执行任务。
EA叫做总中断开关,EX0是针对P3.2的外部中断的开关。
也就是要想进入中断函数必须满足两个开关都要闭合(都为1)。
4.实战
同样像上一讲那样拔插杜邦线观察现象,可以看到程序中IE0的身影不再出现但实现功能也都是一样的
#include #include void main() { IT0 = 1; //下降沿触发模式 EX0 = 1; EA = 1; LED_Init(); //初始化LED硬件模块 while(1); //主函数什么事都不做,空循环这条语句 } void EXTI0_IRQHandler() interrupt 0 { LED2=!LED2; } 所以看起来主函数什么内容也没有,但是在拔插杜邦线的过程中触发了中断函数,所以LED2被执行跳变,这就是中断函数的作用。 即使主函数一直执行“while(1);”,中断函数还是能执行的了的。 大家把“EX0=1;”改为“EX0=0;”,或者把“EA=1;”改为“EA=0;”再编译下载进去拔插杜邦线发现LED2没有反应,因为这样做已经不满足触发中断函数响应了。
上一篇:第一页
下一篇:51单片机-进一步理解中断函数
推荐阅读
史海拾趣
随着技术的不断进步和市场的不断扩大,Datapro International Inc公司开始寻求新的市场机会。他们发现,随着企业信息化程度的提高,对数据存储和处理的需求也越来越大。于是,公司决定进军企业市场,并开发了一系列针对企业的数据存储解决方案。
在拓展企业市场的过程中,Datapro International Inc公司面临着来自竞争对手的激烈竞争。然而,他们凭借卓越的产品质量、专业的技术服务和灵活的商业模式,成功赢得了客户的信任和支持。随着企业市场的不断拓展,Datapro International Inc公司的业务规模也逐渐扩大。
随着时间的推移,Equinox的成功吸引了越来越多的投资者。公司开始寻求全球扩张的机会,并在不同国家和地区开设新的健身俱乐部。同时,Equinox还推出了多个子品牌,如E By Equinox、SoulCycle等,以满足不同消费者的需求。这些品牌涵盖了从高端豪华到平价实惠的全方位市场,进一步巩固了Equinox在健身行业的领先地位。
2020年,新冠疫情的爆发给全球健身行业带来了前所未有的挑战。许多健身房因为疫情而被迫关闭,Equinox也不例外。然而,Equinox并没有放弃,而是迅速调整策略,通过线上课程、虚拟健身等方式保持与客户的联系。同时,公司还加强了内部优化和成本控制,以应对疫情带来的经济压力。
2007年,帝特成功获得迪士尼形象授权(泰国),这一里程碑事件标志着帝特品牌在国际市场上的认可度和影响力得到了显著提升。随后,帝特又获得了国内悠嘻猴授权,进一步丰富了其产品线。2008年,帝特荣获“守合同、重信用企业”荣誉称号,这一荣誉不仅是对帝特过去努力的肯定,也为公司的未来发展奠定了坚实基础。
洲光源公司自2011年成立以来,一直致力于红外LED光源器件的研发和生产。在公司成立的初期,市场上对于红外LED的需求并不高,但洲光源公司坚信其未来的潜力。通过不断的技术研发和创新,洲光源成功开发出了高效、稳定、可靠的红外LED产品,逐渐在市场上树立了良好的口碑。随着智能家居、安防监控等领域的快速发展,红外LED的需求迅速增长,洲光源公司也迎来了发展的黄金时期。
我今年20岁,是一名大一的学生(非统招),计算机专业的(软件编程方向),我主要想阐述下我的过去,和一点点倾诉吧…字很多,希望前辈们能看完,谢谢了… 我在很早就听说过,关于程序员到了30岁就老了的新闻.我也一直担心这个事情.说句实话,給我 ...… 查看全部问答∨ |
|
烧写友善mini2440的板子的BIOS要设置初始化脚本,我看了脚本内容,基本都是设置内存数据。 我注释了一下: SCRIPT SECTION: Setmem 32-Bit 0x53000000 0x00000000 ; pWTCON , 看门狗定时器控制寄存器 Setmem 32-Bit 0x4A000008 0xFFFFFFFF ; INT ...… 查看全部问答∨ |
曙海教育“FPGA培训班课程开课信息” 上海曙海教育FPGA培训班马上开课了: 曙海教育“FPGA应用设计初级班”授课内容请参见以下网址: http://www.bjzhda.cn/fpgayy.htm 曙海教育“FPGA应用设计高级班”授课内容请参见以下网址: http://www. ...… 查看全部问答∨ |
release版与debug版的区别在哪?把debug版本下的display驱动放到release下编译照样出样下列错误。。。 GP1 Irq PwrButtonIntrThread :go to sleep! SA2Video::PowerHandler++++++++++ DispDrvrPowerHandler----------bOff = 1 DispDrvrPowerHa ...… 查看全部问答∨ |
最近在porting cs8900a driver, 从wince5.0 移到wince6.0中, 驱动编译成功,系统也能够检测到网卡,网络连接标示也有,可是与 pc 机就是ping 不通,不能连接到internet.硬件都没问题!希望那位大侠能够出手帮忙!!!… 查看全部问答∨ |