历史上的今天
返回首页

历史上的今天

今天是:2024年12月18日(星期三)

正在发生

2018年12月18日 | 基于S3C6410的ARM11学习(六) 核心初始化之关闭所有中断

2018-12-18 来源:eefocus

上一次,我们完成了核心初始化之关闭看门狗了。下面就要关闭所有中断了。因为这个时候还在初始化整个硬件环境,应用程序还没有开始跑,所以是不希望有中断产生来打断CPU工作的。


中断是嵌入式系统中很重要的东西了。因为有了这个东西,可以使CPU解放出来,做更多的事。


学单片机的时候,对于按键,我们可以采用轮询检测,隔一段时间就去检测看看按键有没有按下,有按下的话就进行处理。没有的话就跳过。而使用外部中断后,就不必检测了,外部中断会自动检测,就不用CPU检测了。当外部中断有效后,外部中断模块就会产生一个中断源给CPU,CPU检测到这个中断源,再去执行对应的中断处理函数。比轮询法效率要高很多了。


至于S3C6410的中断的具体的一些应用,等后面开发用到的时候再分析,这里只是关心怎么把所有中断给关闭掉。


在CPSR寄存器中


clip_image002


后面有两位,第7位和第6位,就是I位和F位。


我们知道,在S3C6410中是有两种中断,一种普通中断,一种是快速中断。所以这关闭需要分开关闭。


I位:控制所有普通中断。相当于51单片机的EA位。要使用中断的话,这一位就必须要置0,注意,这里0是使能。我们这里是要关闭所有中断,所以这一位就要写1.


F位:控制快速中断。要使用快中断的话,这一位就必须要置0.也是注意,0才是使能。我们这里要关闭所有快中断,所以这一位要写1.


另外,我们还要把中断控制器的中断使能也给关掉。


clip_image004

上图是S3C6410的中断控制器。


这里主要是VIC1和VIC0两个中断控制器,这两个控制S3C6410的64个中断。


clip_image006

clip_image008

 

截图就截取一部分。


 第一列是中断的标号。表示这是第几个中断号。


 第二列是中断源。表示这个中断的源是什么。


 第三列是描述。说明这个中断是做什么的。


 第四列是中断属于哪个中断控制器。VIC0就说明该中断属于VIC0中断控制器,VIC1就说明该中断属于VIC1中断控制器。所以要使用对应的中断的话,就要去找对应的中断控制器。


 在VICx的若干寄存器里面,有下面两个寄存器,用来无效中断源。

 

clip_image010


 寄存器中的每一位对应相应的中断源。往寄存器里面写1,就屏蔽了对应的中断。

 

这里,我们要屏蔽所有中断,所以就直接往这两个寄存器里面写入全1.


知道我们怎么做后,剩下写代码就比较容易了。

   

clip_image012


因为要对寄存器操作,所以第一步先定义要操作寄存器的地址。这里要操作两个寄存器,所以先用define对操作的两个寄存器的地址先定义一下。


       使用ldr伪指令,将

    

代码,注释也很清楚了。


前面,是对时钟进行复位的。这里现在先不管,等到了时钟在分析。关心红色框框起来的部分。由于我使用的芯片没有定义#if判断的宏,所以就执行到空色框的部分。这里对RCC下的CIR寄存器进行配置。



查手册,这个寄存器都是和时钟中断有关的。就是将时钟的相关的中断清除以及关闭。


stm32通过调用这个函数,就关闭了中断和清除中断。但是这些中断都是对应时钟的。而没有对应外部中断以及一些外设的中断的。我认为的话,复位后,外部中断及外设的中断都是不使能的呢?为什么了,因为时钟没有开启。STM32比ARM11多了门控时钟这个东西。即每个外设都有对应的门控时钟,当要使用该外设的时候,要开启对应外设的时钟。复位的时候,外设时钟是默认关闭的。


这个就看外设时钟使能寄存器就可以了,外设的话,是挂在不同的总线上的,有的在AHB总线,有的在APB1,有的在APB2上,所以就有3个寄存器来配置各个总线对应的时钟使能。

      


这里,就以APB2外设时钟使能说明。



复位默认值是0x0,所以每一位都是0.从列表就可以看出,0就是对应功能的时钟关闭。比如位2为0,IO端口A时钟关闭。既然端口时钟都关闭了,那中断就不会有效果,因为中断信号都进不了CPU。


但是,这复位为什么要复位时钟的中断了,因为随后就要对时钟进行配置了。将时钟配置为72M。而不是内部时钟的8M。所以不关闭时钟的相关中断的话,配置的时候就会产生中断。


如上,就对STM32初始化的中断关闭就完成了。当然这一步不是我们写程序完成的,而是启动代码帮我们搞定的。


推荐阅读

史海拾趣

Eagle Plastic Devices公司的发展小趣事

Eagle Plastic Devices公司成立于20世纪90年代初期,当时市场上对于高性能塑料电子部件的需求日益增长。公司创始人张先生,凭借其在塑料材料科学和电子工程领域的深厚背景,带领团队研发出了一系列具有革命性的塑料电子封装和连接器产品。这些产品以其优异的电气性能、耐用性和成本效益,迅速在行业内获得了认可,为Eagle Plastic Devices公司奠定了坚实的基础。

Austek Microsystems公司的发展小趣事

在追求经济效益的同时,Austek Microsystems也积极履行社会责任。公司严格遵守环保法规,采用环保材料和生产工艺,减少对环境的影响。此外,Austek Microsystems还积极参与公益事业,为社区的发展和进步贡献自己的力量。

这五个故事展示了Austek Microsystems在电子行业中的发展历程和取得的成就。通过创新研发、建立合作伙伴关系、技术升级与产品迭代、市场拓展与品牌建设以及履行社会责任等方式,Austek Microsystems逐渐在市场中崭露头角,成为了电子行业中一颗璀璨的明星。

DRI Relays Inc公司的发展小趣事

为了满足全球客户的需求,DRI Relays Inc公司开始实施全球化战略。公司先后在亚洲、欧洲和美洲等地设立了分公司和研发中心,以便更好地了解当地市场需求和提供定制化服务。同时,公司还积极参与国际展览和交流活动,加强与全球客户的沟通和合作。这些举措不仅提高了公司的国际知名度,还为公司赢得了更多的订单和市场份额。

Euroquartz公司的发展小趣事

Euroquartz自创立之初,就将产品质量和客户满意度置于公司运营的核心。为了确保这一点,公司引入了完整的AS9100 Rev D质量体系,并通过了相应的认证。这一体系要求Euroquartz在制造程序和可追溯性方面保持完整的记录,审批机关会定期进行审核,确保品质始终如一。这种对品质的执着追求,为Euroquartz赢得了客户的信赖,也为公司的发展奠定了坚实的基础。

Anaren Ceramics公司的发展小趣事

随着技术的不断成熟,Anaren Ceramics公司开始积极拓展市场。公司不仅在国内市场上取得了显著的成绩,还积极开拓国际市场。通过与全球知名电子企业的合作,Anaren Ceramics公司的产品逐渐进入了国际市场,赢得了众多客户的信赖和好评。这一系列的市场拓展活动不仅提升了公司的品牌影响力,也为公司的长期发展奠定了坚实的基础。

Amerace Electronic Components公司的发展小趣事

随着公司技术的不断提升和产品质量的持续保证,Amerace Electronic Components公司开始积极拓展全球市场。公司通过与国际电子行业的领军企业建立战略合作关系,成功将产品打入国际市场。同时,Amerace还在全球范围内设立了多个生产基地和销售网络,以满足不同国家和地区的客户需求。这种全球化的战略布局使得Amerace在全球电子元件市场中占据了重要地位。

问答坊 | AI 解惑

小功率充电器的设计原理分析

本文介绍一种既能省去复杂的IC电路及其外围电路,又能够实现自动充电功能的电路。 1 工作原理 原理图如图1所示,它由如下元件构成:C1,V1~V4,C2组成滤波整流电路,变压器T为高频变压器,V5,R2,C11组成功率开关管V7的保护电路,NF为供给IC电 ...…

查看全部问答>

需要设计一个信号产生电路!

需要设计一个信号产生电路,频率为20M,低电平为4V,高电平在20V到50V之间可以调节,望各位高手赐教…

查看全部问答>

富士康 第十 大家如何看待

今天早晨看新闻有富士康的第十跳,觉得万般无奈,社会怎么了?人格怎么了?是变化太快还是无奈····…

查看全部问答>

模拟电路--做毕设时心电图设计资料

本人可能不做电子这一块了,所以整理下电脑上以前用过的东西。。。。。…

查看全部问答>

蓝牙驱动选择问题

各位,目前我们的项目需要在一个WinCE板子上使用蓝牙功能,要求支持A2DP,DUN,SPP等功能。 目前就我所了解的主要提供蓝牙驱动的有widcomm,bluesoleil和windows自带的。 网上搜了一些文章,基本上说wincomm最稳定,想请教一下大家,windows自带的 ...…

查看全部问答>

急!请教:在EVC下如何实现像Cristi Posea做的CSizingControlBar的程序

想实现一个类似CSizingControlBar的界面,但是EVC下不支持NCCALCSIZE_PARAMS这个结构,不知道有什么方法可以解决。或者说EVC下是否能做成这样的界面。…

查看全部问答>

第1章 UNIX基础知识

1.1   引言 11.2   登录 11.2.1   登录名 11.2.2   shell 11.3   文件和目录 21.3.1   文件系统 21.3.2   文件名 21.3.3   ...…

查看全部问答>

USB口找不到了

我做了一个USB转串口,连接时可以在PC找到,通信正常,但是当板子上连通另一块芯片CPLD时,只是给CPLD通了电,结果USB找不到了,也没有任何错误提示,STM32与CPLD电路上应该没有什么影响的,请教各位是不是我的编程有问题啊?有没有人遇到过,怎么 ...…

查看全部问答>

SEED-EXP430F5529开发板按了S3怎么没办法复位啊?

按了S3怎么没办法复位啊? 液晶屏画面也没见变化。…

查看全部问答>

28335 ePWM 递增递减模式产生PWM波形?

TBCR为UP时,当TBCTR=CMPA时输出为低;而在TBCR为DOWN时,当TBCTR=CMPA时输出为高,这个是为啥啊?在手册上找了半天也没找到。。。 …

查看全部问答>