[ZLG-MCU] IAR怎么用C或内嵌汇编读写PRIMASK(中断标志位)?

[复制链接]
2363|2
 楼主| ATmega32L 发表于 2008-2-17 17:35 | 显示全部楼层 |阅读模式
IAR怎么用C或内嵌汇编读写PRIMASK(中断标志位)?<br /><br />static&nbsp;inline&nbsp;uint32&nbsp;__get_primask(void)<br />{<br />&nbsp;&nbsp;return&nbsp;PRIMASK;<br />&nbsp;;<br />}<br /><br />static&nbsp;inline&nbsp;void&nbsp;__set_primask(uint32&nbsp;flags)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;PRIMASK=flags;<br />}<br />
 楼主| ATmega32L 发表于 2008-2-18 13:34 | 显示全部楼层

看来只能

看来只能:&nbsp;<br />uint8&nbsp;__get_primask(void)&nbsp;<br />{&nbsp;<br />&nbsp;&nbsp;asm(&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;mrs&nbsp;r0,primask&nbsp;
        &quot;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;bx&nbsp;lr&nbsp;&nbsp;
        &quot;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);&nbsp;<br />&nbsp;&nbsp;return&nbsp;0;&nbsp;<br />}&nbsp;<br /><br />void&nbsp;__set_primask(uint8&nbsp;flags)&nbsp;<br />{&nbsp;<br />&nbsp;&nbsp;asm(&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;msr&nbsp;primask,r0&nbsp;
        &quot;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);&nbsp;<br />}&nbsp;&nbsp;<br />
 楼主| ATmega32L 发表于 2008-2-18 13:43 | 显示全部楼层

LM3S临界断宏:

LM3S临界断宏:<br />#define&nbsp;CRITICAL()<br />&nbsp;&nbsp;for(uint8&nbsp;__flags=CriticalEnter(),__ToDo=1;__ToDo;__ToDo=0,CriticalExit(__flags))<br /><br />&nbsp;uint8&nbsp;__get_primask(void);<br /><br />&nbsp;void&nbsp;__set_primask(uint8&nbsp;flags);<br /><br />static&nbsp;inline&nbsp;uint8&nbsp;CriticalEnter(void)<br />{&nbsp;<br />&nbsp;&nbsp;uint8&nbsp;flags=__get_primask();<br />&nbsp;&nbsp;__disable_interrupt();<br />&nbsp;&nbsp;return&nbsp;flags;<br />}<br /><br />static&nbsp;inline&nbsp;void&nbsp;CriticalExit(uint8&nbsp;flags)<br />{<br />&nbsp;&nbsp;__set_primask(flags);<br />}<br /><br /><br /><br />使用:<br />CRITICAL()<br />{<br />………………//临界断<br />}<br /><br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

144

主题

376

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部