历史上的今天
返回首页

历史上的今天

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

正在发生

2019年09月09日 | 正点原子STM32F4外部中断实验

2019-09-09 来源:eefocus

最多只能有7个外部中断。


下面这个是GPIO口初始化。


void KEY_Init(void)

{

    

    GPIO_InitTypeDef  GPIO_InitStructure;


  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOE, ENABLE);//使能GPIOA,GPIOE时钟

 

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4; //KEY0 KEY1 KEY2对应引脚

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//普通输入模式

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100M

  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉

  GPIO_Init(GPIOE, &GPIO_InitStructure);//初始化GPIOE2,3,4

    

     

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;//WK_UP对应引脚PA0

  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN ;//下拉

  GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA0

 

}


还有下图这一步,使能这个SYSCFG时钟,因为中断线用到了这个时钟

//外部中断初始化程序

//初始化PE2~4,PA0为中断输入.

void EXTIX_Init(void)

{

NVIC_InitTypeDef   NVIC_InitStructure;

EXTI_InitTypeDef   EXTI_InitStructure;

KEY_Init(); //按键对应的IO口初始化

 

RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);//使能SYSCFG时钟

 

SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE, EXTI_PinSource2);//PE2 连接到中断线2

SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE, EXTI_PinSource3);//PE3 连接到中断线3

SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE, EXTI_PinSource4);//PE4 连接到中断线4

SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0);//PA0 连接到中断线0

  /* 配置EXTI_Line0 */

  EXTI_InitStructure.EXTI_Line = EXTI_Line0;//LINE0

  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//中断事件

  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; //上升沿触发  触发方式 

  EXTI_InitStructure.EXTI_LineCmd = ENABLE;//使能LINE0  

  EXTI_Init(&EXTI_InitStructure);//配置

/* 配置EXTI_Line2,3,4 */

EXTI_InitStructure.EXTI_Line = EXTI_Line2 | EXTI_Line3 | EXTI_Line4;

  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//中断事件

  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿触发

  EXTI_InitStructure.EXTI_LineCmd = ENABLE;//中断线使能

  EXTI_Init(&EXTI_InitStructure);//配置

 

NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;//外部中断0

  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00;//抢占优先级0

  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;//子优先级2

  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能外部中断通道

  NVIC_Init(&NVIC_InitStructure);//配置

NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn;//外部中断2

  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x03;//抢占优先级3

  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;//子优先级2

  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能外部中断通道

  NVIC_Init(&NVIC_InitStructure);//配置

NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn;//外部中断3

  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;//抢占优先级2

  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;//子优先级2

  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能外部中断通道

  NVIC_Init(&NVIC_InitStructure);//配置

NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn;//外部中断4

  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x01;//抢占优先级1

  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;//子优先级2

  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能外部中断通道

  NVIC_Init(&NVIC_InitStructure);//配置

   

}

 

中断状态判断中断是否发生


外部中断只能手动清0  

下面回顾外部中断的配置步骤  如果我们的IO口是拉低的,那么可以配置成高电平触发。 这样我们的外部中断配置就完成了。

 

至此我们就完成外部中断实验的简单配置。

推荐阅读

史海拾趣

Alliance Memory公司的发展小趣事

Alliance Memory是一家专注于存储器产品的公司,以下是其发展历程的五个相关故事:

  1. 成立与发展初期: Alliance Memory成立于2006年,总部位于美国南卡罗来纳州。公司专注于提供DRAM(动态随机存取存储器)和SRAM(静态随机存取存储器)解决方案。在成立之初,公司致力于与全球供应链建立紧密的合作关系,以确保产品的质量和可靠性。通过与先进制造厂商合作,Alliance Memory能够提供高品质的存储器产品,满足客户的需求。

  2. 扩大产品线: 随着市场需求的增长,Alliance Memory不断扩大其产品线,涵盖各种容量和类型的DRAM和SRAM产品。公司不断改进和优化其制造工艺,并与全球领先的技术合作伙伴密切合作,以确保产品的性能和稳定性。通过不断提供新的存储器解决方案,Alliance Memory成功吸引了更多的客户,并在行业中树立了良好的声誉。

  3. 全球市场拓展: Alliance Memory的产品销售遍布全球各个地区,包括美国、欧洲、亚洲等市场。公司与全球各地的分销商和代理商建立了稳固的合作关系,以扩大其产品的市场份额。通过在全球范围内提供及时和高效的客户服务,Alliance Memory不断增强了其在国际市场上的竞争力。

  4. 技术创新与研发投入: 作为一家技术驱动型公司,Alliance Memory不断投入研发和创新,以提供最先进的存储器产品。公司的研发团队与业界领先的技术合作伙伴密切合作,不断推出具有竞争优势的新产品。通过持续的技术创新,Alliance Memory得以不断满足客户不断增长的需求,并保持在行业中的领先地位。

  5. 可持续发展与社会责任: 除了致力于业务发展,Alliance Memory还积极履行企业社会责任,关注环境保护和社会公益事业。公司采取了一系列可持续发展的举措,包括节能减排、资源循环利用等,努力降低对环境的影响。此外,Alliance Memory还参与各种公益活动,支持教育、环保和社区发展等领域的项目,为社会做出积极贡献。

Advanced Interconnections Corp公司的发展小趣事

随着市场竞争的加剧,AIC公司意识到品质是赢得客户信赖的关键。于是,公司加大了对生产过程的管控力度,从原材料采购到生产流程,再到产品检验,都实行了严格的质量控制。同时,AIC公司还建立了完善的售后服务体系,及时响应客户需求,解决产品使用过程中出现的问题。这些举措使AIC公司的产品赢得了客户的广泛好评,进一步巩固了市场地位。

Eon公司的发展小趣事

随着全球对环保和可持续发展的关注日益增加,E.ON也开始加快绿色能源转型的步伐。公司加大了对可再生能源的投资力度,积极开发风电、太阳能等清洁能源项目。同时,E.ON还积极推广智能电网技术,提高能源利用效率,降低环境污染。

Abbotec Incorporated公司的发展小趣事

Abbotec Incorporated公司自成立以来,一直致力于电子技术的研发与创新。在某一年,公司研发团队成功开发出一款具有划时代意义的芯片,这款芯片在性能上大幅提升,同时降低了能耗。这一技术突破迅速引起了业界的关注,Abbotec因此获得了大量的订单,公司规模迅速扩大。

Diodes Incorporated公司的发展小趣事

随着技术的不断进步,Diodes Incorporated始终保持着对新技术研发的投入。其中,公司推出的首款碳化硅(SiC)萧特基势垒二极管(SBD)就是一个重要的里程碑。这款产品的推出,不仅大幅提高了半导体器件的效率和高温可靠性,还满足了市场对降低系统执行成本和减少维护需求的期望。这一技术创新的突破,进一步巩固了Diodes Incorporated在半导体行业中的领先地位。

Electronicon Kondensatoren GmbH公司的发展小趣事

1992年,ELECTRONICON成立了卷绕电容器部门,并专注于该领域的研发与生产。该部门拥有238名员工,致力于为客户提供高品质的照明、电机和电力电容器产品。随着部门的不断发展壮大,ELECTRONICON在电容器领域的市场份额也得到了进一步提升。

问答坊 | AI 解惑

请大家说说串口在线升级的方法

请大家有相关经验或者认识的说说串口在线升级的方法,大概有哪些思路? 主要是如何固定一些不需要升级的文件,如何将非升级文件与升级文件在FLASH中分区存放?…

查看全部问答>

求救,路由器固件修改

公司购买了无线网桥做集成,打算更换固件LOGO图片,有没有啥办法呢? 、 忘各位高手指点几分…

查看全部问答>

ADC设计,能够输入电压,也能够输入电流。电压0-5V。电流4-20mA。那位大侠能帮帮忙

本帖最后由 dontium 于 2015-1-23 13:36 编辑 那位大侠能帮帮忙,设计一个8路ADC,需要电压和电流都能够输入。用户通过跳线来选择输入方式。电压0-5V,电流4-20mA。不省感激。谢谢分享 …

查看全部问答>

程序编译报错,帮忙看看

volatile unsigned int *xy=(volatile unsigned int *)0x3401; 编译,这句话报错: erro:"declaration may not appear after executable statement in block" 是什么地方出了问题? #define conval 0x15 .. unsigned int a=conval; 也报 ...…

查看全部问答>

通讯问题

用430单片机的USART异步串行通讯时,如果定义的变量是整型的即有16个二进制位,能不能直接赋给只有八位的UTXBUF?直接赋高八位会丢失吗?…

查看全部问答>

M3中A/D的触发方式的区别?

请教各位大神: 在M3中A/D触发中的处理器触发是什么意思,原理是什么啊? 还有连续触发又是咋个回事?哎,不懂啊!!!…

查看全部问答>

关于今年的北京市电子设计大赛

今年北京市电子设计大赛用的是MSP-EXP430G2231 launchpad,大家感觉会出什么类型的题目…

查看全部问答>

【视频分享】SimpleLink WiFi CC3000快速体验

TI工程师Nick为您介绍快速使用CC3000 FRAM开发包的经验。CC3000 FRAM开发包包括了MSP430 FRAM EVM板,CC3000模组EVM板,不含电池的3A电池盒,以及用于接入无线网络的无线路由器。 $(\'swf_ypz\').innerHTML=AC_FL_RunContent(\'width\', \'550\', ...…

查看全部问答>

【C2000 LaunchPad】我的小四轴原理图

尺寸:40mmX40mm 原理图几PCB下载:大神们有空帮我看看有没有错误。 大家推荐下哪个厂的PCB打样性价比高些。没钱啊…

查看全部问答>