Msp430学习笔记

合集下载

电设工作小结之 MSP430G2553学习笔记―2

电设工作小结之   MSP430G2553学习笔记―2

电设工作小结之 MSP430G2553学习笔记―2电设工作小结之-msp430g2553学习笔记―2电设工作小结之――msp430g2553学习笔记――2接通一篇:(四),adc101,adc10就是十位的ad,在g2553上加a0~a7八个可以外接的ad地下通道,a10收到片上的温度传感器上,其他的地下通道都直奔在内部的vcc或gnd上。

因为就是10为的ad所以计算公式如下:2,adc参考电压的选择:adc的参考电压可以为:由adc掌控寄存器0adc10ctl0掌控。

但是必须提升adc的精度的话,尽量不要用内部的参照电压,最出色外接一个比较稳定的电压做为参照电压,因为内部的产生的参照电压不是特别平衡或精度不是特别的高。

比如我在采用时碰到的情况如下:vref设为2.5v但实际的值大概为2.475v,选择vccvss作为参考,用电压表测得大概为3.58v还是不小的偏差的。

另外,在有可能的情况下,尽量使用很大的vr+和vr-,以增大纹波对取样结果的影响。

3,adc10的取样方式存有:单通道单次取样,单通道多次取样,多通道单次取样,多通道多次取样。

4,dtc:因为adc10只有一个采样结果存储寄存器adc10mem,所以除了在单通道单次采样的模式下,其他的三个模式都必须使用dct,否则转换结果会不停地被新的结果给覆盖。

dtc是转换结果传送控制,也就是转换结果可以不用cpu的干预,就可以自动地存储在指定的存储空间内。

使用这种方式转换速度快,访问方便,适用于高速采样模式中。

dtc的使用可以从下面的例子中很容易看明白:#include#include\uchars1[]={\uchars2[]={\voidadc_init(){adc10ctl1=conseq_3+inch_1;//2通道多次转换,最大转换通道为a1adc10ctl0=adc10sht_2+msc+adc10on+adc10ie;//adc10on,interruptenabl参照电压选默认值vcc和vss//采样保持时间为16xadc10clks,adc内核开,中断使能msc多次转换选择开//如果msc置位,则第一次开始转换时需要触发源触发一次,以后的转换会自动进行中断使能//采用dtc时,当一个块传输完结,产生中断//数据传送控制寄存器0adc10dtc0设置为默认模式:单传送块模式,单块传送完停止adc10dtc1=0x04;//数据传送控制寄存器14conversions定义在每块的传送数目一共采样4次所以单块传送4次//以后就暂停了传输因为就是两地下通道的,所以就是每个地下通道取样数据传输2次adc10ae0|=bit0+bit1;//p1.0p1.1adcoptionselect使能模拟输入脚a0a1//不晓得为什么,当p10p11都悬空时,取样值相同,用电压表测得悬空电压相同,但是当都接通取样源的时候,//取样就是相同的}voidmain(void){uintadc_sample[8]={0};//存储adc序列取样结果wdtctl=wdtpw+wdthold;bcsctl1=calbc1_12mhz;//设定cpu时钟dco频率为12mhzdcoctl=caldco_12mhz;p2dir|=bit3+bit4;//液晶的两条线init_lcd();adc_init();wr_string(0,0,s1);wr_string(0,3,s2);for(;;){adc10ctl0&=~enc;//adc不使能够其实这句话可以放到紧接着cpu唤起之后的,因为cpu唤起了,表明我们想的//转换数据传送完成了,如果adc继续转换,那么转换结果也不再传输,是无用的。

MSP430单片机笔记

MSP430单片机笔记

1、MSP430 端口功能P1、P2 I/O、中断功能、其他片内外设功能P3、P4、P5、P6 I/O、其他片内外设功能S、COM I/O、驱动液晶2、PxDIR 方向寄存器0 为输入模式1 为输出模式在PUC 后全都为位,作为输入时,只能读;作为输出时,可读可定。

3、PxIN 输入寄存器输入寄存器是只读的,用户不能对它写入,只能读取其IO 内容。

此时引脚方向必须为输入。

4、PxOUT 输出寄存器这是IO 端口的输出缓冲器,在读取时输出缓存的内容与脚引方向定义无关。

改变方向寄存器的内容,输出缓存的内容不受影响。

5、PxIFG 中断标专寄存器标志相应引脚是否有待处理中断信息。

0 没有中断请求1 有中断请求6、PxIES 中断触发沿选择寄存器0 上升沿使相应标志置位1 下降沿使相应标志置位7、PxIE 中断使能寄存器0 禁止中断1 允许中断8、PxSEL 功能择寄存器0 择引脚为I/O 功能。

1 择引脚为外围模块功能9、关于端口P3、P4、P5、P6端口P3、P4、P5、P6 是没有中断功能的,其它功能与P1、P2 相同。

所以在此不再作详尽说明。

10、关于端口COM、S这些端口实现与LCD 片的驱动接口,COM 端是LCD 片的公共端,S 端为LCD片的段码端。

LCD 片输出端也可以用软件配置为数字输出端口,详情使用请查看其册。

11、WDT 看门狗看门狗定时器实际上是一个特殊的定时器,它的的功能是当程序运行发生故障序时能使系统从新启动。

其原理就是发生的故障的时间满足规定的定时时间后,产一个非屏蔽中断,使系统的位。

12、定时器各种定时器功能看门狗定时器基本定时,当程序发生错误时执行一个受控的系统重启动。

基本定时器基本定时,支持软件和各种外围模块工作在低频率、低功耗条件下。

定时器A基本定时,支持同时进行的多种时序控制、多个捕获、比较功能和多种输出波形(PWM),可以以硬件方式支持串行通信。

定时器B基本定时,功能基本同定时器A,但比较定时器 A 灵活,功能更强大。

MSP430f5529学习笔记

MSP430f5529学习笔记


发板或目标板,同时也会得到很好的技术支持。如果自己制作的话也行, 也未尚不可,那就看个人水平了。

软件工具,因为现在都有学习板的工具软件,如 I建议还是使用 IAR 软件较方便, 因为使用的人群 较多,有问题还可请教,容易解决。

MSP430学习资料及教程,<<MSP430系列16位超低功耗单片机原理与应
(一)通用 I/O 口的设置-1
1.1 I/O 的简介 特点:①多种复用和设置(即可控制是否输入、是否输出、是否接上拉电 阻、是否接下拉电阻、是否可接受中断) ; ②一般情况下, P1和 P2都是具有中断能力的。 从 P1和 P2接口的各个 I/O 管脚引入的中断可以独立的被使能并且设置为上升沿或者下降沿触发。对应 的中断向量表分别为 P1IV 和 P2IV,它们只能进行字操作,并且 PAIV 这个寄存器 根本不存在。 ③P1、P2可合为 PA,P3、P4可合为 PB,…PC、PD。所以 P1为8位 BCD 0x00,PA 为16位 BCD 0x0000。当进行字操作写入 PA 口时,所有的16位都被 写入这个端口;当利用字节操作写入 PA 口的低字节时,高字节保持不变; ④由于430很多 I/O 和外围电路接线,所以这里常用位操作。如事先 定义(接下来也会用到,先在此声明)BIT0=0X01、BIT1=0X02、 BIT3=0X04…BIT7=0X80, 那么将 P1.1、 P1.3的输出设为1的时候, 就可以这样操作: P1OUT|=(BIT1+BIT3) 。这样显得很清楚。 ⑤没有用到的 I/O,要统一拉低为好。此外,当读入的数据长短小于 端口最大长度时,那些没有用到的位会被视零。 1.2 I/O 的简单配置 430I/O 的配置是用软件来实现的, 是通过相应的配置寄存器来实 现的。 (用到某个 I/O 时,一定要先配置好该 I/O,否则易出错) 1.2.1 I/O 方向设定寄存器 PXDIR 如设定 P1.1和 P1.2为输出状态 操作为: P1DIR |=(BIT1+BIT2)等价于 PADIR |=(BIT1+BIT2) 也等价于 PADIR_L|=(BIT1+BIT2。 拉高设定为输出,拉低设定为输入(默认) 。 1.2.2 I/O 输入设定寄存器 PXIN 如设定 P1.1和 P1.2的输入为低电平 操作为: P1IN &=~(BIT1+BIT2) 。 1.2.3 I/O 输出设定寄存器 PXOUT ①当只用为简单的输出时: 如设定 P1.1和 P1.2输出高电平 操作为: P1OUT |=(BIT1+BIT2) 。 ②如果该引脚为正常 I/O 功能,且当前已设定为输入方向,且上拉/ 下拉电阻寄存器是有效地。那么 PXOUT 可以用来配置上拉和下拉电阻: 低电平为下拉电阻; 高电平为上拉电阻; 1.2.4 上拉/下拉电阻使能寄存器 PXREN 低电平该寄存器为无效状态; 高电平该寄存器为有效状态;

MSP430f247单片机笔记

MSP430f247单片机笔记

POR信号产生源:1.给器件上电2.复位管脚产生复位信号超级电压监视电路发现电压不稳时,产生POR信号PUC信号产生源:1.产生了POR信号2.看门狗定时器溢出3.看门狗定时器安全密匙错误空间安全密匙错误系统复位后器件的初始化状态:POR信号后NMI管脚为复位模式O被切换到输入状态3.外设模块和相应的寄存器被初始化到确定的状态4.状态寄存器被复位5.看门狗定时器被打开回到以确定位置重新开始读取数据软件初始化:1.设置看门狗2.配置外设资源430单片机中断种类有三种:1.系统复位2.非可屏蔽中断3.可屏蔽中断非可屏蔽中断产生有三种情况:1.非可屏蔽管脚RST/NMI被配置为NMI模式时,产生了用户设定的电平跳变2.振荡器失效3.对FLASH空间的错误访问非屏蔽中断NMI为多源中断,只有一个中断向量,该中断向量对应着多个中断标志,进入该中断向量后用户先要判断那种原因导致了非可屏蔽中断(通过标志位判断,OFIFG=1,振荡器失效中断;ACCVIFG=1,.对FLASH空间的错误访问中断;NMIFG=1,非可屏蔽管脚RST/NMI被配置为NMI模式时,产生了用户设定的电平跳变产生的中断;),这些中断的中断标志位都要通过软件进行手动清除;可屏蔽中断:可通过状态寄存器中的通用中断标志位GIE来使能控制;可屏蔽中断的执行过程:1.可屏蔽中断发生到执行一般需要大约6个机器周期2.单源中断的中断标志位可通过硬件自动清除,多源中断的中断标志位要通过软件清除;状态寄存器被清除,所有低功耗模式结束,CPU进入活跃模式,同时GIE通用中断标志位被清除,其它中断无法打断,用户可通过软件再次打开;4.中断返回时,SR状态寄存器被还原,CPU置为中断前的模式,GIE重新置位,GIE=1;在PUC信号后,由DCOCLK作MCLK的时钟信号,根据需要可将MCLK的时钟源另外设置为LFXT1或XT2,设置顺序如下。

(1). 清OSCOFF/XT2(开启外部晶振)(2). 清OFIFG(3). 延时等待至少50uS(4). 再次检查OFIFG,如果仍置位,则重复(1)~(4)步,直到OFIFG=0为止。

MSP430单片机深入学习笔记

MSP430单片机深入学习笔记

复位1.POR信号只在两种情况下产生:➢微处理器上电。

➢RST/NMI管脚被设置为复位功能,在此管脚上产生低电平时系统复位。

2.PUC信号产生的条件为:➢POR信号产生。

➢看门狗有效时,看门狗定时器溢出。

➢写看门狗定时器安全健值出现错误。

➢写FLASH存储器安全键值出现错误。

3.POR信号的出现会导致系统复位,并产生PUC信号。

而PUC信号不会引起POR信号的产生。

系统复位后(POR之后)的状态为:➢RST/MIN管脚功能被设置为复位功能。

➢所有I/O管脚被设置为输入。

➢外围模块被初始化,其寄存器值为相关手册上注明的默认值。

➢状态寄存器(SR)复位。

➢看门狗激活,进入工作模式。

➢程序计数器(PC)载入0xFFFE(0xFFFE为复位中断向量)处的地址,微处理器从此地址开始执行程序。

4.典型的复位电路有以下3种:(1)由于MSP430具有上电复位功能,因此,上电后只要保持RST/NMI(设置为复位功能)为高电平即可。

通常的做法为,在RST/NMI管脚接100kΩ的上拉电阻,如图1-5(a)所示。

(2)除了在RST/NMI管脚接100kΩ的上拉电阻外,还可以再接0.1μF的电容,电容的另一端接地,可以使复位更加可靠。

如图1-5(b)所示。

(3)由于MSP430具有极低的功耗,如果系统断电后立即上电,则系统中电容所存储的电荷来不及释放,此时系统电压不会下降到最低复位电压以下,因而MSP430不会产生上电复位,同时RST/NMI管脚上也没有足够低的电平使MSP430复位。

这样,系统断电后立即上电,MSP430并没有被复位。

为了解决这个问题,可增加一个二极管,这样断电后储存在复位电容中的电荷就可以通过二极管释放,从而加速电容的放电。

二极管的型号可取1N4008。

如图1-5(c)所示。

系统时钟振荡器:1.DCO 数控RC振荡器,位于芯片内部。

不用时可以关闭2.LFXT1 可以接低频振荡器,典型的如32.768kHz的钟表振荡器,此时振荡器不需要接负载电容。

MSP430f5438初学者笔记

MSP430f5438初学者笔记

MSP430f5438初学者笔记一、简介1.1CPU:16-bit RISC除program-flow指令外所有指令都在寄存器和7种源操作数寻址方式及4种目的操作数合作下执行16个寄存器,register-to-register指令执行时间是一个CPU时钟R0 程序计数器寄存器20-bitR1 堆栈指针20-bitR2 状态寄存器16-bitR3 不变的产生器R4~R15 通用寄存器1.2指令集:51指令3格式7中寻址方式附加指令1.3操作模式6个可软件设置的LOW-POWER模式一个中断事件可以唤醒5个模式中的任何一个,响应请求,并从中断程序中返回原模式Mode ACTIVE DISABLEDActive mode (AM) 所有时钟ACTIVELow-power mode 0 (LPM0) ACLK SMCLK FLL CPU MCLK LPM1 ACLK SMCLK CPU FLL MCLK LPM2 DCO发生器ACLK CPU MCLK FLL DCOCLK LPM3 ACLK CPU MCLK FLL DCOCLK DC发生器LPM4 晶振关闭完整数据保留LPM5 内部调节器关闭无数据保留通过RST和IO唤醒1.4中断矢量地址:FFFF~FF80H1.5 SFR处于最低地址空间可以进行字访问和字节访问1.6存储256K闪存空间64K程序存储器16KRAM 512BBSL程序装载器用于编程存储器串连接口1.7外围时钟:支持统一的时钟系统UCS包括:32K手表晶振(XT1 低频模式)内部低频振荡器VLO内部平衡低频振荡器REFO内部集成数字控制器DCO高频晶振(XT1高频模式or XT2)FLL锁频环连同一个数字调节器使得DCO构成一个多倍可编程的手表晶振时钟信号:ACLK 32K手表晶振、高频晶振、VLO、REFO、DCO MCLK CPU用,来源同ACLKSMCLK 用于外围来源同ACLK多分频ACLK电源管理模块(PMM)包括一个集成的PMM电压调节器,提供核心电压设备和包含可编程的产出水平,来提供电力的优化。

MSP430G2553学习笔记(数据手册)概要

MSP430G2553学习笔记(数据手册)概要

MSP430G2553学习笔记(数据手册)MSP430G2553性能参数(DIP-20) 工作电压范围:1.8~3.6V。

5种低功耗模式。

16位的RISC结构,62.5ns指令周期。

超低功耗:运行模式-230µA;待机模式-0.5µA;关闭模式-0.1µA;可以在不到1µs的时间里超快速地从待机模式唤醒。

基本时钟模块配置:具有四种校准频率并高达16MHz的内部频率;内部超低功耗LF振荡器;32.768KHz晶体;外部数字时钟源。

两个16 位Timer_A,分别具有三个捕获/比较寄存器。

用于模拟信号比较功能或者斜率模数(A/D)转换的片载比较器。

带内部基准、采样与保持以及自动扫描功能的10位200-ksps 模数(A/D)转换器。

16KB闪存,512B的RAM。

16个I/O口。

注意:MSP430G2553无P3口!MSP430G2553的时钟基本时钟系统的寄存器DCOCTL-DCO控制寄存器DCOxDCO频率选择控制1MODxDCO频率校正选择,通常令MODx=0注意:在MSP430G2553上电复位后,默认RSEL=7,DCO=3,通过数据手册查得DCO频率大概在0.8~1.5MHz之间。

BCSCTL1-基本时钟控制寄存器1XT2OFF不用管,因为MSP430G2553内部没有XT2提供的HF时钟XTS不用管,默认复位后的0值即可DIV Ax设置ACLK的分频数00 /101 /210 /411 /8RSELxDCO频率选择控制2BCSCTL2-基本时钟控制寄存器2SELMxMCLK的选择控制位00 DCOCLK01 DCOCLK10 LFXT1CLK或者VLOCLK11 LFXT1CLK或者VLOCLK DIVMx设置MCLK的分频数00 /101 /210 /411 /8SELSSMCLK的选择控制位0 DCOCLK1 LFXT1CLK或者VLOCLK DIVSx设置SMCLK的分频数00 /101 /210 /411 /8DCORDCO直流发生电阻选择,此位一般设00 内部电阻1 外部电阻BCSCTL3-基本时钟控制寄存器3XT2Sx不用管LFXT1Sx00 LFXT1选为32.768KHz晶振01 保留10 VLOCLK11 外部数字时钟源XCAPxLFXT1晶振谐振电容选择00 1pF01 6pF10 10pF11 12.5pFmsp430g2553.h中基本时钟系统的内容/************************************************************* Basic Clock Module************************************************************/#define __MSP430_HAS_BC2__ /* Definition to show that Module is available */SFR_8BIT(DCOCTL); /* DCO Clock Frequency Control */SFR_8BIT(BCSCTL1); /* Basic Clock System Control 1 */SFR_8BIT(BCSCTL2); /* Basic Clock System Control 2 */SFR_8BIT(BCSCTL3); /* Basic Clock System Control 3 */#define MOD0 (0x01) /* Modulation Bit 0 */#define MOD1 (0x02) /* Modulation Bit 1 */#define MOD2 (0x04) /* Modulation Bit 2 */#define MOD3 (0x08) /* Modulation Bit 3 */#define MOD4 (0x10) /* Modulation Bit 4 */#define DCO0 (0x20) /* DCO Select Bit 0 */#define DCO1 (0x40) /* DCO Select Bit 1 */#define DCO2 (0x80) /* DCO Select Bit 2 */#define RSEL0 (0x01) /* Range Select Bit 0 */#define RSEL1 (0x02) /* Range Select Bit 1 */#define RSEL2 (0x04) /* Range Select Bit 2 */#define RSEL3 (0x08) /* Range Select Bit 3 */#define DIVA0 (0x10) /* ACLK Divider 0 */#define DIVA1 (0x20) /* ACLK Divider 1 */#define XTS (0x40) /* LFXTCLK 0:Low Freq. / 1: High Freq. */ #define XT2OFF (0x80) /* Enable XT2CLK */#define DIVA_0 (0x00) /* ACLK Divider 0: /1 */#define DIVA_1 (0x10) /* ACLK Divider 1: /2 */#define DIVA_2 (0x20) /* ACLK Divider 2: /4 */#define DIVA_3 (0x30) /* ACLK Divider 3: /8 */#define DIVS0 (0x02) /* SMCLK Divider 0 */#define DIVS1 (0x04) /* SMCLK Divider 1 */#define SELS (0x08) /* SMCLK Source Select 0:DCOCLK /1:XT2CLK/LFXTCLK */#define DIVM0 (0x10) /* MCLK Divider 0 */#define DIVM1 (0x20) /* MCLK Divider 1 */#define SELM0 (0x40) /* MCLK Source Select 0 */#define SELM1 (0x80) /* MCLK Source Select 1 */#define DIVS_0 (0x00) /* SMCLK Divider 0: /1 */#define DIVS_1 (0x02) /* SMCLK Divider 1: /2 */#define DIVS_2 (0x04) /* SMCLK Divider 2: /4 */#define DIVS_3 (0x06) /* SMCLK Divider 3: /8 */#define DIVM_0 (0x00) /* MCLK Divider 0: /1 */#define DIVM_1 (0x10) /* MCLK Divider 1: /2 */#define DIVM_2 (0x20) /* MCLK Divider 2: /4 */#define DIVM_3 (0x30) /* MCLK Divider 3: /8 */#define SELM_0 (0x00) /* MCLK Source Select 0: DCOCLK */#define SELM_1 (0x40) /* MCLK Source Select 1: DCOCLK */#define SELM_2 (0x80) /* MCLK Source Select 2: XT2CLK/LFXTCLK */#define SELM_3 (0xC0) /* MCLK Source Select 3: LFXTCLK */#define LFXT1OF (0x01) /* Low/high Frequency Oscillator Fault Flag */#define XT2OF (0x02) /* High frequency oscillator 2 fault flag */#define XCAP0 (0x04) /* XIN/XOUT Cap 0 */#define XCAP1 (0x08) /* XIN/XOUT Cap 1 */#define LFXT1S0 (0x10) /* Mode 0 for LFXT1 (XTS = 0) */#define LFXT1S1 (0x20) /* Mode 1 for LFXT1 (XTS = 0) */#define XT2S0 (0x40) /* Mode 0 for XT2 */#define XT2S1 (0x80) /* Mode 1 for XT2 */#define XCAP_0 (0x00) /* XIN/XOUT Cap : 0 pF */#define XCAP_1 (0x04) /* XIN/XOUT Cap : 6 pF */#define XCAP_2 (0x08) /* XIN/XOUT Cap : 10 pF */#define XCAP_3 (0x0C) /* XIN/XOUT Cap : 12.5 pF */#define LFXT1S_0 (0x00) /* Mode 0 for LFXT1 : Normal operation */ #define LFXT1S_1 (0x10) /* Mode 1 for LFXT1 : Reserved */#define LFXT1S_2 (0x20) /* Mode 2 for LFXT1 : VLO */#define LFXT1S_3 (0x30) /* Mode 3 for LFXT1 : Digital input signal */#define XT2S_0 (0x00) /* Mode 0 for XT2 : 0.4 - 1 MHz */#define XT2S_1 (0x40) /* Mode 1 for XT2 : 1 - 4 MHz */#define XT2S_2 (0x80) /* Mode 2 for XT2 : 2 - 16 MHz */#define XT2S_3 (0xC0) /* Mode 3 for XT2 : Digital input signal */基本时钟系统例程(DCO)MSP430G2553在上电之后默认CPU执行程序的时钟MCLK来自于DCO时钟。

[MSP430学习笔记] 430加密总结

[MSP430学习笔记] 430加密总结

MSP430单片机常见加密总结1、为什么要加密,如何加密?当您的产品推向市场的时候,您的竞争对手就开始盯上它了,如果您的产品硬件很容易被模仿,而且您使用的MSP430单片机没有被加密的话,那么您辛辛苦苦的劳动成功就很容易成为您竞争对手的产品了,使用JTAG调试工具FET虽然可以将程序下载到芯片内部,但只有使用专业编程器能够防止程序被窃取。

2、JT AG、BSL、BOOTLOADER、熔丝的区别和关系是什么?JTAG接口能够访问MSP430单片机内部所有资源,通过JTAG可以对芯片进行程序下载、代码调试、内存修改等等,通过JTAG还能烧断加密熔丝,熔丝一旦被烧断,JTAG接口绝大部分功能失效,就再也不能通过它进行编程了。

BSL接口是利用芯片内部驻留的bootloader程序实现的自编程,通过特定的时序使得CPU进入bootloader代码断,然后利用每个MSP430芯片内部都有的Timer A构成一个软件串口来与上位机通讯,这样可以将代码下载到芯片内部。

实现BSL除了JTAG接口的一些引脚外,还需要用到两个TA0功能引脚,因此在设计产品时如果需要加密,则应该考虑将这两个引脚也连出来。

注意:A、要烧断熔丝(加密)必须使用JTAG接口;B、烧断熔丝后只能通过BSL 或者用户代码来实现编程更新。

3、BSL的验证密码是怎么回事?BSL也能读出芯片内部的代码,这样可以实现编程后的校验等功能。

通过BSL擦除所有Flash信息时不需要验证密码,但是要进一步操作,就得输入32字节密码进行验证。

BSL 的协议规定这32字节密码为芯片FLASH区域的最高32字节,也就是程序的16个中断向量,如果您拥有这段程序的最后32字节,就能通过BSL将芯片内部所有代码读取出来。

4、为什么要使用高级加密?32字节的密码看似几乎完全没可能使用穷举法来实现破解,但是各位别忘了,msp430的16个中断向量未必每一个都用到了,没用到的中断向量为0xffff,如果您的程序只用到了复位向量,那么破解者只需尝试最多32768次(中断向量为偶数,所以除以2)就能将其破解,另外,如果芯片本身Flash容量较小,比如4K字节,那么破解者只需尝试最多2K次就能将其破解。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Msp430学习笔记一、简介
图1 基本结构
图2 pin designation
结论:
1.基本每个管脚都可以复用
2.外围功能模块丰富
端口介绍(32 I/O pins)
1.端口P1和P2
具有输入、输出、中断和外部模块功能。

这些功能可以通过各自的7个控制寄存器的设置来实现。

(1)PxDIR 输入输出方向寄存器rw
(2)PxIN 输入寄存器r
(3)PxOUT 输出寄存器r
(4)PxIFG 中断标志寄存器r
(5)PxIES 中断触发沿选择寄存器rw
(6)PxIE 中断使能寄存器rw
(7)PxSEL 功能选择寄存器rw
2.其他端口:四个控制寄存器(除去中断相关)看看例程
二、时钟部分
1.时钟寄存器设置
SCFQCTL 系统时钟控制寄存器(倍频,反馈后默认是31,31+1=32)
SCFI0 系统时钟频率调整器0(锁频环反馈中的分频(实质最终是倍频))
SCFI1 系统时钟频率调整器1(自动控制调整,无需软件设置)
FLL_CTL0 FLL+控制器0 (反馈中是否分频、选择LFXT1晶振的有效电容)
FLL_CTL1 FLL+控制器1 (振荡器控制、时钟源对应的振荡器的选择,默认情况下:振荡
器打开,MCLK选择DCOCLK,SMCLK选择DCOCLK)
图时钟模块
2.工作模式:One Active Mode、Five Power Saving Modes
MSP430是一个特别强调低功耗的单片机系列,尤其适用于采用电池供电的长时间工作场合。

系统根据应用和节能使用不同的时钟信号,这样可以合理利用系统的电源,实现整个系统的超低功耗。

中断是MSP430微处理器的一大特色。

有效地利用中断可以简化程序,并且提高执行效率和系统稳定性。

几乎所有的msp430系统单片机的每个外围模块都能产生中断,为MSP430针对事件(外围模块产生的中断)进行的编程打下基础。

MSP430在没有事件发生时处于低功耗模式,事件发生时通过中断唤醒CPU,时间处理完毕后CPU再次进入低功耗模式,由于CPU运算速度和推出低功耗的速度很快,所以在应用中,CPU大部分时间都处于低功耗状态,使得系统的整体功耗极大地降低。

MSP430中断可分为三种:1.系统复位中断;2.不可屏蔽中断;3.可屏蔽中断。

多个中断请求发生时,响应最高优先级中断。

响应中断时,MSP430单片机会将不可屏蔽中断控制位SR.GIE(总中断允许位)复位。

因此,一旦响应了中断,即使有优先级更高的可屏蔽中断出现,也不会中断当前正在响应的中断而去响应更高优先级的中断。

但SR.GIE复位不会影响不可屏蔽中断,所以仍可接收不可屏蔽中断的中断请求。

使用中断时要开总中断:
_EINT(); // Enable general interrupts。

相关文档
最新文档