历史上的今天
返回首页

历史上的今天

今天是:2024年11月05日(星期二)

正在发生

2021年11月05日 | STM32F103ZET6 — EXTI

2021-11-05 来源:eefocus

STM32F103ZET6  支持 20 个外部中断输入(EXIT0~EXIT19),其中有4个:


EXTI线16连接到PVD输出


EXTI线17连接到RTC闹钟事件


EXTI线18连接到USB唤醒事件


EXTI线19连接到以太网唤醒事件(只适用于互联型产品)




另外的16个均可以作为外部输入中断,其中:


EXIT0~EXIT4 有独立的中断向量


EXIT6~EXIT9 共享一个中断向量 EXTI9_5_IRQHandler


EXIT10~EXIT16 共享一个中断向量 EXTI15_10_IRQHandler


共享的中断向量需要在对应的 ISR 中通过读取 Pending 的标志位来判断到底是哪个信号上触发的中断




单板上,PE5/PE6 引脚通过通过上拉电阻连接到 Key1 和 Key2 上,Key1 和 Key2 的另一端连接 GND。


初始化配置 PE5/PE6 成为外部中断的流程如下:


1. 开启 AFIO 和 GPIO 的时钟


2. 配置 GPIO PE5/PE6 为上拉输入


3. 通过 AFIO 的 EXITCR 寄存器组配置 PE5/PE6 为外部 EXIT 中断的输入引脚


4. 配置 EXIT 寄存器,使能 PE5/PE6 的中断


5. 由于按下 Key 后,电平为低,故配置为下降沿产生中断


void SK_EXITInit(void)

{

    GPIO_InitTypeDef stGpioInit;

    EXTI_InitTypeDef stEXTIInit;

 

    /// Step 1 : Power On the AFIO and GPIOE

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO, ENABLE);

 

    /// Step 2 : Config the NVIC

    SK_SK_EXITNVICConfig();

 

    /// Step 3 : Config (PE5/PE6) As pull up input

    stGpioInit.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6;

    stGpioInit.GPIO_Mode = GPIO_Mode_IPD;

    GPIO_Init(GPIOE, &stGpioInit);

 

    /// Step 4 : Select the output interrupt source

    GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource5);

    GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource6);

 

    /// Step 5 : Select the output interrupt source

    stEXTIInit.EXTI_Line = EXTI_Line5 | EXTI_Line6;

    stEXTIInit.EXTI_Mode = EXTI_Mode_Interrupt;

    stEXTIInit.EXTI_Trigger = EXTI_Trigger_Falling;

    stEXTIInit.EXTI_LineCmd = ENABLE;

    EXTI_Init(&stEXTIInit);

}

由于 EXIT5~EXIT9 共享一个中断向量,故需要在中断中判断 Pending 标志位,便可知是哪个中断线上引起的中断:


void EXTI9_5_IRQHandler(void)

{

    if(EXTI_GetITStatus(EXTI_Line5) != RESET)

    {

        EXTI_ClearITPendingBit(EXTI_Line5);

        SK_SetLedStatus(SK_LED_1, SK_LED_ON);

        delay_ms(5000);

        SK_SetLedStatus(SK_LED_1, SK_LED_OFF);

    }

 

    if(EXTI_GetITStatus(EXTI_Line6) != RESET)

    {

        EXTI_ClearITPendingBit(EXTI_Line6);

        SK_SetLedStatus(SK_LED_2, SK_LED_ON);

        delay_ms(5000);

        SK_SetLedStatus(SK_LED_2, SK_LED_OFF);

    }

 

}


推荐阅读

史海拾趣

Fenfa Electronics Ltd公司的发展小趣事

作为一家有社会责任感的企业,Fenfa Electronics Ltd公司始终关注环境保护和社会公益。公司积极推动绿色生产和可持续发展战略,致力于减少生产过程中的能耗和排放。同时,Fenfa还积极参与各种社会公益活动,为当地社区和弱势群体提供帮助和支持。这些举措不仅提升了公司的社会形象,也为公司的可持续发展注入了新的动力。

Ericsson公司的发展小趣事

在19世纪70年代,Ericsson公司主要以修理电报机和其他电器仪表为主要业务。然而,随着电话技术的引入和普及,Ericsson敏锐地捕捉到了这一新技术带来的商机。公司创始人Lars Magnus Ericsson通过购买、拆解和维修电话机,迅速掌握了电话机制造技术。1878年,Ericsson公司成功推出了自己的电话机,并凭借其经济耐用的特点迅速赢得了市场认可,为公司的发展奠定了坚实的基础。

Bce Sud公司的发展小趣事

随着公司规模的扩大和市场份额的提升,Bce Sud开始实施国际化战略。公司先后在多个国家和地区设立了研发中心和销售网络,进一步扩大了市场份额。通过与国际知名企业的合作与交流,Bce Sud不断提升自身的技术水平和国际竞争力。

Elcos AG公司的发展小趣事

在电子科技日新月异的21世纪初,Elcos AG由一群志同道合的电子工程师创立。他们看到了电子元器件市场中的机遇,决定专注于研发和生产高性能的电子元器件。初始阶段,公司面临着资金紧张、技术挑战和市场认知度低的困境。然而,凭借对技术的执着和对市场的敏锐洞察,Elcos AG逐步攻克了技术难题,并通过与几家小型电子产品制造商的合作,打开了市场的大门。

G-Link Technology公司的发展小趣事

蜂鸟无线自2005年成立以来,始终将技术创新视为企业发展的核心驱动力。公司早期便组建了一支由行业顶尖专家组成的研发团队,专注于无线通信技术的突破。在2010年前后,蜂鸟无线成功研发出高效能无线路由器,该产品凭借其卓越的信号稳定性和传输速率,迅速在市场中脱颖而出,为公司赢得了首批忠实用户。此后,蜂鸟无线持续加大研发投入,不断推出新产品,如集成了先进加密技术的无线网卡和蓝牙设备,进一步巩固了其在无线通信市场的领先地位。

ADPOW公司的发展小趣事

ADPOW公司成立于XXXX年,初期是一个小型电子技术研发团队。创始人凭借对电子技术的深刻理解和市场需求的敏锐洞察,带领团队专注于电源管理技术的研发。经过数年的不懈努力,团队成功开发出一款高效、稳定的电源管理芯片,这一技术突破为ADPOW公司后续的发展奠定了坚实的基础。

问答坊 | AI 解惑

电子电路设计与实践

初学者可以拿去参考参考…

查看全部问答>

protelDXP2004原理图修改元件参数有什么快速方法

protelDXP2004原理图修改元件参数有什么快速方法呀。一个一个改好麻烦呀。:L…

查看全部问答>

基于MSP430 单片机高精度温度测量的补偿方法

用MSP430P315 单片机的A/D 转换器,实现阻性温度传感器的电阻检测;用查表和线性插值结合的方法,简化标度变换的算法结构。对电池电压的降低进行补偿的同时分析补偿电阻的精度对温度检测的影响。 …

查看全部问答>

软件工程师的职位规划

/************************************************ *技术直接转销售还是先转技术支持再转销售好呢? ************************************************/ 我是09年毕业的,毕业的时候,是在一家医疗器材公司工作。 最近换了一家公司,是搞 ...…

查看全部问答>

请教一点关于并口驱动开发的问题

老师让做一个dsp和pc通过并口epp通信的东西,在xp下对并口操作是不是要写个驱动?老板让我用WinDriver,我想问问关于并口开发要怎样调试呢?以前没有做过关于并口通信东西,所以想请问各位老大,希望能给指点一下…

查看全部问答>

请问一下

我的程序 无法进入中断程序 可能是什么原因? 我是用的下降沿有效啊…

查看全部问答>

请教evc中如何快速移动图片

在Wince中添加一个较大的位图,设想有一个相对较小的取景框,当这个框快速移动时,我想显示屏幕上位图移动的动画效果。我在evc中代码如下:          CBitmap m_bitmap;         BITMAP bm; ...…

查看全部问答>

帮我下一个外文文献

Kaiser, J.F., Nonrecursive digital filter design using the I0-sinh window function, Proceedings of the 1974 IEEE International Symposium on Circuits and Systems (1974) 请发送邮件到donghongyong@live.cn …

查看全部问答>

uboot怎样向kenerl传递一个物理地址

现在uboot中有个物理需要传到kernel中! 我该在uboot怎样做?请各位大虾指点下!!谢谢…

查看全部问答>

(北京)迎接Linux时代的到来

4月21日(周六)东方标准特邀请嵌入式软件仿真开源(SkyEye)项目核心成员、AKA 嵌入式小组成员康烁,为大家做《利用SkyEye进行操作系统分析及SkyEye的最新进展》的讲座。 康烁--作为自由软件爱好者,精通嵌入式系统移植,驱动开发,多年嵌入式开发 ...…

查看全部问答>