来源:安博 发布时间:2024-06-25 02:52:28
2,IO口的寄存器有:方向选择寄存器PxDIR,输出寄存器PxOUT,输入寄存器PxIN,IO口内部上拉或下拉电阻使能寄存器PxREN,IO口功能选择寄存器PxSEL和PxSEL2,IO口中断使能寄存器PxIE,中断沿选择寄存器PxIES,IO口中断标志寄存器PxIFG。
3,所有的IO都带有中断,其中所有的P1口公用一个中断向量,所有的P2口公用一个中断向量。所以在使用中断时,当进入中断后,还要判断到底是哪一个IO口产生的中断,判断办法能够是判断各个IO口的电平。
4,中断标志PxIFG需要软件清除,也可以用软件置位,从而用软件触发一个中断。
注意:在设置PxIESx时根据PxINx有一定的概率会引起相应的PxIFGx置位(具体的情况见用户指南),所以在初始化完IO口中断以后,正式使用IO中断前要先将对应的PxIFGx清零。程序如下:
//使用中断时,使能内部的上拉电阻这样当该脚悬空是,电平不会跳变,防止悬空时电平跳变不停的触发中断
5,PxOUT:如果引脚选择了内部的上拉或下拉电阻使能,则PxOUT设定电阻是上拉还是下拉,0:下拉,1:上拉
6,当IO口不用时,建议还是不要设为输入,且为浮动状态(这是IO口的默认状态),因为当输入为浮动时,输入电压有一定的概率会在VIL和VIH之间,这样会产生击穿电流。所以不用的IO口可以设为输出状态,或设为输入状态但通过外围电路接至VCC或GND,或接一个上拉/下拉电阻。
7,当使用msp430g2553的IO口时要注意,因为g2553的IO口寄存器的操作,不像51,它不能单独针对某一位做相关操作,必须对整个寄存器做相关操作。所以就不像51,g2553不可以定义bit型的数据。所以在使用msp的IO口时要注意对需要位的操作,而不要影响其他无关的位,可以用&^等按位操作的符号。在使用IO都控制其他外围模块时也要注意要使用的IO口的定义,可以用如下的定义方法:
8,g2553的P27和P26脚分别接外部晶体的输出和输入脚XOUT和XIN,默认是自动设为了晶振管脚功能,但是当想把它们用为普通的IO时,也可以,设置对应的SEL设为普通的IO即可,如下:
1,msp430能做到超低功耗,合理的时钟模块是功不可没的。但是功能强大的时钟模块设置起来也相对复杂一些。
(3),内部数字控制振荡器DCO:是一个可控的RC振荡器,频率在0~16MHz;
(4),超低功耗低频振荡器VLO:不可控,4~20KHz典型值为12KHz;
(3),辅助系统时钟ACLK:提供给低速外设。可来自LFXT1CLKVLO。
4,内部的振荡器DCO和VLO提供的时钟频率不是很精确,随外部环境变化较大。
DCO默认的频率大概为800KHz,但我用示波器观察的为1.086MHz左右,当DCO设置的过高时,用示波器能够正常的看到波形不再是方波,而是类似于正弦波。DCO可以用CCS提供的宏定义进行相对来说还是比较精确的设置,如下:
5,使用超低功耗低频振荡器VLO可以很大程度地降低系统功耗,下面的例子是设置ACLK为VLO,MCLK为VLO的8分频:
6,如上面的程序所示,其中的延迟函数用那种方法,使用系统的延迟周期函数__delay_cycles(intn);能够达到比较精确的延迟,如下:
7,系统上电后默认使用的是DCO时钟,DCO默认的频率大概为800KHz,但我用示波器观察的为1.086MHz左右,当DCO设置的过高时,用示波器能够正常的看到波形不再是方波,而是类似于正弦波。
1,MSP430g2553具有两个16位的定时器:Timer0_ATimer1_A。分别具有三个捕捉/比较寄存器,具有输入捕捉,输出比较功能。可以产生定时中断,也可以产生PWM。
TAR寄存器是Timer_A的16位的计数寄存器。TACCRx是Timer_A的捕获/比较寄存器,当为捕获模式时:当捕获发生时,把TAR的值装载到TACCRx中。当为比较模式时:TACCRx中装的是要与TAR寄存器相比较的值。
捕获外部输入的信号的上升沿或下降沿或上升沿下降沿都捕捉,当捕捉发生时,把TAR的值装载到TACCRx中,同时也能进入中断,执行相应的操作。这样利用捕捉上升沿或下降沿就可以计算外部输入信号的周期,得出频率。利用捕捉上升沿和下降沿能得出输入信号的高电平或低电平的维持的时间。也可以算出占空比。下面是一个例子,是Timer_A捕获初始化的程序:
TACTL=TASSEL1+MC_2;//选择SMCLK时钟作为计数时钟源,不分频增计数模式不行,必须连续计数模式
TA1CTL=TASSEL1+MC_2;//选择SMCLK时钟作为计数时钟源,不分频增计数模式不行,必须连续计数模式
//如果要测量更低频率的信号的话,可以在中断中判断溢出中断发生的次数,这样就能够获得溢出的次数,从而能够测量更
计数模式有:增计数模式,连续计数模式和增减计数模式。具体的各个模式的详解,参见用户指南。
在使用定时器的定时中断时,要注意定时器计数模式的选择。在使用中断时,要注意中断向量的使用和中断源的判断,下面就举一个例子,注释的也较详细:
//定时器总是从0开始往上计数,一直到计满再从0开始,在连续计数模式下,当定时器的值等于CCR0时,产生中断
//在中断中对CCR0增加50000,这样的话定时器从当前值到下一时刻再次等于CCR0时的间隔为50000,恒定
//所以在连续计数模式下,要想使中断的时间间隔一定,就要有CCR0+=n;这句话
7,注意:定时器Timer0_A的时钟可以再一次进行选择为外接时钟输入TACLK(P10),这样当外接一个信号时,定时器Timer0_A就等于一个计数器使用。这样就可以用Timer0_A接外接信号,Timer1_A接标准的时钟如32768Hz的晶振,就能轻松实现等精度测频了。其实Timer1_A的时钟也可以外接的,但是在g2553中没这个外接管脚(P37),所以就只能选择正常的时钟了。
Timer0_A的外接时钟输入TACLK(P10)的设置如下:下面是我实现等精度测频时,两个定时器的初始化程序:
//Timer1_A采用ACLK作为时钟源计数,这样ACLK就相当于是标准信号,这样两个定时器相当于都工作在计数器方式,
版权所有:安博 粤ICP备20005664号
友情链接:安博电竞官方下载