历史上的今天
今天是:2025年04月07日(星期一)
2021年04月07日 | 总结MSP430学习经验(4)
2021-04-07 来源:eefocus
4.经常有人会问这个语句的MOV.B #LPM0,0(SP)的作用。假如你在进入中断函数之前,430是在LPM0下待机,若要求执行完中断函数之后进入LPM3待机,在中断函数里写MOV.B #LPM3,SR是无效的。因为在进入中断时430会把PC,SR压栈,( SR内保存着低功耗模式的设置)即使你写了MOV.B #LPM3,SR,在退出中断出栈时SR会被重新设置成低功耗0,要达到这样的目的,只能更改堆栈内SR的设置:MOV.B #LPM0,0(SP)。
5中断向量:
430的中断向量是FFE0H—FFFFH,一共32个字节也就是FLASH的最后一段,430的FLASH有大有小,但是最后地址肯定是FFFFH(大FLASH超过64K的除外)所以它们的起始地址是不一样的,而一般IAR默认编译都是把程序放在FLASH开始的位置(不包括信息段)。
有个值得弄清楚的问题是:什么是中断向量?中断向量实际就是保存中断函数入口地址的存储单元空间。就像FFFEH+FFFFH这2个字节是复位中断向量,那么它存储的就是主函数在FLASH内的起始地址,假如主函数保存在以0x1100为起始地址的FLASH块内,那么你会发现FFFFH 内保存的是0x11, FFFE内保存的是0x00.其他什么TimerA,ADC12,所有的都一样。只是你每次写的程序长短不一,中断函数放的位置不一样。IAR编译器都会给你定好,然后在你用JTAG烧写程序的时候,把这个地址,烧写到相应的中断向量。因为中断函数所处地址可以由用户自定义,也可以让IAR自动编译,所以这个地址除了源代码开发人员知道,其他人是不知道的,BSL就是应用这32个字节的中断向量内的内容的特殊性设置的密码。但是有几个东西在430是不变的,就是触发中断的条件满足后,它到哪个地方去寻址中断服务函数的入口地址,是TI 在做430时就固化好,定死的。比方说上电复位的时候,它知道去FFFE,FFFF单元找地址,而不去FFE0,FFE2找地址,这个映射关系是430固化不变的。可有的时候你就是需要改变“中断向量”,这怎么办?430FLASH程序自升级里有时就会碰到这个问题,方法是在430原来默认的中断向量表内做一个跳转操作,同样以上电复位为例:
ORG 0x2345
PowerReset: mov.w &0xFCFE,PC
…………………………
…………………………
ORG 0xFFFE
DW PowerReset
这样的话0xFCFE就相当是0xFFFE的映射了。这个在430程序自升级的TI应用报告里就有。
史海拾趣
|
Wingshing (WS) WS7107CPLG RG0720 Wingshing (WS) WS7107CPLG RG0720 谁有这个芯片的中文资料,怎么发现网上这种芯片的资料很少 刚刚从公司的库存里翻出一大堆用这个芯片制作的电流表 具说是以前作出来有问题没有处理,现在要弄出来 电路很简单,但是俺不知道这个芯片的 ...… 查看全部问答> |
|
信号类的模块不太通用,我们不可能整出一个通用的放大电路或者滤波电路。但是大家可以在此说说自己遇到的问题和解决的方法。我们要的是思想,不是硬件呵呵 我先说说我的问题,现在还没解决,高手帮一下忙,谢谢了 1:信号发生器的负载能力,如何提 ...… 查看全部问答> |
|
目录: 第一章 概述 §1-1模拟相乘器的基本概念 §1-2理想相乘器的基本性质 1-2-1静态特性 1-2-2线性和非线性性质 §1-3实际相乘器的误差 1-3-1静态(直流)误差 1-3-2动态(交流)误差 §1-4模拟相乘技术的基本原理 1-4-1霍尔效应相乘法 ...… 查看全部问答> |
|
FATAL ERROR - InitDetectCPU Failed Debug Serial Init SysInit: GDTBase=8103d0e8 IDTBase=8105e860 KData=81065800 Windows CE Kernel for i486 Built on Jun 24 2004 at 18:23:42 g_pPageDir = 81066000 &nb ...… 查看全部问答> |




