完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
|
相关推荐
1个回答
|
|
stm32学习之中断事件 相信很多小伙伴们早已在51系列的板子上接触中断,大概的概括便是:正在看电影的你,突然来了快递,你暂停了电影去签收了快递,回来继续看电影这便是一级中断。而多级中断也是一样,优先级高的就优先处理,就如在你去签收快递的时候,电话突然来了,电话的优先级更高,所以优先接电话。
而STM32F10x 芯片有 84 个中断通道,包括 16 个内核中断和 68 个可屏蔽中断,他有着自己的中断控制器NVIC,NVIC有控制着中断的相关功能(其中包括中断源、抢占优先级、响应优先级、中断的使能与失能)的功能。每一个中断都有着自己的地址,一旦中断来,cpu便会去到相应的地址处理相对应的中断,这个地址叫中断向量,以下是stm32f1对应的向量表: 在介绍中断的配置之前,优先级的知识梳理一下,一个中断的优先级由两部分决定,一个是抢占式优先级,还有一个是响应优先级。两个优先级组成了一个4位的控制字。 中断优先级分组,因为中断优先级只使用了高4位,所以,中断优先级的分组分别有以下几种情况: 在这连接一个大佬的文章:https://blog.csdn.net/qq_35547767/article/details/82688811 好了,接下来的是有关事件和中断的科普,事件中断和软件中断有什么区别呢,简单来说,事件是外接设备状态变化来了电平信号,不用通过软件的服务函数,仅仅靠硬件便能得到结果,而中断是要cpu的参与,中断来了之后通过写好的中断函数去处理中断。如图,3这个或门的另一个输入是软件中断/事件寄存器,软件可以优先于外部信号请求一个中断或事件,即当软件中断/事件寄存器的对应位为"1"时,不管外部信号如何,编号3的或门都会输出有效信号。4号和6号的屏蔽器用与门来控制。 在此连接一个大佬的文章:https://www.cnblogs.com/smartjourneys/articles/7363114.html 好了,明白这些基础知识后,开始配置中断函数,首先,我要做的是按键中断实验,当按下key0时,led灯状态翻转,先是配置EXTI(外部中断控制器),在这里,小伙伴们可能会问,怎么扯上这个EXTI,是这样的,中断有份外部中断和内部中断,内部中断是指内部定时器、串口、AD、IIC、SPI等等资源的中断,而外部中断则是外部信号引起的中断,如高电平、低电平、上升沿、下降沿等。我做的是外部中断,所以要配置EXTI控制器,其实也是照猫画虎一样,配置EXTI的结构体: EXTI_InitTypeDef Extra; Extra.EXTI_Line=EXTI_Line4; //EXTI4对应GPIO的PA4-PG4 Extra.EXTI_Mode=EXTI_Mode_Interrupt; Extra.EXTI_Trigger=EXTI_Trigger_Falling; Extra.EXTI_LineCmd=ENABLE; EXTI_Init(&Extra); GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource4);//选择GPIOE,4的引脚作为中断发生源 然后要配置的是NVIC的结构体: NVIC_InitTypeDef Press; Press.NVIC_IRQChannel=EXTI4_IRQn; Press.NVIC_IRQChannelSubPriority=2; Press.NVIC_IRQChannelPreemptionPriority=2; Press.NVIC_IRQChannelCmd=ENABLE; NVIC_Init(&Press); 接下来要配置的是中断发生的服务函数,就是中断来了之后的处理函数: void EXTI4_IRQHandler() { /* key0¼üµÄ³õʼ»¯ */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE); GPIO_InitTypeDef pre; pre.GPIO_Pin=GPIO_Pin_4; pre.GPIO_Mode=GPIO_Mode_IPD; pre.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOE,&pre); GPIO_SetBits(GPIOE,GPIO_Pin_4); } 好了,代码就是这些了,要记得初始化key0的时钟是AFIO,至于LED的初始化在这里就不放上来了 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1771 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1619 浏览 1 评论
1070 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
724 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1673 浏览 2 评论
1936浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
729浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
569浏览 3评论
594浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
552浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 22:05 , Processed in 0.832100 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号