中断服务程序

STM32F103中断系统

▼魔方 西西 提交于 2020-01-19 04:40:55
一、中断介绍 1.1 中断概念 CPU执行程序时,由于发生了某种随机的事件(外部或内部),引起CPU暂时中断正在运行的程序,转去执行一段特殊的服务程序(中断服务子程序或中断处理程序),以处理该事件,该事件处理完后又返回被中断的程序继续执行,这一过程称为中断。引发中断的称为中断源。比如:看电视时突然门铃响,那么门铃响就相当于中断源。有些中断还能够被其他高优先级的中断所中断,那么这种情况又叫做中断的嵌套。 STM32F10x芯片有84个中断通道,包括 16 个内核中断和 68 个可屏蔽中断,这些中断通道已按照不同优先级顺序固定分配给相应的外部设备。 1.2 NVIC介绍 NVIC英文全称是Nested Vectored Interrupt Controller,中文意思就是嵌套向量中断控制器,它属于M3内核的一个外设,控制着芯片的 中断相关功能。由于ARM给NVIC预留了非常多的功能,但对于使用M3内核设计芯片的公司可能就不需要这么多功能,于是就需要在NVIC上裁剪。ST公司的STM32F103芯片内部中断数量就是NVIC裁剪后的结果。 中断控制相关寄存器在固件库core_cm3.h文件NVIC结构体内。可打开任意库函数工程即可查看到。 1.3 中断优先级 STM32F103芯片支持60个可屏蔽中断通道,每个中断通道都具备自己的中断优先级控制字节(8位

红外通信学习笔记2020/01/17

你。 提交于 2020-01-18 23:33:54
红外通信原理 一、红外通信的目的 实现两点间的近距离 保密通信和信息转发 二、红外通信组成 1、红外发射部分 交互(按键、键盘)+编码调制部分+电路 2、光电放大器 (电路转换放大器)+解调+电路 三、红外通信过程 单片机(输出调制)----红外发射电路(发送)----红外接收管(接收解调)------单片机(解码) 四、调制与发射 1、二进制调制 :1、单片机将编码后的二进制信号调制为38KHz的间断脉冲串(相当于二进制信号与38KHz的信号相乘) 2、红外接收解调 :HS0038直接输出解调后的高低电平信号 3、编码 : 红外发射采用PPM编码方式,编码脉冲由前导码、16位地址码(8位地址码、8位地址反码)和16位操作码(8位操作码、8位操作码的反码)组成。 前导码(起始部分) 一个9ms高电平(起始码) 4.5ms低电平(结果码) 数据码 0.56ms脉宽+1.12ms周期= 0 1.68ms脉宽+2.24ms周期=1 五、概念详解 1、红外接收头(分为电平头还有脉冲头) 电平型的:接收连续的38K信号,可以输出连续的低电平,时间可以无限长。其内部放大及脉冲整形是直接耦合的,所以能够接收及输出连续的信号。 脉冲型的:只能接收间歇的38K信号,如果接收连续的38K信号,则几百ms后会一直保持高电平,除非距离非常近(二三十厘米以内)。其内部放大及脉冲整形是电容耦合的

计算机组成与结构复习整理(六)

旧时模样 提交于 2020-01-18 04:00:34
存储系统 总线 特性 分类 总线的数据传输方式 总线设计时要考虑的基本要素 总线裁决 ==集中式裁决方式== 分布式裁决方式 总线结构 输入/输出设备 分类 打印机种类 输入/输出组织 基础知识 程序中断方式 中断分类 中断系统的基本功能 中断过程 例题 DMA(直接存储器存取方式) 总线 部件之间有两种互连方式,分散连接,各部件之间通过单独的连线互连。总线连接:各个部件连接到一组公共信息传输线上。 特性 A. 物理特性 (连接类型、数量、接插件的几何尺寸和形状) B. 电气特性 (某串行接口规定低电平要低于-3V,表示逻辑“1”,高电平要高于+3V,表示逻辑“0”) C. 功能特性 (不同的控制线功能不同,如地址线用来传输地址信息,数据线用来传输数据信息) D. 时间特性 (每根线产生的信号之间的时序关系) 分类 A. 内部总线 :芯片内部连接各元件的总线。 B. 系统总线 :连接计算机系统内各功能部件。( 组成:一组数据线、一组控制线、一组地址线 ) C. 通信总线 :用于主机和I/O设备之间或计算机系统之间的通信。 总线的数据传输方式 串行传输 (又分为同步方式和异步方式)和 并行传输 。 总线设计时要考虑的基本要素 (1)信号线类型:专用信号线 / 复用信号线 (2)仲裁方法:集中式裁决 / 分布式裁决 (3)定时方式:同步协议方式 / 异步协议方式/半同步协议方式

中断&异常

五迷三道 提交于 2020-01-16 04:00:33
中断分类      类别 原因 返回行为 例子 广义 中断 异步中断 ( 狭义中断 ) 中断 ( interrupt) 可屏蔽中断 来自 I/O 设备的信号 总是返回到下一条指令 所有的 IRQ 中断 不可屏蔽中断 电源掉电和物理存储器奇偶校验 同步中断 ( 也称异常 ) 陷阱 (trap) 有意的异常 总是返回到下一条指令 系统调用、信号机制 ( 通过软中断实现 ) 故障 (fault) 潜在可恢复的错误 返回到当前指令 缺页异常、除 0 错误、段错误 终止 (abort) 不可恢复的错误 不会返回 硬件错误 注: 80386有两根引脚INTR和NMI接受外部中断请求信号,INTR接受可屏蔽中断请求。在80386中,标志寄存器EFLAGS中的IF标志决定是否屏蔽可屏蔽中断请求。 中断的定义( wikipedia ) 中断 是指由于接收到来自外围硬件(相对于 中央处理器 和 内存 )的 异步 信号或来自 软件 的 同步 信号,而进行相应的硬件/软件处理。硬件中断导致处理器通过 一个上下文切换(context switch)来保存执行状态(以程序计数器和程序状态字等寄存器信息为主);软件中断则通常作为CPU指令集中的一个指令(汇编中的int 指令),以可编程的方式直接指示这种上下文切换,并将处理导向一段中断处理代码。软中断陷入内核,常被用于实现系统调用(int 80等)。

OS期末预习与PPT翻译(PPT7~13)

倖福魔咒の 提交于 2020-01-14 09:10:23
黄底的字是我还不懂的地方,如果有知道的小伙伴可以私戳我或者评论,感激不尽ღ( ´・ᴗ・` ),期末加油! Exception 概念 中断 指CPU 在收到外部中断信号后,停止原来工作,转去处理该中断事件,完毕后回到原来断点继续工作。 操作系统-复习笔记整理 exception:非法的程序操作 interrupt:硬件设备发出的信号 system call:用户程序通过系统调用请求操作系统服务 CPU每执行完一条指令,都要检查是否有未响应的中断信号( 这张图里的interrupt包括exception,interrupt和system call吗?还是仅仅是interrupt ),如果是,则保护被中断的CPU环境。 获取中断号并由此找到中断处理程序 ,中断处理程序处理完后再继续执行下一条指令。 中断向量表 每种设备都配以相应的中断处理程序。当某种设备发来中断请求信号时,中断处理器会确定中断号。然后去查找中断向量表。 中断向量表存着所有中断号和对应的中断处理程序的入口地址。因此找到中断号对应的中断处理地址并把地址放在PC中,就可以去执行中断处理程序了。 中断的分类 ppt标题的这个User->Kernel是什么意思? 是否中断可以分成interrupt和exception,同时也可以分成device interrupt,software interrupt 和program

Linux中断管理机制

淺唱寂寞╮ 提交于 2020-01-13 17:21:04
转自 https://www.cnblogs.com/arnoldlu/p/8659981.html 新的linux kernel 及 arm不支持 中断嵌套。 关键词:GIC、IAR、EOI、SGI/PPI/SPI、中断映射、中断异常向量、中断上下文、内核中断线程、中断注册。 由于篇幅较大,简单梳理一下内容。 本章主要可以分为三大部分: 讲解硬件背景的 1. ARM中断控制器 。 系统初始化的静态过程:GIC初始化和各中断的中断号映射 2. 硬件中断号和Linux中断号的映射 ;每个中断的注册 5. 注册中断 。 一个中断从产生到执行完毕的动态过程:ARM底层通用部分如何处理 3. ARM底层中断处理 ;GIC部分的处理流程以及上层通用处理部分 4. 高层中断处理 。 这里的高层处理,没有包括下半部。下半部在 Linux中断管理 (2)软中断和tasklet 和 Linux中断管理 (3)workqueue工作队列 中进行介绍。 1. ARM中断控制器 1.1 ARM支持中断类型 ARM GIC-v2支持三种类型的中断: SGI:软件触发中断(Software Generated Interrupt),通常用于多核间通讯,最多支持16个SGI中断,硬件中断号从ID0~ID15。SGI通常在Linux内核中被用作IPI中断(inter-processor interrupts)

实验三 定时器相关模块实验

时间秒杀一切 提交于 2020-01-11 01:48:18
一.实验目的 (1)熟悉定时中断计时的工作及编程方法 (2)理解定时器模块的输入捕捉、输出比较、脉宽调制(PWM)功能的基本原理。 (3)掌握定时器模块的输入捕捉、输出比较、脉宽调制(PWM)编程方法。 (4)理解 PWM 占空比的含义。 (5)进一步深入理解 MCU 和 C#串口通信的编程方法。 二.实验内容 1.验证性实验 1)验证样例程序(ch07-Timer)中(TPM-Timer),主要功能是实现通过开发板上 TPM0计数,10ms 产生一次中断,每中断 100 次累加计时,并通过调试串口输出“MCU 记录的相对时间:00:00:01”,“00:00:01”为中断记录的时间,同时蓝色指示灯闪烁一次。 实验步骤如下: (1)将样例 TPM-Timer 程序下载至目标板; (2)将“TTL-USB 串口线”的“USB 端口”接 PC 机的 USB 口,串口线的串口接开发板上的串口 2(3 根,RX 接蓝线,TX 接白线,GND 接黑线); (3)打开串口调试工具或 ch06-UART 文件夹中的“C#2010 串口测试程序”进行串口通信测试; (4)分析理解 main.c 程序和中断服务例程 isr.c。 2)验证样例程序(ch07-Timer)中(TPM-incap-outcomp-pwm),主要功能是实现在 TPM1中断服务例程中,改变 TPM1 模块通道 0 占空比

SYS/BIOS知识整理汇总

泪湿孤枕 提交于 2020-01-10 17:31:14
本文主要整理BIOS相关组件的执行原理及使用,这里主要包括了硬件中断Hwi模块、软件中断Swi模块、时钟Clock模块、任务Tsk模块、信号量Sem模块。 1.SYS/BIOS概述 SYS/BIOS是一个可扩展的实时内核(或者说是操作系统),其提供了许多模块化的APIs(应用程序接口),支持抢占式多线程,硬件抽象,实时分析和配置工具,其设计目的是为了最大限度地减少对内存和CPU的要求。其拥有很多实时嵌入式操作系统的功能,如任务的调度,任务间的同步和通信,内存管理,实时时钟管理,中断服务管理等。有了它,用户可以编写复杂的多线程程序,并且会占用更少的CPU和内存资源。 SYS/BIOS的早期版本是DSP/BIOS,更名的原因,是因为SYS/BIOS不仅可以用于DSP,而且也可以嵌入到ARM等其他Soc中去。SYS/BIOS是一个可用于实时调度、同步,主机和目标机通信,以及实时分析系统上的一个可裁减实时内核,它提供了抢占式的多任务调度,对硬件的及时反应,实时分析和配置工具等。同时也提供标准的API接口,易于使用。它是TI的eXpressDSP实时软件技术的的一个关键部分。 2.开发环境 CCS支持SYS/BIOS的开发,用户单独下载安装bios组件即可运行,能够大大方便用户编写多任务应用程序。 3.SYS/BIOS相比裸机的优点 适用于复杂系统,在需要同时处理多个事件时SYS

网卡工作原理

流过昼夜 提交于 2020-01-08 08:09:16
网卡工作原理 Linux操作系统的功能可以概括为进程管理、内存管理、文件系统管理、设备管理、网络等几部分。所有的系统操作最终都可以映射到对物理设备的操作。除去对CPU、内存以及其他少数几个物理实体的操作之外,系统对其他设备的所有操作都通过专门的称为驱动程序的代码完成。系统中存在的每种外设在内核中都必须有对应的设备驱动程序对其进行处理。所以分析网卡的工作原理即是分析网卡的驱动程序。 网络是独立的一个模块。为了屏蔽网络环境中物理网络设备的多样性,Linux对所有的设备进行抽象并定义了一个统一的概念,称之为接口。所有对网络硬件的访问都是通过接口进行的,接口提供了一个对所有类型的硬件一致化的操作集合来处理基本数据发送和接收。一个网络接口被看作是一个发送和接收数据包的实体。对于每个网络接口,都用一个net_device的数据结构来表示。net_device中有很多提供系统访问和协议层调用的设备方法,包括提供设备初始化和往系统注册用的init函数,打开和关闭网络设备的open和stop函数,处理数据包发送的函数hard_start_xmit,以及中断处理函数。 所有被发送和接收的包都用数据结构sk_buff表示。要发送数据时,网络系统将分局系统路由表选择相应的网络接口进行数据传输;当接收数据包时,通过驱动程序登记的中断服务程序进行数据的接口处理。 Linux网络驱动程序崇尚倒下分为四层

网卡工作原理

。_饼干妹妹 提交于 2020-01-07 16:35:05
Linux操作系统的功能可以概括为进程管理、内存管理、文件系统管理、设备管理、网络等几部分。所有的系统操作最终都可以映射到对物理设备的操作。除去对CPU、内存以及其他少数几个物理实体的操作之外,系统对其他设备的所有操作都通过专门的称为驱动程序的代码完成。系统中存在的每种外设在内核中都必须有对应的设备驱动程序对其进行处理。所以分析网卡的工作原理即是分析网卡的驱动程序。 网络是独立的一个模块。为了屏蔽网络环境中物理网络设备的多样性,Linux对所有的设备进行抽象并定义了一个统一的概念,称之为接口。所有对网络硬件的访问都是通过接口进行的,接口提供了一个对所有类型的硬件一致化的操作集合来处理基本数据发送和接收。一个网络接口被看作是一个发送和接收数据包的实体。对于每个网络接口,都用一个net_device的数据结构来表示。net_device中有很多提供系统访问和协议层调用的设备方法,包括提供设备初始化和往系统注册用的init函数,打开和关闭网络设备的open和stop函数,处理数据包发送的函数hard_start_xmit,以及中断处理函数。 所有被发送和接收的包都用数据结构sk_buff表示。要发送数据时,网络系统将分局系统路由表选择相应的网络接口进行数据传输;当接收数据包时,通过驱动程序登记的中断服务程序进行数据的接口处理。 Linux网络驱动程序崇尚倒下分为四层:协议接口层