中断函数怎么调用的

pentichengfeng 2012-10-15 04:57:12
有点想不通
...全文
3997 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
pentichengfeng 2012-10-23
  • 打赏
  • 举报
回复
恩,明白了谢谢[Quote=引用 6 楼 的回复:]
中断函数是硬件或者操作系统自动调用的。。
也就是说只要满足触发条件,就会自动调用中断函数(此时主函数是停止的)。
当中断函数执行完毕,又返回主函数继续执行主函数。
然后这样不断的循环,反正只要是触发中断的条件一满足。
就会自动进入中断(前提是你的中断的配置是正确的)
[/Quote]
zc850463390zc 2012-10-23
  • 打赏
  • 举报
回复 2
中断函数是硬件或者操作系统自动调用的。。
也就是说只要满足触发条件,就会自动调用中断函数(此时主函数是停止的)。
当中断函数执行完毕,又返回主函数继续执行主函数。
然后这样不断的循环,反正只要是触发中断的条件一满足。
就会自动进入中断(前提是你的中断的配置是正确的)
cyymycc 2012-10-23
  • 打赏
  • 举报
回复
比如主函数还有个流水灯?流水灯的延时靠定时中断和标志解决,主函数遇到标志处理流水灯
void timer0() interrupt 1
{
TL0=0x33;
TH0=0xFE;
led_f=1;
}
led_run()
{
P1=CORD_DATA[LED_N];
led_N++;
P2=led_d;
led_d>>1;
if(led_N>10)
{
led_N=0;
led_d=0x7e;
}

}

main()
{
...
if (led_f)
{
led_f=0;
led_run();
}
...
lbing7 2012-10-16
  • 打赏
  • 举报
回复 3
中断中断

就是MCU停止当前的执行,做好现场保护。去临时执行中断要求的响应,返回

通俗点就是:

你正在图书馆看书,突然尿急了(中断条件满足,置位)。你要记下你在哪个位置,书看到多少页(现场保护),然后你去尿尿(响应中断),尿完了你不再有尿意(清除中断标志)回到你原来的位置,继续看书(中断返回)

明白?
pentichengfeng 2012-10-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
中断中断

就是MCU停止当前的执行,做好现场保护。去临时执行中断要求的响应,返回

通俗点就是:

你正在图书馆看书,突然尿急了(中断条件满足,置位)。你要记下你在哪个位置,书看到多少页(现场保护),然后你去尿尿(响应中断),尿完了你不再有尿意(清除中断标志)回到你原来的位置,继续看书(中断返回)

明白?
[/Quote]
void t0() interrupt 1 using 0//50毫秒定时器t0中断入口
  {
   tcount++; //定时器中断计数器加一
   if(tcount==20) //计数20次
   {
   tcount=0; //清零定时器中断计数器
   secount++; //秒计数器加一
   if(secount==100) //秒计数器等于100
   {
   secount=0; //秒计数器清零
   }
   }
   TH0=(65535-50000)/256; //重赋定时器初值高位
   TL0=(65535-50000)%256; //重赋定时器初值低位
  }
比如说这段为什么没有循环count能自加
pentichengfeng 2012-10-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
在无os的情况下,中断的优先处理等级最高的。pc中包含的是当前指令的地址,当中断发生时,中断请求信号会告知系统,此时有中断,系统保护好当前执行的环境(各个特殊的寄存器的数值,包括pc,有些mcu需要你自己保护现场),系统会将对应中断的入口地址写到pc中,那么下一步就转到中断处理了,结束中断之后,需要恢复现场,回到被前面被中断的程序中。

在有os的情况下,如果是强实时系统,os必须在一段限定的……
[/Quote]
void t0() interrupt 1 using 0//50毫秒定时器t0中断入口
  {
   tcount++; //定时器中断计数器加一
   if(tcount==20) //计数20次
   {
   tcount=0; //清零定时器中断计数器
   secount++; //秒计数器加一
   if(secount==100) //秒计数器等于100
   {
   secount=0; //秒计数器清零
   }
   }
   TH0=(65535-50000)/256; //重赋定时器初值高位
   TL0=(65535-50000)%256; //重赋定时器初值低位
  }
比如说这段为什么没有循环count能自加
pentichengfeng 2012-10-16
  • 打赏
  • 举报
回复 2
[Quote=引用 2 楼 的回复:]
中断中断

就是MCU停止当前的执行,做好现场保护。去临时执行中断要求的响应,返回

通俗点就是:

你正在图书馆看书,突然尿急了(中断条件满足,置位)。你要记下你在哪个位置,书看到多少页(现场保护),然后你去尿尿(响应中断),尿完了你不再有尿意(清除中断标志)回到你原来的位置,继续看书(中断返回)

明白?
[/Quote]定义是明白不过不明白,怎么执行过程,比如主函数还有个流水灯,那么是和流水灯一起工作吗
  • 打赏
  • 举报
回复
在无os的情况下,中断的优先处理等级最高的。pc中包含的是当前指令的地址,当中断发生时,中断请求信号会告知系统,此时有中断,系统保护好当前执行的环境(各个特殊的寄存器的数值,包括pc,有些mcu需要你自己保护现场),系统会将对应中断的入口地址写到pc中,那么下一步就转到中断处理了,结束中断之后,需要恢复现场,回到被前面被中断的程序中。

在有os的情况下,如果是强实时系统,os必须在一段限定的时间内执行中断处理程序。
如果是弱实时系统,os对中断信号的监控不是依赖于硬件,而是通过查询的方式,并且响应的方式,也可以分成二个部分,第一部分注册中断事件,消除中断标志,以防止有后续的中断发生,第二部分才是真正的中断处理程序,并且第二部分可以在os空闲时执行。
本PDF电子书包含上下两册,共1576页,带目录,高清非扫描版本。 作者: 毛德操 胡希明 丛书名: Linux内核源代码情景分析 出版社:浙江大学出版社 目录 第1章 预备知识 1.1 Linux内核简介. 1.2 Intel X86 CPU系列的寻址方式 1.3 i386的页式内存管理机制 1.4 Linux内核源代码中的C语言代码 1.5 Linux内核源代码中的汇编语言代码 第2章 存储管理 2.1 Linux内存管理的基本框架 2.2 地址映射的全过程 2.3 几个重要的数据结构和函数 2.4 越界访问 2.5 用户堆栈的扩展 2.6 物理页面的使用和周转 2.7 物理页面的分配 2.8 页面的定期换出 2.9 页面的换入 2.10 内核缓冲区的管理 2.11 外部设备存储空间的地址映射 2.12 系统调用brk() 2.13 系统调用mmap() 第3章 中断、异常和系统调用 3.1 X86 CPU对中断的硬件支持 3.2 中断向量表IDT的初始化 3.3 中断请求队列的初始化 3.4 中断的响应和服务 3.5 软中断与Bottom Half 3.6 页面异常的进入和返回 3.7 时钟中断 3.8 系统调用 3.9 系统调用号与跳转表 第4章 进程与进程调度 4.1 进程四要素 4.2 进程三部曲:创建、执行与消亡 4.3 系统调用fork()、vfork()与clone() 4.4 系统调用execve() 4.5 系统调用exit()与wait4() 4.6 进程的调度与切换 4.7 强制性调度 4.8 系统调用nanosleep()和pause() 4.9 内核中的互斥操作 第5章 文件系统 5.1 概述 5.2 从路径名到目标节点 5.3 访问权限与文件安全性 5.4 文件系统的安装和拆卸 5.5 文件的打开与关闭 5.6 文件的写与读 5.7 其他文件操作 5.8 特殊文件系统/proc 第6章 传统的Unix进程间通信 6.1 概述 6.2 管道和系统调用pipe() 6.3 命名管道 6.4 信号 6.5 系统调用ptrace()和进程跟踪 6.6 报文传递 6.7 共享内存 6.8 信号量 第7章基于socket的进程间通信 7.1系统调用socket() 7.2函数sys—socket()——创建插口 7.3函数sys—bind()——指定插口地址 7.4函数sys—listen()——设定server插口 7.5函数sys—accept()——接受连接请求 7.6函数sys—connect()——请求连接 7.7报文的接收与发送 7.8插口的关闭 7.9其他 第8章设备驱动 8.1概述 8.2系统调用mknod() 8.3可安装模块 8.4PCI总线 8.5块设备的驱动 8.6字符设备驱动概述 8.7终端设备与汉字信息处理 8.8控制台的驱动 8.9通用串行外部总线USB 8.10系统调用select()以及异步输入/输出 8.11设备文件系统devfs 第9章多处理器SMP系统结构 9.1概述 9.2SMP结构中的互斥问题 9.3高速缓存与内存的一致性 9.4SMP结构中的中断机制 9.5SMP结构中的进程调度 9.6SMP系统的引导 第10章系统引导和初始化 10.1系统引导过程概述 10.2系统初始化(第一阶段) 10.3系统初始化(第二阶段) 10.4系统初始化(第三阶段) 10.5系统的关闭和重引导

27,374

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧