历史上的今天
返回首页

历史上的今天

今天是:2025年02月28日(星期五)

正在发生

2020年02月28日 | 嵌入式stm32学习:外部中断

2020-02-28 来源:eefocus

bsp_exti.h


#ifndef __EXTI_H

#define __EXTI_H


#include "stm32f4xx.h"


//引脚定义

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

#define KEY1_INT_GPIO_PORT                GPIOA

#define KEY1_INT_GPIO_CLK                 RCC_AHB1Periph_GPIOA

#define KEY1_INT_GPIO_PIN                 GPIO_Pin_0

#define KEY1_INT_EXTI_PORTSOURCE          EXTI_PortSourceGPIOA

#define KEY1_INT_EXTI_PINSOURCE           EXTI_PinSource0

#define KEY1_INT_EXTI_LINE                EXTI_Line0

#define KEY1_INT_EXTI_IRQ                 EXTI0_IRQn


#define KEY1_IRQHandler                   EXTI0_IRQHandler


#define KEY2_INT_GPIO_PORT                GPIOC

#define KEY2_INT_GPIO_CLK                 RCC_AHB1Periph_GPIOC

#define KEY2_INT_GPIO_PIN                 GPIO_Pin_13

#define KEY2_INT_EXTI_PORTSOURCE          EXTI_PortSourceGPIOC

#define KEY2_INT_EXTI_PINSOURCE           EXTI_PinSource13

#define KEY2_INT_EXTI_LINE                EXTI_Line13

#define KEY2_INT_EXTI_IRQ                 EXTI15_10_IRQn


#define KEY2_IRQHandler                   EXTI15_10_IRQHandler


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


void EXTI_Key_Config(void); //中断按键配置


#endif /* __EXTI_H */


/*********************************************END OF FILE**********************/


bsp.exti.c


#include "./key/bsp_exti.h"


 /**

  * 配置嵌套向量中断控制器

  */

static void NVIC_Configuration(void)

{

  /* 创建一个NVIC中断控制器 */

  NVIC_InitTypeDef NVIC_InitStructure;


  /* 配置NVIC为优先级组1 */

  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);


  /* 配置抢占优先级:1 */

  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;

  /* 配置子优先级:1 */

  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;

  /* 使能中断通道 */

  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;


  /* 配置中断源:按键1 */

  NVIC_InitStructure.NVIC_IRQChannel = KEY1_INT_EXTI_IRQ;

  NVIC_Init(&NVIC_InitStructure);


  /* 配置中断源:按键2 */  

  NVIC_InitStructure.NVIC_IRQChannel = KEY2_INT_EXTI_IRQ;

  NVIC_Init(&NVIC_InitStructure);

}


 /**

  * 配置PA0为线中断口,并设置中断优先级

  */

void EXTI_Key_Config(void)

{

    GPIO_InitTypeDef GPIO_InitStructure; 

    EXTI_InitTypeDef EXTI_InitStructure;


  /* 开启按键GPIO的时钟 */

  RCC_AHB1PeriphClockCmd(KEY1_INT_GPIO_CLK|KEY2_INT_GPIO_CLK ,ENABLE);


  /* 是能SYSCFG时钟 */

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);


  /* 配置NVIC */

  NVIC_Configuration();


  /* 选择按键1的引脚 */ 

  GPIO_InitStructure.GPIO_Pin = KEY1_INT_GPIO_PIN;

  /* 设置引脚为输入模式 */ 

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;              

  /* 设置引脚不上拉也不下拉 */

  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;

  /* 使用上面的结构体初始化按键1 */

  GPIO_Init(KEY1_INT_GPIO_PORT, &GPIO_InitStructure); 


  /* 连接EXIT中断源到key1引脚 */

  SYSCFG_EXTILineConfig(KEY1_INT_EXTI_PORTSOURCE,KEY1_INT_EXTI_PINSOURCE);


  /* 选择EXIT中断源 */

  EXTI_InitStructure.EXTI_Line = KEY1_INT_EXTI_LINE;

  /* 中断模式 */

  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;

  /* 下降沿触发 */

  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;  

  /* 使能中断/事件线 */

  EXTI_InitStructure.EXTI_LineCmd = ENABLE;

  /* 使用上面结构体初始化中断 */

  EXTI_Init(&EXTI_InitStructure);


  /* 选择按键2的引脚 */ 

  GPIO_InitStructure.GPIO_Pin = KEY2_INT_GPIO_PIN;  

  /* 使用上面的结构体初始化按键2 */

  GPIO_Init(KEY2_INT_GPIO_PORT, &GPIO_InitStructure);      


  /* 连接EXIT中断源到key2引脚 */

  SYSCFG_EXTILineConfig(KEY2_INT_EXTI_PORTSOURCE,KEY2_INT_EXTI_PINSOURCE);


  /* 选择EXIT中断源 */

  EXTI_InitStructure.EXTI_Line = KEY2_INT_EXTI_LINE;

  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;

  /* 上升沿触发 */

  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;  

  EXTI_InitStructure.EXTI_LineCmd = ENABLE;

  EXTI_Init(&EXTI_InitStructure);

}

推荐阅读

史海拾趣

Compensated Devices Inc公司的发展小趣事

Compensated Devices Inc(简称CDI)最初是一家小型电子元件制造商,专注于生产高精度电阻器。随着科技的飞速发展,传统电阻器已无法满足新兴市场的需求。CDI的创始人李先生敏锐地洞察到这一点,决定投入大量资源进行研发,推出了具有温度补偿和自动校准功能的新型电阻器。这一创新产品迅速获得了市场的认可,CDI也因此逐渐在电子行业中崭露头角。

Esico-Triton公司的发展小趣事

近年来,Esico-Triton越来越重视企业的可持续发展和社会责任。公司开始着手研发更加环保的电子产品,减少有害物质的使用,推动循环经济的发展。此外,Esico-Triton还积极参与社会公益活动,支持教育事业和环境保护项目,以实际行动回馈社会。这些举措不仅提升了公司的品牌形象,也为电子行业的可持续发展树立了典范。

Dynawave Incorporated公司的发展小趣事

在快速发展的过程中,Dynawave意识到企业文化的重要性。他们注重培养员工的团队合作精神和创新能力,鼓励员工积极参与公司的各项活动。同时,公司还建立了完善的激励机制和福利制度,为员工提供了良好的工作环境和发展空间。这些举措增强了员工的归属感和忠诚度,为公司的长期发展奠定了坚实的基础。

Dell公司的发展小趣事

随着市场的扩大,Dynawave面临着产品质量管理的挑战。为了确保产品的稳定性和可靠性,公司决定引入国际先进的质量管理体系。他们聘请了专业的质量管理团队,对生产流程进行严格的监控和把控。同时,公司还加大了对员工的培训力度,提高了员工的质量意识。这些措施有效地提升了产品的质量水平,增强了客户的信任度。

硕颉(BITEK)公司的发展小趣事

尽管硕颉科技在知识产权方面做出了积极努力,但仍难免面临专利诉讼的挑战。在某次与凹凸科技的专利侵权诉讼中,公司虽然一度面临败诉和永久禁制令的风险,但硕颉科技迅速应诉,积极应对。最终,美国联邦巡回上诉法院废除了原判决,公司得以自由销售被诉产品,不受任何限制。这次诉讼的胜利,不仅展示了硕颉科技在应对法律挑战方面的决心和能力,也为公司的长远发展奠定了坚实基础。

Acutechnology公司的发展小趣事

Acutechnology公司自XXXX年创立之初,便专注于电子技术的研发与创新。创始团队由一群富有经验的电子工程师组成,他们对市场趋势有着敏锐的洞察力。在初创期,公司集中资源投入到一项具有前瞻性的技术研发项目中,经过多次试验和改进,最终成功开发出了一款具有竞争力的电子产品,为公司的后续发展奠定了坚实的技术基础。

问答坊 | AI 解惑

写给symbian os开发初学者

1.没有人强迫你,是你志愿选择了symbian os. 2.这是最重要的问题,开发symbian 平台的软件到底有没有前途呢?每个symbian os的开发者都在考虑这个的问题,答案很简单,问问市场就知道了,只要你做的是精品,肯定会得到认可的。全球每年生产几亿部 ...…

查看全部问答>

对飞思卡尔感兴的朋友进来坐坐

我正在学习MX51 ,现在网上这方面资料太少了,希望各位大虾多多指点,一起交流。 我的QQ:732393618…

查看全部问答>

致嵌入式初学者----川科创新(CTIC)

其实从事什么行业不重要,重要的是你能否成为这个行业的精英!! 如果这个问题解决了, 那你的人生已经成功了一半。记住先解决目标: 因为你不知道自己努力的方向,加油是没有用的。人的潜能是无限的, 但人的精力是有限的,不可能所有的事 ...…

查看全部问答>

求友善之臂SBC2410光盘资料包含vivi等内核源码

如题“ 求友善之臂SBC2410光盘资料包含vivi等内核源码” 在线等待,急用........ 哪个兄弟有, 恳请您给我发一个 ,在下不胜感激, 资料内容比较大,所以请您发到我的邮箱:804763993@qq.com 请注明您的eeworld号 我给你再追加100分 谢谢.....…

查看全部问答>

单机,调试内核时,无法进入调试状态,怎么回事?

Microsoft (R) Windows Debugger Version 6.11.0001.404 X86 Copyright (c) Microsoft Corporation. All rights reserved. Opened \\\\.\\pipe\\com_1 Waiting to reconnect... Connected to Windows XP 2600 x86 compatible target at (Wed ...…

查看全部问答>

c# wince 控制GPIO?

我用c#在2440上面编写应用程序,开发速度快~ 但是c#怎么碰到底层硬件,怎样直接控制2440的GPIO, evc当中有个内存映射的东西,但是在c#下面怎么搞?? 网上查了下,c#的都是LED的那个,但问题是 GPIO的话是不是得先要写个GPIO驱动的DLL,然后再去createfi ...…

查看全部问答>

寻找WIN CE 开发人员

正在找人开发基于WIN CE平台的PDA应用程序,有意者请联系QQ40326822 …

查看全部问答>

wince6.0 R3 IE Data Abort

最近将wince6从 R2升级到了R3, 发现ie在打开网页后出现Data Abort. 网页还是能打开。但是CPU占用率变化很大。经常上升到%100. 从MS的官方论坛发现了打了R3 09年12月份的补丁是必然会出现Data Abort的, 但是我安装的是R3没有添加任何补丁的也会出现 ...…

查看全部问答>

485通信抗干扰的问题。

设备名称:离心机 使用单片机控制板通过485控制变频器(RTU 9600) 现在遇到一个问题,马达的外壳与地线连接时通信容易中断,而且温控传感器信号受干扰。(变频器与离心机分别用过两个插头供电) 现在特郁闷,这东东有时正常工作,有时不行,有时半 ...…

查看全部问答>

CC2531 USB Dongle无法识别的问题

我用的是CC2530 Development Kit的开发板套件,在套件里,有个CC2531 USB Dongle,将这个USB Dongle插到电脑上的时候,提示无法识别,参照文档看的时候,上面有说要装个驱动,但是我搜了好久,也没发现它要装什么样的驱动才可以识别,哪位大侠可以 ...…

查看全部问答>