为什么在写中断函数时要写#pragma CODE_SEG __NEAR_SEG NON_BANKED这句话,是不是没什么实际作用的啊
答案:1 悬赏:20 手机版
解决时间 2021-04-03 10:11
- 提问者网友:我没有何以琛的痴心不悔
- 2021-04-03 06:09
为什么在写中断函数时要写#pragma CODE_SEG __NEAR_SEG NON_BANKED这句话,是不是没什么实际作用的啊
最佳答案
- 五星知识达人网友:孤独入客枕
- 2021-04-03 06:44
是这样的,飞思卡尔单片机.拿s12系列的来说,NON_BANKED一般位于0xc000-0xffff区域,而这个区域是16位单片机可以直接寻址的区域,而__NEAR_SEG告诉编译器函数放在固定页中,只有固定页中的函数才能访问其他页的数据,同时CODE_SEG定义了一个代码段.
所以,你可以这样理解:中断函数存放在CPU可以直接寻址的范围内,这样就可以节省中断函数的访问时间,方便调用中断函数(因为中断函数要求的就是实时性)...顺便再多说一句,如果你不写这一句,默认的是将函数存放在分页的flash里面,此时函数为far函数,访问far函数是相当耗费时间的一件事,中断函数毫无实时性可言.
一般只有中断函数时才用__NEAR_SEG,对于一般函数来说__NEAR_SEG毫无作用...
回答你的问题:非分页区是不能进行分页的区域(不需要设置PPAGE寄存器),cpu可以直接对其进行访问,访问速度快...
所以,你可以这样理解:中断函数存放在CPU可以直接寻址的范围内,这样就可以节省中断函数的访问时间,方便调用中断函数(因为中断函数要求的就是实时性)...顺便再多说一句,如果你不写这一句,默认的是将函数存放在分页的flash里面,此时函数为far函数,访问far函数是相当耗费时间的一件事,中断函数毫无实时性可言.
一般只有中断函数时才用__NEAR_SEG,对于一般函数来说__NEAR_SEG毫无作用...
回答你的问题:非分页区是不能进行分页的区域(不需要设置PPAGE寄存器),cpu可以直接对其进行访问,访问速度快...
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯