当前位置:首页 > 单片机 > 单片机
[导读]中断这个问题从学习stm32一开始就困扰着我,我想估计很多初学者都会有这样的问题。曾经问过隔壁实验室的职工,人家没告诉我,让我自己回去理解。同行是冤家,这句话很在理。首先提出我对几个中断的理解不了的问题:1

中断这个问题从学习stm32一开始就困扰着我,我想估计很多初学者都会有这样的问题。曾经问过隔壁实验室的职工,人家没告诉我,让我自己回去理解。同行是冤家,这句话很在理。

首先提出我对几个中断的理解不了的问题:

1、中断是干嘛的?

2、中断是如何从函数进入的?

3、中断相关设置是如何设置的?

第一个问题:关于中断可以有一个很形象的解释:你正在吃饭,突然尿急了,准备去尿尿,中断了吃饭的这一过程。从程序上解释就是吃饭可以分解为一系列的动作,称为主程序,每个动作相当于函数,组成了这个主程序。这时候你尿急了,产生了一个信号,相当于中断信号,告诉大脑CPU,现在尿急比较重要,不然会尿裤子。这时候大脑会停下吃饭这一主程序,去执行撒尿这程序,相当于中断服务程序。撒尿这个过程也是有一系列动作组成的,每个动作也相当于函数。这就是中断的产生。

第二个问题:中断是如何从函数进入的?这个问题困扰了我有一段时间,每个函数都有入口函数。那中断函数的入口是什么呢?我在查找手册和资料的时候,所有答案都告诉我是中断服务函数:

void XXX_IRQHandler(void)

{


}

可是回到主函数中怎么也找不到这个XXX_IRQHandler(void)这个函数作为入口,很难理解。其实中断函数的入口确实就是终端服务函数,但是主程序中不需要单独的函数入口。中断的进入是其实是靠检测中断标志位进入的。以这段代码为例:

void USART3_IRQHandler(void)

{

u8 res;

if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)

{

res =USART_ReceiveData(USART3);

if((USART3_RX_STA&(1<<15))==0);

{

if(USART3_RX_STA

{

TIM_SetCounter(TIM7,0);

if(USART3_RX_STA==0)

{

TIM_Cmd(TIM7,ENABLE);

}

USART3_RX_BUF[USART3_RX_STA++]=res;

}else

{

USART3_RX_STA|=1<<15;

}

}

}

}

这段程序主要是想如果串口三的数据是满的if((USART3_RX_STA&(1<<15))==0);则不接受其他数据,如果是没有超过接收数据,但接收时间超过定时器里面的时间,则强制接收完成。

这里的中断其实就是通过 if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)这句代码来进入的,这是stm32内部进行的,这里的USART_IT_RXNE是接收中断标志位,只要串口USART3接收到数据,就会自觉的进入中断,而不需要在主函数中提供中断函数的入口。还是拿人尿急比喻,大脑CPU接收到尿急的中断标志之后,自觉的进入尿尿的各个动作(各个函数),而不需要在吃饭这个主程序中刻意地加入尿尿这一步骤。总结起来就:中断不要入口,只要系统检测到了一个中断标志,系统就会干中断服务函数要求干的事情。

第三个问题:中断的设置。中断设置主要分为三个部分:1)中断开启,2)中断优先级设置,3)中断服务函数设置。1)中断开启很好理解,开启要说明开启的资源,和中断标志。这里的资源是指是串口、定时器等等,中断标志就是一种资源往往有很多种中断标志比如串口的中断就有:USART_IT_PE(奇偶错误中断)、USART_IT_TXE(发送中断)、USART_IT_TC(传输完成中断)、USART_IT_RXNE(接收中断)、USART_IT_IDLE(空闲总线中断)、USART_IT_LBD(LIN中断检测中断)、USART_IT_CTS(CTS中断)、USART_IT_ERR(错误中断)这些中断标志。2)中断优先级主要是通过NVIC(嵌套中断向量器)来设置的,这个寄存器主要是用来确定各个中断的优先级的,决定不同中断的执行顺序。仍然以吃饭举例,吃饭期间尿急了,同时手机来个电话,也就是执行吃饭这个主程序的时候来了两个中断标志,这时候先执行哪一个是由设置NVIC来决定先接电话还是先撒尿。3)中断服务函数主要包括两部分,一部分是就是具体执行中断的函数,就好比是撒尿的步骤和接电话的步骤都是在中断服务函数里执行的,另一部分是消除中断标志,这个中断事件都干完了,自然要消除中断,撒尿完了,自然要解除尿急的中断标志。

以上就是初学中断过程中容易困扰的问题。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭