历史上的今天
返回首页

历史上的今天

今天是:2024年12月07日(星期六)

2021年12月07日 | STM32F4学习笔记4——外部中断

2021-12-07 来源:eefocus

EXTI每个中断/事件都有独立的触发和屏蔽,每个中断线专用的状态位,支宽度持多达23个软件的中断/事件请求,在检测脉冲宽度低于APB2时钟宽度的外部信号参见数据手册中的电气特性部分。


STM32F4xx可以处理外部或内部事件来唤醒内核(WFE),唤醒事件可以在外设的控制寄存器使能一个中断,但不在NVIC中使能,同时在M4的FPU系统控制寄存器中使能SEVONPEND位,当CPU从内核WFE中恢复后,取药清楚相应外设的中断刮起位和外设NVIC中断通道挂起位;或者配置一个外部或内部EXTI线为事件模式,当CPU从WFE恢复后,因为对应时间的挂起为没有被置位,不必清除相应外设的中断挂起位或NVIC中断通道挂起位。


要产生中断必须先配置好并使能中断线,根据需要的边沿检测设置两个触发寄存器,同时在中断屏蔽寄存器相应位写”1”允许中断请求。当外部中断线发生了期待的边沿时,将产生一个中断请求,对应挂起为被置”1”,在挂起寄存器对应位写1将清除该中断。如果需要产生事件,必须先配置好病史能事件线。根据需要的边沿检测通过设置两个触发寄存器,同时在事件屏蔽寄存器的相应位写1允许事件请求,当事件线上发生了需要的边沿时,将产生一个事件请求脉冲,对应挂起为不被置1。通过在软件中断/事件寄存器写1,也可以通过软件产生中断/事件请求。

硬件中断选择配置

·配置 23 个中断线的屏蔽位(EXTI_IMR)

·配置所选中断线的触发选择位(EXTI_RTSR 和 EXTI_FTSR)

·配置对应到外部中断控制器(EXTI)的 NVIC 中断通道的使能和屏蔽位,使得 23 个中断线中的请求可以被正确地响应。

硬件事件选择配置

·配置 23 个事件线的屏蔽位(EXTI_EMR)

·配置事件线的触发选择位(EXTI_RTSR 和 EXTI_FTSR)

软件中断/事件选择配置

·配置 23 个中断/事件线屏蔽位(EXTI_IMR, EXTI_EMR)

·设置软件中断寄存器的请求位(EXTI_SWIER)


外部中断/事件线路映像

·EXTI 线 0-15 线连接到各端口Pin的 0-15

·EXTI 线 16 连接到 PVD 输出

·EXTI 线 17 连接到 RTC 闹钟事件

·EXTI 线 18 连接到 USB OTG FS Wakeup 事件

·EXTI 线 19 连接到 Ethernet Wakeup 事件

·EXTI 线 20 连接到 USB OTG HS (configured in FS) Wakeup 事件

·EXTI 线 21 连接到 RTC Tamper and TimeStamp 事件

·EXTI 线 22 连接到 RTC Wakeup 事件


STM32F4的EXTI库

·通过函数 GPIO_Init()配置相应 I/O 是输入模式

·通过函数 SYSCFG_EXTILineConfig()将 I/O 复用到中断线

·通过函数 EXTI_Init()选择中断模式(interrupt, event)和触发方式(Rising, falling or both)

·通过函数 NVIC_Init(),将中断线映射到相应的 NVIC 中断通道。


void EXTI_DeInit(void)初始化EXTI寄存器到默认的复位值

void EXTI_Init(EXTI_InitTypeDef*EXXTI_InitStruct)初始化配置EXTI

/* Configure EXTI Line0 */

EXTI_InitStructure.EXTI_Line = EXTI_Line0;

EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;

EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;

EXTI_InitStructure.EXTI_LineCmd = ENABLE;

EXTI_Init(&EXTI_InitStructure);

在中断线的选择上要注意

EXTI0_IRQHandler

EXTI1_IRQHandler

EXTI2_IRQHandler

EXTI3_IRQHandler

EXTI4_IRQHandler

EXTI9_5_IRQHandler

EXTI15_10_IRQHandler

通过上面的函数可以发现,外部中断 5-9 是在一个中断服务服务程序,还有 10-15 也是这样。我们就需要利用if条件语句在中断五福程序中加以区分。

void EXTI_StructInit(EXTI_InitTypeDef*EXTI_InitStruct)用于EXTI结构成员初始化

void EXTI_GenerateSWInterrupt(unit32_t EXTI_Line)实现软件方式的中断触发

FlagStatus EXTI_GetFlagStatus(unit32_t EXTI_Line)查询外部中断标志,判断中断是否发生

ITStatus EXTI_GetITStatus(unit32_t EXTI_Line)同上查询外部中断标志,判断中断是否发生

void EXTI_ClearFlag(unit32_t EXTI_Line)清除中断标志,不清除会一直进入中断

void EXTI_ClearITPendingBit(unit32_t EXTI_Line同上)清除中断标志,不清除会一直进入中断

推荐阅读

史海拾趣

GeneSiC Semiconductor公司的发展小趣事

GeneSiC Semiconductor公司的发展故事

故事一:技术先驱与高性能SiC器件的开创

GeneSiC Semiconductor自成立以来,便致力于高性能碳化硅(SiC)功率器件的研发与生产。作为碳化硅技术的先驱,GeneSiC在2000年代初便开始布局,并成功开发出多款领先业界的SiC二极管和MOSFET技术。其产品覆盖从650V到6.5kV的广泛电压范围,满足从20W到20MW不同应用场景的需求。这些技术突破不仅提升了系统效率,还显著增强了设备的可靠性和耐用性,为汽车、工业和国防等多个领域带来了革命性的变化。

故事二:政府机构项目的深度参与

GeneSiC与全球多个政府机构紧密合作,参与了众多前沿技术研发项目。例如,为美国能源部(DOE)开发的6.5kV SiC晶闸管用于储能系统,以及为NASA金星探测任务提供的500°C单片集成SiC超结晶体管JBS二极管(MIDSJT)。这些项目不仅展示了GeneSiC在极端环境下的技术实力,还推动了SiC技术在关键领域的广泛应用。通过不断的技术创新与合作,GeneSiC在提升全球科技水平方面做出了重要贡献。

故事三:电动汽车市场的深度布局

随着电动汽车市场的快速崛起,GeneSiC迅速调整战略,将SiC技术应用于电动汽车的关键部件中。其高性能的SiC MOSFET和二极管不仅提升了电动汽车的充电效率和续航里程,还降低了电池系统的热损耗和重量。此外,GeneSiC还为快速充电站开发了高效、稳健的解决方案,如SK Signet的350kW快速充电器便采用了GeneSiC的SiC二极管,为电动汽车的快速普及提供了有力支持。

故事四:工业领域的广泛应用

在工业领域,GeneSiC的SiC技术同样展现出强大的竞争力。以埃克西德技术为例,该公司采用GeneSiC的SiC功率半导体,确保了其下一代工业材料处理设备的高频快速充电器的可靠性、安全性和易用性。GeneSiC的SiC MOSFET和MPS肖特基二极管在高频、大功率的应用场景下表现出色,为工业自动化和智能制造提供了强有力的技术支持。

故事五:与纳微半导体的战略合并

2022年,氮化镓(GaN)功率芯片领导者纳微半导体宣布收购GeneSiC Semiconductor,这一战略合并标志着两家公司在下一代功率半导体领域的强强联合。合并后的公司不仅拥有全面的SiC和GaN技术组合,还通过资源整合和市场拓展,进一步巩固了其在全球功率半导体市场的领先地位。GeneSiC的丰富技术积累和纳微半导体的市场渠道优势相结合,为双方带来了新的增长动力和市场机遇。

Alliance Fiber Optics Products Inc公司的发展小趣事

随着技术的不断进步,AFOP在光纤元件领域取得了重大突破。公司成功研发出一系列高品质的光纤元件和集成模块,如波分复用光电二极管、光衰减器等,这些产品在光网通信领域具有广泛的应用。同时,AFOP还注重产品升级和迭代,根据市场需求和客户反馈,不断优化产品性能和质量,赢得了客户的广泛认可。

ANADIGICS公司的发展小趣事

在1995年,台湾人章启侨在美国加州创立了AFOP。当时的电子行业正处于光纤通信技术的蓬勃发展时期,章启侨凭借对市场的敏锐洞察,将公司的业务聚焦于光纤通信主被动元件的设计与制造。在创立初期,AFOP面临着技术、资金和市场等多方面的挑战,但章启侨带领团队不断攻克难关,逐渐在市场中站稳脚跟。

ELM [ELM Electronics]公司的发展小趣事

ELM始终将品质管理作为公司发展的核心。公司建立了完善的质量管理体系,从原材料采购到生产、检测、包装等各个环节都进行严格的质量控制。同时,ELM还注重客户需求和反馈,不断优化产品和服务,以满足客户的个性化需求。这些举措使得ELM的产品在市场上享有很高的声誉和口碑,客户满意度持续提升。

Bellin公司的发展小趣事

ELM始终将品质管理作为公司发展的核心。公司建立了完善的质量管理体系,从原材料采购到生产、检测、包装等各个环节都进行严格的质量控制。同时,ELM还注重客户需求和反馈,不断优化产品和服务,以满足客户的个性化需求。这些举措使得ELM的产品在市场上享有很高的声誉和口碑,客户满意度持续提升。

CSB公司的发展小趣事

在电子行业的初期,CSB公司以其独特的技术创新能力脱颖而出。公司研发团队在某一关键领域取得了重大突破,开发出了一款具有市场竞争力的新产品。这款产品不仅满足了消费者对性能和品质的高要求,还凭借其独特的设计和功能,吸引了大量忠实用户。随着产品的热销,CSB公司的知名度逐渐提升,市场份额也稳步增长。

问答坊 | AI 解惑

由"田中坤"老师撰写的数字示波器设计文档

由"田中坤"老师撰写的数字示波器设计文档,不错 基于Mini51板硬件资源,构思数字示波器的方案已经思考很久了,总是没有集中的时间,一个稍微复杂的设计完成创作需要集中的时间才能完成,这次利用学期结束的一段集中时间,完成了基于LCD12864显 ...…

查看全部问答>

2440init.s中的疑惑

;//将程序从nandflash拷贝到sdram ;=========================================================== nand_boot_beg         bl        ClearSdram       &nbs ...…

查看全部问答>

【转载】虎年新晶片組体验ASUS P7H55D-M EVO 开箱介紹

ASUS, P7H55DM-EVO, 華碩, LGA1156, H55 自從INTEL一舉推出新世代內顯CPU之後,也等於宣告以後的INTEL主機板晶片組上北橋將走入歷史,這新的單晶片組命名為H55 Express以及H57 Express,是為LGA-1156插槽的CPU專門設計的,它是基於原本的P55晶片 ...…

查看全部问答>

嵌入式操作系统,允许任务优先级相同情况下,事件等待怎么处理?(分数不够可再加)

加入同优先级任务时,事件等待表中不能单纯地将任务挂到事件等待表中了,因为多个同优先级任务等待情况下 不能区分到底是哪个任务等待的这个事件。请问怎么解决这个问题?…

查看全部问答>

请教SDRAM存储问题

俺最近开发的产品上用了两片SDRAM,单芯片的容量为512Mbit,4个bank,每个bank容量是8192*512*32bit(也就是13根row,9根colum,每个单元32bit宽),而I/O(数据线)是16根,连接CPU(32bit指令)时第一个SDRAM的数据线(16跟)接CPU数据线的D[0~15] ...…

查看全部问答>

Image is too large for current RAM and RAMIMAGE settings

RAM AutoSize: RAM Start=8ad80000 RAM Size=fb280000 请问这里报RAM Size=fb280000, 是什么意思,有这么大么?…

查看全部问答>

求助:我的2810板子还没有烧程序被lock

flash的电源也有3.3V了,复位也是3.3V了,最主要的是用仿真器也连上了,可刚要下载就出现要密码。试过全F不行,这芯片我没有烧过程序,也load过gel文件了。可是出现GEL: Error loading file \'D:\\CCStudio_v3.1\\cc\\gel\\c2810.gel\': function \ ...…

查看全部问答>

TMS320LF2407A的奇怪问题

我用TMS32LF2407做了一个非常小的系统。全部工作就是用XF管脚控制一个LED的闪烁。我把程序烧进FLASH后,用防真器带着跑(MP/MC#=0),程序正常运行。但是我把防真器去掉,重新上电后,程序不能正常运行。我分析,程序没有执行。我很想知道,为什么 ...…

查看全部问答>

9B96 与 9D96

请问9B96和9D96有啥区别啊?  还有8962上的flash 和 ram都用完了, 除了换9B/ 9D有EPI外,有没有别的方法?还有哪些芯片可以外接ram和flash的?谢谢!…

查看全部问答>

多谢帮忙!

请帮忙一下. 能否找得到    S9S12D64F0MFUER    FREESCALE   750PCS/盘 这种包装方式的尺寸规格资料. ( 带长,宽,间隔距离 ) 客人需要这个尺寸资料,来编程, 用机器来烧录. 多谢!  ( 单颗单颗物 ...…

查看全部问答>