浅谈嵌入式MCU软件开发之中断ISR的三种写法汽车电子expert成长之路电子技术应用AET中国科技核心期刊

3.为什么S12(X)的中断ISR必须放在未分页区(NON_BANKED)

4.CodeWarrior5.1IDE中S12(X)系列MCU中断ISR的三种写法详解及优缺点分析

方法一:在C文件中,建立中断向量表,使用‘@’重定义中断向量地址,并根据中断向量表地址将相应的中断ISR地址放在表中对应外设中断位置

方法二:在C文件中,直接采样关键词interrupt+中断向量号+ISR函数名来编写

方法三:在prm文件中定义:采样关键词VECROR+中断向量号+ISR函数名或关键词VECTOR+中断向量地址+ISR函数名(可实现中断向量地址重映射),然后再C文件中编写相应的ISR函数

总结

在之前我们谈到,嵌入式MCU中断ISR不同于其他用户软件程序,属于一类特殊的函数,其具有如下特点:

1.中断ISR必须是void型的无参数传递函数--无形参无返回值;

2.中断ISR由硬件外设触发,而非其他函数调用,其运行时机具有随机不确定性和硬件实时性

那么对于链接器来说,它是如何区分中断ISR和普通用户函数的呢?又是如何将其放置到MCU中断向量表对应外设的中断向量的呢?这就涉及到中断ISR的写法。

以下是S12G系列MCUdatasheet(MC9S12GFamilyReferenceManual,Rev.1.25)关于其中断源和中断使能以及中断向量表的描述:

另外,由于S12G向量的中断向量地址时由中断向量基地址(IVBR--InterruptVectorBaseAddressRegister)寄存器+中断向量偏移地址得到的,而MCU复位后IVBR寄存器的值为0xFF,所以S12G系列MCU的复位向量地址总是0xFFFE、0xFFFC和0xFFFA,修改IVBR并不影响复位中断向量。

Tips:通过修改IVBR寄存器可以实现外设中断向量表的偏移(也称为重定向----relocation),这对于开发BootLoader来说非常有用,因为带有BootLoader的MCU,其BootLoader和应用程序需要两个不同的外设中断向量表。

下表列出了S12G系列MCU的所有片上外设中断向量表位置(地址)/全局使能控制位和局部使能位信息,不同的part和封装,其外设数量不同,所以其对应的外设数量和中断也不同,但只要某一外设存在,其中断向量相对地址都是固定的,其中黄色高亮的外设中断时可以将MCU从STOP低功耗模式唤醒,可以作为低功耗模式的系统唤醒源。

另外,由于S12(X)系列MCU的片上存储器基友分页(Bank/page)工作机制,其对应的分页地址(也称作逻辑地址--logicaladdress)为分页号(pagenumber)+分窗口(pagewindow--0x8000to0xBFFF)的24位地址,比如page_0x9的分页地址就是0x9_8000to0x9_BFFF,必须使用24位地址(使用__far指针)才能正确寻址,而我们的中断向量表中给每一个中断分配的中断向量都是两个字节,也就是16位,所以必须将中断ISR放在为分页区(NON_BANKEDaddress,其为CPU可以直接寻址的16位地址,具有唯一性)中。

其在CodeWarrior5.1IDE具体实现方法是:

#pragmaCODE_SEGNON_BANKED/*#pragmaCODE_SEG标志以下为代码段(codesegment)定义,后面跟的NON_BANKED为具体的prm文件中定义的段,告诉链接器将这之后的代码链接到NON_BANKED段*/

/*putyourISRhere*/

#pragmaCODE_SEGDEFAULT/*恢复为默认段存储*/

有了以上基础知识,我们就可以来看看具体在CodeWarrior5.1IDE给S12(X)系列MCU开发中断ISR了。具体有三种方法:

方法一:在C文件中,建立中断向量表,使用‘@’重定义中断向量地址,并根据中断向量表地址将相应的中断ISR地址放在表中对应外设中断位置:

#define__CPU_VECTOR_BASE_ADDR__0xFE80

/*ISRprototype*/

typedefvoid(*neartIsrFunc)(void);

/*lint-save-e950DisableMISRArule(1.1)checking.*/

staticconsttIsrFunc_InterruptVectorTable[]@__CPU_VECTOR_BASE_ADDR__={/*Interruptvectortable*/

/*putyourISRfunctionslisthereaccordingtotheinterruptvectororder*/

&Keys_Interrupt_ISR;

};

staticconsttIsrFunc_ResetVectorTable[]@0xFFFAU={/*Resetvectortable*/

/*ResethandlernameAddressNameDescription*/

&_WatchDog_EntryPoint,/*0xFFFAivVcopusedbyPE*/

&_ClockMonitor_EntryPoint,/*0xFFFCivVclkmonusedbyPE*/

&_EntryPoint/*0xFFFEivVresetusedbyPE*/

然后在C文件中使用关键词interrupt定义中断ISR函数如下:

#pragmaCODE_SEGNON_BANKED

interruptvoidKeys_Interrupt_ISR(void)

{

/*yourownISRhere*/

}

#pragmaCODE_SEGDEFAULT

优缺点:

1.为了保证程序正常工作,CPU需要知道当前中断向量表已经由默认的0xFF80偏移到了0xFE80:对于S12(X)MCU:需要在工程初始化时将中断向量基地址(IVBR)设置为“@”之后的16位地址的高8位,即0xFE;

2.可以非常方便的实现中断向量表偏移重定向;

3.通过函数数组的方式统一管理MCU的中断向量,不容易出错,推荐使用方法;

voidinterruptVectorNumber_Vtimch0tmisr0(void)

1.VectorNumber_Vtimch0为中断向量号,在芯片头文件(如mc9s12g128.h,建工程时根据用户的选择自动加入到工程中)中默认定义的,无需关系中断向量表;

2.这种方法虽然最为简单,但无法实现中断向量表偏移,只能使用默认中断向量表地址;

首先,在prm文件最后定义如下:

VECTOR0_Startup(根据中断向量号定义,其默认中断向量地址为0xFFFE,_Startup为复位中断ISR函数名)

然后,C文件中使用关键词interrupt定义中断ISR函数如下:

interruptvoid_Startup(void)

1.使用关键词VECTOR+中断向量地址+ISR函数名,通过单独修改每一个中断向量地址可以实现中断向量表偏移(与方法一相同,修改IVBR寄存器,),但实现繁琐,不推荐使用;

2.若使用关键词VECROR+中断向量号+ISR函数名定义,则无法实现中断向量偏移,并且需要在prm文件中需要将0xFF80开始的128个字节默认中断向量地址保留,以存放ISR函数,这样CPU才能正常响应中断。

保证S12(X)系列MCU内核CPU能够正常识别运行中断ISR的关键步骤如下:

1.使用关键词interrupt定义无参数无返回值的中断ISR;

2.初始化中断向量表,并将其地址高8位赋给IVBR寄存器(对应方法二和方法三,使用默认中断向量表,则无需此步骤);

3.使用关键词#pragmaCODE_SEGNON_BANKED将中断ISR放在MCU未分页存储器(P-Flash)中;

Tips:虽然本文是基于S12(X)讲的中断ISR的实现方法,但其同样适用于S08系列MCU和MagniVS12Z系列MCU以及相应的CodeWarrior6.x和CodeWarrior10.6/7IDE.

THE END
1.Mock测试优缺点分析渠道mock优缺点3、Mock的优缺点分析 4、具体如何使用mock 1、什么是Mock ? 用一句通俗的语言来说:mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。 Mock 方法是单元测试中常见的一种技术,它的主要作用是模拟一些在应用中不容易构造或者比较复杂的对象,从而把测试与https://blog.csdn.net/weixin_42343424/article/details/80564365
2.干货十大流行AI框架和库的优缺点分析腾讯云开发者社区【干货】十大流行AI框架和库的优缺点分析 近年来,由于AI领域的迅猛发展,AI这一词汇已经成为一个流行语。AI曾被称为是一个书呆子和天才的领域,但由于各种库和框架的发展,使更多的人开始了他们的AI之旅。 不知道自己应该选哪个AI框架和库?看看本文就知道了。本文为AI开发工程师们梳理了现在最流行的框架和库,并https://cloud.tencent.com/developer/article/1048499
3.自我分析优势与劣势(精选31篇)自我分析优势与劣势 4 个人认为这个世界上并不存在完美的人,每个人都有自己的优点缺点,但关键是能否正视并利用它们。四年来,我不断的自我反省,归纳了一些自己的优缺点。 我的优点是诚实、热情、性格坚毅。我认为诚信是立身之本,所以我一向是以言出必行来要求自己的,答应别人的事必须按时完成,记得有好几次,同学https://m.ruiwen.com/word/ziwofenxiyoushiyulieshi.html
4.我的优缺点分析14篇(全文)我的优缺点分析(精选14篇) 我的优缺点分析 第1篇 我的优缺点_500字 It’s important to know our goodness and badness because it can help us to improve ourselves better.Therefore,we should know ourselves as much as we can.I think I have three main merits.They are filial piety,honest and hahttps://www.99xueshu.com/w/file56fg6xid.html
5.优缺点分析学术百科提供全面的“优缺点分析”相关文献(论文)下载,论文摘要免费查询,优缺点分析论文全文下载提供PDF格式文件。优缺点分析中文、英文词汇释义(解释),“优缺点分析”各类研究资料、调研报告等。https://wiki.cnki.com.cn/HotWord/527770.htm
6.优缺点自我评价(通用20篇)以上就是我的个人优缺点分析。通过分析让我更加清楚的认识自己,为今后的学习和生活树立了目标,希望党能对我的缺点加以纠正和帮助,使我更加完善,成为一名合格的共产党员,我也会继续努力学习,不辜负党组织的培养与信任。 优缺点自我评价 篇4 优点: 1.本人性格热情开朗,待人友好,为人诚实谦虚。工作勤奋,认真负责,能吃https://www.fwsir.com/qiuzhi/html/qiuzhi_20210901085609_1298884.html
7.详解Spring依赖注入的三种方式以及优缺点java优缺点分析从上面代码可以看出,Setter 注入比属性注入要麻烦很多。要说Setter 注入有什么优点的话,那么首当其冲的就是它完全符合单一职责的设计原则,因为每一个 Setter 只针对一个对象。但它的缺点也很明显,它的缺点主要体现在以下 2 点:不能注入不可变对象(final 修饰的对象); 注入的对象可被修改。https://www.jb51.net/article/260440.htm
8.什么是商住两用房,商住两用房的优缺点有哪些什么是商住两用房,商住两用房的优缺点有哪些 一、商住两用房的定义 商住两用房,既可以居住,又可以注册公司办公,土地使用年限一般为50年。 二、商住两用房优缺点分析 优点: 1、可以注册公司,既可以居住又可以办公。 2、购买时没有限制,不限购不限贷,再买住房,还是按照首套房来算。(PS:个别有特殊政策的城市或区域https://www.66law.cn/laws/319952.aspx
9.《三国志13》全战法属性说明及优缺点解析攻略《三国志13》中很多玩家对于各个战法优缺点还不了解,接下来带来“Despoty_JK”分享的全战法属性说明及优缺点分析,还在犹豫选择哪个战法的小伙伴们一起来看看吧。 1.始皇帝 很多战法分析给予这个战法一流战法的评价。这里我说明几点:1)这个战法是己方群体buff,单从数值上看,60攻防30机动50士气和士气维持,是超一流群https://gl.ali213.net/html/2016-3/114599.html
10.吉林吉康保是真的吗有哪些优缺点投保攻略关于吉林吉康保是真的吗、吉林吉康保优缺点分析的内容就介绍到这里了,希望对大家投保有一定帮助。 近两天,吉林市上新了一款惠民保,名为-吉林吉康保,有当地市民反馈这款产品住院费用报销比例高达100%,报销赔付甩出其他同类产品几条街,并且每年68元保200万医疗额度,这么便宜让人质疑吉林吉康保是真的吗,本期我们就https://www.shenlanbao.com/zhishi/6-401333
11.「swot分析模型」swot分析模型的优缺点是什么swot分析模型的优缺点是什么 优点在于考虑问题全面,是一种系统思维而且可以把问题的“诊断”和“开处方”紧密结合在一起,条理清楚,便于检验。缺点:与其他很多的战略模型一样,SWOT模型已由麦肯锡提出很久了,带有时代的局限性。以前的企业可能比较关注成本、质量,现在的企业可能强调组织流程。https://www.dongao.com/wdzt/zckjs_swotfxmx_1005129/
12.梦幻西游多开师门搬砖可行性分析,一小时赚200W你不心动?三、优缺点分析 1、多开师门优点 为了防止物品泛滥,梦幻西游控制道具产出,这也导致了五开的收益降低。按照一组日常175的收益来计算,平均时薪也就在10R~15R之间,仅收入来看远远比不上多开师门。 而且175五开成本也远远高于多开师门,一组175五开想要做到日常和副本通刷,大概需要10W的投入。而8小时工作制的师门搬砖https://xyq.yzz.cn/focus/202304/1694454.shtml
13.总结分析自身优缺点(精选13篇)二、工作作风不够扎实。做事情只安于表面处理方法比较简单,没有创新精神,工作作风还不够扎实,对问题不作深层次的分析,思考不深刻,有时还会把工作作为负担,却没有注意到工作方法的完善会给自己的工作带来动力。 篇3:智能DNS优缺点分析 使用浏览器上某个网站, 需要知道网站的地址, 而这些地址都是用数字来表示很难https://www.360wenmi.com/f/fileu3n4vjxf.html
14.红铁木木材优缺点?非洲红铁木原木多少钱一吨?图文介绍「中木商网红铁木木材的优缺点分析 1、红铁木的优点 a、红铁木木材密度强,未经防腐处理的耐久寿命长达20年),性质品质天然的好,并且它的油漆性能和抛光性也是不错的。 b、红铁木它耐腐蚀性好,可以抗白蚁、蠹虫和其他虫蚁的危害。 C、红铁木抗压强度、抗震性能、抗弯曲强度高。 https://www.wood888.net/baike/show-6396.html
15.因子分析法优缺点是什么?-经管之家官网! 因子分析法优缺点是什么? 人大经济论坛-经管之家:分享大学、考研、论文、会计、留学、数据、经济学、金融学、管理学、统计学、博弈论、统计年鉴、行业分析包括等相关资源。 经管之家是国内活跃的在线教育咨询平台! 经管之家新媒体交易平台https://bbs.pinggu.org/jg/huiji_huijiku_1496358_1.html