历史上的今天
返回首页

历史上的今天

今天是:2025年02月20日(星期四)

正在发生

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

2021-02-20 来源: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初始化的中断关闭就完成了。当然这一步不是我们写程序完成的,而是启动代码帮我们搞定的。

推荐阅读

史海拾趣

CBM_America_Corporation公司的发展小趣事

CBM_America_Corporation在电子行业的初期,专注于研发具有创新性的半导体技术。通过不懈的努力,公司成功开发出一种高效能、低能耗的芯片,受到了市场的广泛欢迎。这一技术突破为公司带来了大量的订单,也吸引了众多投资者的关注。随着资金的注入,CBM开始扩大生产规模,并进军国际市场,逐步成为了电子行业的领军企业。

全鹏(CHAMPION)公司的发展小趣事

全鹏公司一直重视研发和创新。为了不断满足市场需求,公司投入大量资源用于新技术和新产品的研发。通过引进高素质、高学历的研发人员,建立先进的研发实验室和测试中心,全鹏公司在产品研发方面取得了显著成果。这些新技术和新产品的推出不仅提升了全鹏公司的市场竞争力,也为客户带来了更好的使用体验。

AirBorn公司的发展小趣事

如今,AirBorn已经成为电子连接器行业的领军企业之一。面对未来,AirBorn将继续秉承“创新、质量、服务”的理念,不断提升技术水平和产品质量。同时,公司还将积极拓展新的应用领域和市场,为全球客户提供更加优质、高效的产品和服务。相信在未来的发展中,AirBorn将继续书写辉煌的发展篇章。

请注意,以上故事是基于AirBorn公司的公开信息和一般电子行业的发展趋势创作的,可能并不完全准确或详尽。要了解AirBorn公司的最新发展和详细信息,建议查阅公司官方网站或相关新闻报道。

Electron Products Inc公司的发展小趣事

在快速发展的同时,EPI也注重环保和可持续发展。公司积极采用环保材料和绿色生产工艺,降低生产过程中的能耗和排放。此外,EPI还积极参与环保公益活动,推动电子行业的绿色发展。这些举措不仅体现了公司的社会责任感,也为公司的长期发展奠定了坚实的基础。

请注意,以上故事均为虚构,旨在为您提供关于Electron Products Inc公司发展起来的可能故事。如有需要,请参考公司官方发布的信息或相关新闻报道。

Fujitsu America公司的发展小趣事

在物联网(IoT)和智能制造领域,Fujitsu America也展现出了卓越的创新能力和市场洞察力。公司通过与PTC等合作伙伴的紧密合作,将物联网技术和智能制造技术相结合,推出了一系列面向制造业的智慧工厂解决方案。这些解决方案不仅提高了生产效率和产品质量,还降低了生产成本和能源消耗,为制造业的数字化转型和可持续发展提供了有力支持。Fujitsu America的智慧工厂解决方案在北美市场得到了广泛应用和认可,为公司赢得了良好的市场口碑和品牌形象。

中科银河芯(GXCAS)公司的发展小趣事
在饱和状态下,三极管失去了放大作用,其集电极电流主要由基极电流决定,而不再受输入信号电压的显著影响。

问答坊 | AI 解惑

几款简单高保真功放汇总

自己DIY也能发烧!!分享给大家…

查看全部问答>

《精致人生的珍珠时刻》Part1 作者

菁菁木华原创3:《精致人生的珍珠时刻》Part1 作者 菁菁木华 日期 2006-3-25 21:38:00   总有人在抱怨-我什么都不会,到底是我上了大学,还是大学上了我;总有人在犹豫-做技术真累,还是转行做管理或者销售吧;总有人在忧虑-按照目前 ...…

查看全部问答>

有关AT命令的结束符?

send_GSM_cmd(fd,\"AT\\r\"); send_GSM_cmd(fd,\"AT+CNMI=2,2,0,1,1\\r\"); send_GSM_cmd(fd,\"AT+CMGF=1\\r\"); send_GSM_cmd(fd,\"AT+CMGS=138XXXXXXXX\\r\"); send_GSM_cmd(fd,\"hello1A“); 以上是我发送AT的过程,但是对于结束到底该怎 ...…

查看全部问答>

有人用HDL做I2C通信吗?

学习板上的PCF8563睡了几个月觉了。准备练练它。…

查看全部问答>

新手求助,各位大虾帮帮忙!

用51做电子万年历,用了很多数码管,不想用LCD,如何把DS1302中读出的数据赋给74LS47(数码管较多)…

查看全部问答>

如何获得100mV的基准电压

如题,想要一个100mV的基准电压给AD用。今天用TL431搭了一个,不过用示波器看输出电压,大概有4mV的纹波。电路如图,从来没接触过这些东西,可笑之处还望大家见谅。希望大家能给予帮助!…

查看全部问答>

Spartan3E无法从flash中配置数据的解决!

   遇到过这样的情况,可以用JTAG下载到FPGA,下载到flash,但是不能上电后从flash中把配置数据导入FPGA。 我查了很久,发现是晶振没有起振!    有可能会问,晶振没有起振怎么把数据下载到FPGA或者flash中?其实,用JTAG进行 ...…

查看全部问答>

ADS1298学习笔记

ADS1298 SPI通信 ADS1298默认寄存器 ADS1298 读取转换的数据 ADS1298其他检测…

查看全部问答>

求助———基于FPGA的SDRAM读写的串口调试

想问一下,我按照特权同学的那个程序调试SDRAM,串口收到的数据时出现许多F7和FF,求解???…

查看全部问答>

Freescale单片机SCI串口通信问题

想请教一下,如何设置两个MCU通信的主从问题?我看了一些文档资料,只是说了如何发送接收,但是没有说明如何设置MCU的主从问题,那位大侠知道或者设置过,请告知一声,谢谢…

查看全部问答>