历史上的今天
返回首页

历史上的今天

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

正在发生

2018年09月29日 | STM32f4---外部中断实验代码(01)

2018-09-29 来源:eefocus

exit.c文件总共包含5 个函数。一个是外部中断初始化函数void EXTIX_Init(void),另外 4个都是中断服务函数。

void EXTI0_IRQHandler(void)是外部中断0 的服务函数,负责WK_UP 按键的中断检测;

void EXTI2_IRQHandler(void)是外部中断2 的服务函数,负责KEY2按键的中断检测;  

void EXTI3_IRQHandler(void)是外部中断3 的服务函数,负责KEY1按键的中断检测;

void EXTI4_IRQHandler(void)是外部中断4 的服务函数,负责KEY0按键的中断检测;

extic.c代码如下:

//外部中断0服务程序

void EXTI0_IRQHandler(void)

{    

delay_ms(10); //消抖

  if(WK_UP==1)    

  {   BEEP=!BEEP; //蜂鸣器翻转  

  }      

    EXTI_ClearITPendingBit(EXTI_Line0); //清除 LINE0上的中断标志位  

}  

//外部中断2服务程序

void EXTI2_IRQHandler(void)

{    

delay_ms(10); //消抖

  if(KEY2==0)     

  {   LED0=!LED0;  

  }      

    EXTI_ClearITPendingBit(EXTI_Line2);//清除 LINE2上的中断标志位  

}

//外部中断3服务程序

void EXTI3_IRQHandler(void)

{    

delay_ms(10); //消抖

  if(KEY1==0)    

  { LED1=!LED1;

  }      

    EXTI_ClearITPendingBit(EXTI_Line3);  //清除 LINE3上的中断标志位   

}

//外部中断4服务程序

void EXTI4_IRQHandler(void)

{   

  delay_ms(10); //消抖

  if(KEY0==0)    

  {  LED0=!LED0;  

    LED1=!LED1;  

  }      

    EXTI_ClearITPendingBit(EXTI_Line4);//清除 LINE4上的中断标志位   

}      

//外部中断初始化程序

//初始化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_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_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


推荐阅读

史海拾趣

3E SECURITY公司的发展小趣事

随着网络安全威胁的不断加剧,电子安全行业面临着前所未有的挑战。3E SECURITY公司紧跟行业趋势,加强了网络安全服务的研发和推广。公司推出了一系列网络安全解决方案,帮助客户有效应对各类网络攻击和数据泄露风险。同时,公司还加强了对客户的安全培训和技术支持,提升了客户的安全意识和应对能力。

超霸(GP)公司的发展小趣事

绿索超容在追求经济效益的同时,始终不忘履行社会责任。公司积极响应国家绿色发展的号召,致力于环保事业和可持续发展。在产品研发和生产过程中,绿索超容始终坚持绿色、低碳、环保的理念,采用环保材料和工艺,减少对环境的影响。此外,公司还积极参与社会公益活动,为社会贡献自己的力量。这些举措不仅提升了绿索超容的企业形象,也为其在电子行业中树立了良好的口碑。

Accelink Technologies Co Ltd公司的发展小趣事

绿索超容深知技术创新是企业发展的核心动力。因此,公司积极与东南大学、南京大学等高校开展合作,引入具有自主知识产权的独特技术和工艺,成功开发出GS系列有机双电层超级电容及模组。这些产品不仅在性能上达到了国际领先水平,还获得了多项技术专利。技术上的突破,不仅提升了绿索超容的市场竞争力,也为其赢得了业界的广泛认可。

ACI [Applied Concepts, Inc.]公司的发展小趣事

在环保意识日益增强的今天,ACI公司积极响应国家号召,将绿色环保理念融入产品设计和生产过程中。公司采用环保材料和生产工艺,推出了一系列绿色电子产品。这些产品不仅具有优异的性能,而且符合环保标准,得到了消费者的广泛认可。通过倡导绿色环保理念,ACI成功引领了行业潮流,树立了良好的企业形象。

福斯特(FIRST)公司的发展小趣事
对于微弱的传感器信号,可能需要进行放大处理以提高信号的信噪比。
DC Components公司的发展小趣事

在电子行业中,产品质量是企业立足之本。DC Components公司深知这一点,因此始终把质量控制放在首位。公司通过实施严格的质量控制系统,确保每一个产品都符合高质量标准,并符合所有合同要求。这种对质量的坚守,使DC Components公司在市场上赢得了良好的口碑,吸引了众多客户的青睐。

问答坊 | AI 解惑

时钟速度到底是什么意思?

CPU的运行频率,单位为Mhz,数字愈大代表CPU执行指令的速度愈快。…

查看全部问答>

DSP与嵌入式

呵呵,从某种角度来说嵌入式的广度似乎可以很大很大,两个有着很大的关联,上我们嵌入式的老师就是研究dsp的!哈哈,先还是看看编程吧! 决定了,换个标题!…

查看全部问答>

wince如何开机自动旋转LCD为竖屏

我的板子是横屏,开机的时候需要自动调整成竖屏,也就是旋转90度,请问大家我如何设置,是需要修改注册表呢还是更改LCD驱动呢?我的板子上自带的应用软件可以完成LCD旋转,说明驱动是支持旋转的;我用的是wince 5.0,最好是两种都说一下,详细点, ...…

查看全部问答>

如何通过代码调整RAM的对象存储区域(object store)和应用程序内存区域(program memory)的大小?

如何通过代码调整RAM的对象存储区域(object store)和应用程序内存区域(program memory)的大小? 这个是定制系统时设定的,现在不想重定制系统.同时也无法访问控制面板!…

查看全部问答>

arm开发时钟界面

要利用uc/os2操作系统和arm芯片, 在lcd上实现 时钟的那种界面(包括时,分,秒针还有圆的画面) 不知道怎么入手啊,用哪种语言开发较好,或有专门的开发环境吗…

查看全部问答>

wce 遇到错误

我在build的时候遇到如下错误 LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt Error executing link.exe. Creating browse info file... dlgnew.exe - 1 error(s), 0 warning(s) 我搜索了一下只有 ...…

查看全部问答>

为什么进入do语句之后,一直挑不出来。求高手指导

本帖最后由 paulhyde 于 2014-9-15 03:59 编辑 WDTCTL = WDTPW + WDTHOLD; BCSCTL1 &=~XT2OFF; //基础时钟控制寄存器BCSCTL1的第7位置0,使XT2启动 do { IFG1 &= ~OFIFG; for(i= 0xff; i>0; i--); } ...…

查看全部问答>