- 1、本文档共14页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
北京万邦易嵌科技有限公司 Linux 中断编程 2017 年2 月9 日星期四
编 制:北京万邦易嵌科技有限公司-嵌入式研发部肖龙
版 本:V2.0
编制日期:2016 年1 月10 日
修改日期:2017 年1 月10 日
版权声明:该培训教程版权归北京万邦易嵌科技有限公司所有,未经公司授权禁止引用、发
布、转载等,否则将追究其法律责任。
Linux 中断编程
一、中断相关概念
为什么会有中断。
假设你有一个朋友来拜访你,但是由于不知道何时到达,你只能在大门等待,于是什么事情也干不了。如果
在门口装一个门铃,你就不必在门口等待而去干其它的工作,朋友来了按门铃通知你,你这时才中断你的工作去
开门,这样就避免等待和浪费时间。计算机也是一样,例如打印输出,CPU 传送数据的速度高,而打印机打印
的速度低,如果不采用中断技术,CPU 将经常处于等待状态,效率极低。而采用了中断方式,CPU 可以进行其
它的工作,只在打印机缓冲区中的当前内容打印完毕发出中断请求之后,才予以响应,暂时中断当前工作转去执
行向缓冲区传送数据,传送完成后又返回执行原来的程序。这样就大大地提高了计算机系统的效率。
1.1、裸机中断编写模型
裸机中断模板:
void isr_xxxx(void)
{
清中断标志
}
第一种应用 :
void isr_xxxx(void)
{
清中断标志
发生中断要做全部事情都在这里写
}
这种形式好处,可以一次把事情做完,不受其他中断影响。
缺点:如果这里的代码比较耗时,这样会导致系统的实时性下降。
在中断程序如果发生优先级比它低中断,则不能及时处理。
北京万邦易嵌有限公司 专业提供单片机、M3/M4 、Linux、Android 、QT 技术服务、技术培训。 第 1 页 共 14 页
北京万邦易嵌科技有限公司 一、中断相关概念 2017 年2 月9 日星期四
这种形式一般用在需要执行代码耗时很短的情况。
第二种应用:
int flag = 0;
void isr_xxxx(void)
{
清中断标志
flag = 1; //只做一个记录,主体放在主程序中。
}
仅做一个记录,然后主程序根据标志执行中断相关的代码。
这种方式适合发生时要做的事情比较多,比较耗时。
配合主程序:
int main(void)
{
while(1) {
// 以下代码可以被中断,不会影响系统的实时性。随时可以让CPU 切出去,随机响应中断
if(flag) {
flag = 0;
发生中断时候要做事情在这里写;
}
}
}
以上的写法相信大家在学习M3 的时候都有用过。
Linux 下的中断也存在裸机一样的两种形态,根据自己的情况编写。
1.2、中断顶半部和中断底半部
Linux 系统把第二种形式的两部分分别称为中断顶半部和中断底半部。
中断顶半部:
响应中断,启动底半部(作用相当于裸机设置标志 )。
一般用来做响应以及耗时短的,比较紧急的事件;
文档评论(0)