当前位置: 首页 > wzjs >正文

新开传奇网站大全wordpress 图集插件

新开传奇网站大全,wordpress 图集插件,网站制作功能多少钱,浙江省城乡住房建设厅网站1. 什么是中断? 中断(Interrupt) 是一种计算机系统中的重要机制,允许CPU在执行主程序的过程中,能够对外部或内部的特定事件作出快速响应。当中断发生时,CPU暂停当前的任务,转而执行对应的中断服…

1. 什么是中断?

中断(Interrupt) 是一种计算机系统中的重要机制,允许CPU在执行主程序的过程中,能够对外部或内部的特定事件作出快速响应。当中断发生时,CPU暂停当前的任务,转而执行对应的中断服务函数(ISR, Interrupt Service Routine),处理完毕后再恢复到原任务继续执行。

中断的作用是提高系统的响应速度和实时性,避免采用轮询(Polling)方式带来的CPU资源浪费。


2. 中断执行机制

中断的执行流程如下:

  1. 中断事件发生:可能来自外部设备(如串口、定时器、GPIO 触发)或内部异常(如除零错误)。
  2. NVIC(Nested Vectored Interrupt Controller)检测:NVIC 负责管理 Cortex-M4 的中断控制,包括优先级排序和嵌套处理。
  3. CPU 保存上下文:CPU 保留当前指令地址(PC)、状态寄存器(xPSR)及相关寄存器。
  4. 跳转到中断向量表(Vector Table):根据中断编号,跳转至相应的 ISR 处理函数。
  5. 执行 ISR:处理中断源的相关逻辑,如清除标志位、读取数据等。
  6. 恢复上下文:恢复寄存器数据,继续执行原来的主程序。

3. 普通函数执行与中断服务函数执行的区别

普通函数中断服务函数
通过函数调用执行由硬件或软件事件触发
需要手动调用由 CPU 自动调用
运行在主程序上下文运行在中断上下文
可以有返回值不能有返回值
可使用 while(1) 等循环需尽快执行完毕,避免阻塞主程序

中断函数必须尽量精简,避免占用 CPU 过多时间,否则会影响系统的实时性。


4. NVIC(中断管理控制器)

Cortex-M4 内核的 NVIC(Nested Vectored Interrupt Controller) 负责管理所有外部和内部中断,包括中断的使能、优先级管理以及嵌套控制

在 STM32F4 系列中,NVIC 相关寄存器如下:

  1. NVIC_ISERx(中断使能寄存器)
  2. NVIC_ICERx(中断清除寄存器)
  3. NVIC_ISPRx(中断挂起寄存器)
  4. NVIC_ICPRx(中断清除挂起寄存器)
  5. NVIC_IABRx(中断活动状态寄存器)
  6. NVIC_IPRx(中断优先级寄存器)

示例:使能 USART2 中断并配置优先级

c

复制

#define USART2_IRQn  38   // USART2 中断号void NVIC_Configuration(void)
{NVIC->ISER[USART2_IRQn / 32] = (1 << (USART2_IRQn % 32));  // 使能 USART2 中断NVIC->IP[USART2_IRQn] = (3 << 4);  // 设置优先级为3(较低)
}

5. 什么时候使用中断?

一般情况下,我们会在以下场景使用中断:

  1. 被动事件触发(不适合轮询方式)

    • 串口数据接收(UART RX)
    • 外部按键按下(GPIO 外部中断)
    • 传感器数据更新(I2C/SPI)
  2. 系统定时控制

    • 定时器溢出中断(Timer Overflow)
    • 任务切换(RTOS SysTick)
  3. 高优先级任务

    • 硬件异常(HardFault, BusFault)
    • DMA 传输完成(DMA Transfer Complete)

示例:配置 GPIO 外部中断

c

复制

void EXTI15_10_IRQHandler(void)
{if (EXTI->PR & (1 << 13)) // 读取中断挂起标志位{EXTI->PR = (1 << 13); // 清除标志位GPIOB->ODR ^= (1 << 0); // 切换 LED 状态}
}

6. 中断优先级

6.1 优先级比较

Cortex-M4 中断优先级分为抢占优先级(Preemptive Priority)响应优先级(Sub Priority)

  • 抢占优先级:决定是否能打断当前正在执行的中断
  • 响应优先级:决定多个相同抢占优先级的中断在同时到达时的处理顺序

优先级越小,优先级越高。例如:

  • 抢占优先级 0 > 1 > 2
  • 响应优先级 0 > 1 > 2(在相同抢占优先级下)

6.2 优先级分组计算公式

STM32F4 允许我们通过 AIRCR(Application Interrupt and Reset Control Register) 配置优先级分组,计算公式如下:

复制

优先级分组编码值 = 7 - 抢占优先级位数

示例:

  • NVIC_PriorityGroup_0(7-0=7):全部 4 位用于响应优先级
  • NVIC_PriorityGroup_4(7-4=3):4 位用于抢占优先级,仅 0 位用于响应优先级

配置代码:

c

复制

void NVIC_SetPriorityGrouping(uint32_t priority_group)
{SCB->AIRCR = (0x5FA << 16) | (priority_group << 8); // 设置优先级分组
}

7. 中断的具体配置

7.1 分组

c

复制

NVIC_SetPriorityGrouping(3);  // 选择合适的优先级分组

7.2 配置具体中断源

c

复制

NVIC_SetPriority(USART2_IRQn, 2, 1);  // 设置 USART2 中断的优先级

7.3 使能 NVIC

c

复制

NVIC_EnableIRQ(USART2_IRQn);  // 使能 USART2 中断

8. 中断服务函数(ISR)

8.1 ISR 的特点

  • 无返回值 (void)
  • 函数名固定,需符合 IRQHandler 格式
  • 尽量简短,避免执行耗时操作

8.2 ISR 格式

c

复制

void USART2_IRQHandler(void)
{if (USART2->SR & USART_SR_RXNE)  // 判断 RXNE 标志位(接收非空){char data = USART2->DR;  // 读取数据USART2->DR = data;  // 回显}
}

9. 总结

  • 中断是 CPU 处理异步事件的关键机制,适用于被动触发的事件。
  • NVIC 提供了中断管理功能,包括优先级控制和中断使能。
  • STM32F4 允许我们配置抢占优先级和响应优先级,根据应用需求设定分组。
  • ISR 需要尽量短小高效,避免影响系统性能

通过合理配置中断,可以让系统更加高效、实时响应外部事件。

http://www.dtcms.com/wzjs/582977.html

相关文章:

  • 临沂网站制作计划做红酒知名网站
  • 贵阳有做网站的公司吗wordpress图片编辑插件下载
  • 做网站的公司地址杭州广告设计公司
  • 购买网站开发服务费入账企业建站框架
  • 网站建设在哪里汕头市住建局
  • 大型网站建设历史如何把字体安装在wordpress
  • 营销型网站开发营销wx5 做网站可以么
  • 17zwd一起做网站wordpress安装通知栏
  • 建设网站的子文件夹江苏省建设执业资格注册中心网站
  • 做外贸的国际网站有哪些网站建设公司帮企业建站的目的
  • 做外贸网站需要注册公司吗珠海市官网网站建设价格
  • 网站设计提成多少钱河南网站建设企业
  • 网站建设进度总结期货贵金属网站源码建设
  • 自己建网站要多少钱wordpress导航代码
  • 网站开发怎么学济南物流行业网站建设工具
  • 网站如何做信誉认证化工集团网站建设 中企动力
  • 格朗图手表网站建设银行网站用户
  • 社交网站开发用到的技术云建站app
  • 创建网站的步骤是射阳网站设计
  • 广州自建网站哪家服务好网站界面设计修改要多少钱
  • seo站长教程电脑平面设计主要做什么
  • 能够做物理题的网站群晖搭建wordpress修改固定链接
  • 行业网站开发公司网站的服务器打不开
  • 2017网站建设公司排名网址2345
  • 茂名专业网站建设公司站长资源平台
  • 广东建设工程信息网站6创建全国文明城市要求街巷
  • 如何查询公司做没做网站设计师资格证
  • 类似于淘宝的网站建设方案网站动画效果用什么程序做的
  • 安徽省建设银行网站网络公司 网站源码
  • 南京网站建设 零云建站如何给网站添加外链