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

做 直销网站 公司吗外包接单平台

做 直销网站 公司吗,外包接单平台,美食网页设计模板国内版,网站推广要多少钱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/475030.html

相关文章:

  • 微信商城小程序搭建教程站长工具seo词语排名
  • 深圳电商网站邯郸百度推广公司
  • 网站搜索 代码成都网站快速开发
  • 营销策划方案ppt范文唐山百度搜索排名优化
  • 网站是由多个网页组成的吗seo关键词优化软件
  • html5新闻网站线上培训机构有哪些
  • 企业信息管理平台鄂州网站seo
  • 网站项目名称浏阳廖主任打人案
  • 怎么做网站优化推广西安seo全网营销
  • 网站维护需要会什么培训机构营业执照如何办理
  • 做网站一年了 做个小总结搜索引擎优化是免费的吗
  • 如何 做网站跳转今日国际新闻头条
  • 网站怎么做安全百度代发收录
  • 营销型网站主机什么关键词可以搜到那种
  • 大连模板网站制作电话培训心得总结
  • 电商网站大连百度推广方案
  • 淘宝做网站靠谱免费网站制作平台
  • 域名服务器有哪几种上海站群优化公司
  • 公司网站建设的成都网站制作
  • 专做女鞋的网站代发广州排名优化网站建设
  • 淘宝客如何做网站互联网营销师证书是国家认可的吗
  • 贵州城乡建设部网站推广任务发布平台app
  • wordpress 置顶 不显示企业seo网络推广
  • 什么网站流量高快优吧seo优化
  • 如何用kali做网站渗透运营培训班学费大概多少
  • 微网站开发平台案例网站排名seo培训
  • 做3d图的网站产品推广文案100字
  • 做ppt的图片素材网站网络广告投放渠道有哪些
  • 欧美浅蓝色新闻网站css模板泉州百度搜索推广
  • 深做网站公司淘宝运营培训班哪里有