历史上的今天
返回首页

历史上的今天

今天是:2024年09月20日(星期五)

正在发生

2018年09月20日 | stm32f407之EXTI(操作寄存器)

2018-09-20 来源:eefocus

六、EXTI



       外部中断/事件控制器包括用于生成高达23个事件/中断的请求。每条中断线可独立配置选择类型(响应或挂起)和相应的触发事件(上升或下降或两者)。每一中断线可以独立屏蔽。有一个挂起寄存器维持中断线的状态请求。

 

EXTI线0~15连接到PX0~15(可编程配置)

EXTI线16连接到PVD的输出事件
EXTI线17连接到RTC报警事件
EXTI线18连接的USB OTG FS唤醒事件
EXTI线19连接到以太网唤醒事件
EXTI线20连接的USB OTG HS(在FS配置)唤醒事件
EXTI线21连接到RTC的篡改和TimeStamp事件
EXTI线22连接到RTC唤醒事件

 

 


设置步骤:

1.     使能相关时钟

2.     设置中断优先级分组(如果之前没有设置),这个最好一个程序里只在开头设置一次。

3.     设置中断线所要连接到的IO的输入模式

4.     设置屏蔽寄存器,不能把中断屏蔽掉

5.     设置中断方式

6.     把中断线连接到IO口

7.     设置中断优先级

8.     使能中断线

9.     编写中断服务函数(函数名是固定的)

10.  中断服务函数里检查是哪个中断挂起

11.  编写相应的程序

12.  清除中断挂起



程序:

/************************************  

    标题:操作EXTI的练习  

    软件平台:IAR for ARM6.21  

    硬件平台:stm32f4-discovery  

    主频:168M  

      

    author:小船  

    data:2012-01-17  

*************************************/  

  

#include   

  

void Led_Init (void);  

  

void main ()  

{     

    

  RCC->AHB1ENR |= 0x00000009; //使能GPIOD和GPIOA时钟  

  RCC->APB2ENR |= (1<<14);  //使能syscfg时钟  

  

  SCB->AIRCR = 0x05FA0000 | 0x400;  //中断优先级分组 抢占:响应=3:1  

    

  Led_Init();  

    

  GPIOA->MODER &= 0xFFFFFFFC; //浮空输入模式  

  GPIOA->PUPDR &= 0xFFFFFFFC;   

    

  EXTI->IMR |= ( 1 << 0 );  //不屏蔽外中断线0  

    

  EXTI->FTSR |= ( 1 << 0 ); //下降沿触发  

    

  SYSCFG->EXTICR[1] &= 0xFFFFFF00;  //配置外中断线0到PA口  

    

  NVIC->IP[6] = 0xe0;   //最低抢占优先级,最高响应优先级1110  

    

  NVIC->ISER[0] |= (1<<6);  //使能中断线6,也就是外中断0  

    

    

  while(1)  

  {  

  };  

}  

  

  

void Led_Init()  

{  

  GPIOD->MODER &= 0x00FFFFFF; //设置PD12,13,14,15输出  

  GPIOD->MODER |= 0x55000000;   

    

  GPIOD->OTYPER &= 0xFFFF0FFF; //设置PD12,13,14,15推挽输出  

    

  GPIOD->OSPEEDR &= 0x00FFFFFF; //PD12,13,14,15 速度100m  

  GPIOD->OSPEEDR |= 0xff000000;  

    

  GPIOD->PUPDR &= 0x00FFFFFF;  //PD12,13,14,15 无上拉无下拉  

    

  GPIOD->BSRRH = 0xf000;  //reset register GPIOx_BSRRH, write only  

                          //set register GPIOx_BSRRL, write only  

  SYSCFG->CMPCR = 0x00000001; //使用IO补偿单元  

}  

  

void EXTI0_IRQHandler(void)  

{  

  uint32_t tmp;  

  if(EXTI->PR & 0x00000001 != 0)  //检查是不是外中断0挂起  

  {  

    tmp = (~GPIOD->ODR) & 0x0000f000;   //PD15 14 13 12翻转,板子上四个LED的亮灭  

    GPIOD->ODR &= 0xffff0fff;  

    GPIOD->ODR |= tmp;  

      

    EXTI->PR = (1<<0);  //外中断0解除挂起  

  }  

}  


推荐阅读

史海拾趣

Afero公司的发展小趣事

随着Afero在国内市场的成功,公司开始将目光投向国际市场。他们设立了海外分支机构,积极参加国际展会和技术交流活动,与全球范围内的合作伙伴建立联系。通过与国际知名企业的合作,Afero成功将其物联网平台推广至全球市场,并获得了广泛的认可和应用。这些国际市场的拓展为Afero的未来发展打开了新的机遇。

这些故事是基于Afero公司的发展历程和公开信息构建的,旨在展示其在电子行业中的发展和成就。然而,需要注意的是,这些故事可能并不完全准确或详尽,因为具体细节可能涉及公司的商业机密或未公开的信息。如需更详细和准确的信息,建议直接访问Afero公司的官方网站或查阅相关新闻报道。

Fabrimex AG公司的发展小趣事

近年来,Fabrimex AG在品质管理和环境保护方面取得了显著的成绩。2016年,包括Fabrimex在内的整个WERAP集团均通过了ISO 9001:2015和ISO 14001:2015认证。这些认证不仅证明了公司在品质管理和环境保护方面的实力,还为公司赢得了更多客户的信任和认可。此外,公司还积极参与行业标准的制定和修订工作,推动行业的技术进步和发展。

这些故事只是Fabrimex AG在电子行业发展历程中的一部分,但它们足以展示公司在技术创新、市场拓展和品质提升方面的不懈努力。通过这些努力,Fabrimex AG在电子行业中逐渐崭露头角,成为了一家备受瞩目的企业。

Global Components & Controls公司的发展小趣事
电路中的电阻或电容也可能出现故障,如开路、短路或容值变化等。这些问题会影响电路的正常工作,导致台灯亮度不稳定或无法调节。需要根据具体情况进行检修和更换。
AAC [American Accurate Components]公司的发展小趣事

近年来,AAC公司一直致力于技术创新和产品研发。在声学、光学、触感、传感器及半导体等领域,AAC积累了近三十年的技术经验。这些技术积累使得AAC能够不断推出具有创新性和竞争力的新产品。例如,AAC在某次创新峰会上发布了超宽频音质的Opera高低音分频方案、旗舰级体验大众化的声学触觉一体化Combo方案以及安卓触感“天花板级”的仿生振感马达等三大技术新品。这些新品的发布不仅彰显了AAC在电声元器件领域的技术实力,也为智能手机等消费电子行业注入了新的活力。

这五个故事只是AAC公司发展历程中的一部分,但它们足以展现AAC在电子行业中的不断进取和创新精神。从一个合资企业起步,到如今成为全球著名的电声元器件制造商之一,AAC凭借敏锐的市场洞察、坚定的发展决心以及持续的技术创新,在电子行业书写了自己的传奇篇章。

请注意,以上内容仅是基于参考文章的事实性描述,并未涉及对AAC公司的任何评价或判断。同时,由于我无法获取AAC公司的实时信息,因此以上内容可能与AAC公司的最新发展情况有所出入。如需了解更多关于AAC公司的最新信息,建议查阅相关新闻或访问AAC公司官方网站。

DREMEL公司的发展小趣事

随着全球化的趋势日益明显,Dremio公司开始积极拓展国际市场。他们制定了详细的国际化战略,包括在海外市场设立分支机构、与当地企业建立合作关系、参加国际展会等。这些举措不仅提高了Dremio公司在国际市场的知名度,也为其带来了更多的商业机会。通过国际化战略的实施,Dremio公司的业务规模不断扩大,品牌影响力也日益增强。

请注意,以上故事均基于虚构,旨在展示一个类似Dremio公司在电子行业中的可能发展路径和故事。如有需要,请进一步核实相关事实和数据。

ACE [ACE Technology Co., Ltd.]公司的发展小趣事

为了进一步扩大市场份额,Dremio公司积极寻求与电子行业的跨界合作。他们与一家知名电子设备制造商达成战略合作,共同开发了一款集成了Dremio数据处理技术的智能设备。这款设备能够实时收集和分析设备使用数据,为企业提供更精准的市场分析和产品优化建议。通过这一合作,Dremio成功将技术应用于电子设备的全生命周期管理,进一步巩固了其在市场中的地位。

问答坊 | AI 解惑

12864程序

12864串并口程序…

查看全部问答>

wince的flash保存的文件的内容被改变了,或者是丢失了

    系统在启动以后,通过同步工具拷贝一个配置文件给系统,然后重启。第一次重启后得到的数据是正确的,可以正常的读取文件的配置。第二次及其以后的重启就会发现配置文件数据已经读取不了了,或者是格式不对了。我拷贝出来一看,文件大 ...…

查看全部问答>

Windows CE 中连接远程sql server 2005报错“PlatformNotSupportedException“请高手帮下~!

情况是这样的,我想用window ce 连接远程sql server 2005却出现了PlatformNotSupportedException异常,同样的代码在windows 程序下测试是可以的! 我的开发环境是 vs 2005 +c# 本地用的是模拟器,模拟器可以连接到网络(用模拟器可以访问外部 ...…

查看全部问答>

硬件维护工程师

   各位大虾硬件维护工程师主要是做什么的啊?        我在学校准备考,还不知道是做什么的?考这个有用没有啊 ???? …

查看全部问答>

FPGA最小系统

小弟是刚开始学习FPGA,准备画一块FPGA最小系统板,请问大侠们谁有FPGA最小系统的设计指导,小弟感激不尽,有的话麻烦发到我邮箱betterfunan@126.com。谢谢大家了、、、、…

查看全部问答>

红外中断的问题

我设计了一个可红外调节的时钟 利用外部中断1 作为红外接收头的引脚 并用下降沿触发方式  程序 在附件中  程序写好后发现程序一开始运行就进入了 红外中断 试了好久度没有调试成功 望高手帮忙看看   其中 p0口 接的是液晶 &nbs ...…

查看全部问答>

LM3S811中断

LM3S811中断函数注册有两种方法,一是类似例程的看门狗,在起始的汇编文件改变相应中断处理函数名,并EXTERN,中断处理函数名字一致。二是,使用相应库的中断注册函数,但需要改sct文件,把默认注释的那句话改为不注释。 看到下面有人问,就把国 ...…

查看全部问答>

assert_failed 到底有什么用啊

有哪儿仁兄知道  在STM32中的assert_failed   函数 到底有什么用啊    谢谢了…

查看全部问答>

DMA中断问题

我要在DMA中断程序中清除DMA中断标志位,DMA0CTL &= ~DMAIFG不对吗,老是提示expected  an  expression,为什么啊?…

查看全部问答>