asunders 发表于 2012-5-5 18:36:10

求助 哪位大侠有 MSP430x2xx 例程 或是资料

本帖最后由 asunders 于 2012-5-5 18:40 编辑

用的是MSP430G2553,哪位大侠有 MSP430x2xx 模块例程或是中文手册的能不能发一下?

asunders 发表于 2012-5-5 18:36:45

发到邮箱asunder_love@126.com也可以~

谢谢~~

asunders 发表于 2012-5-5 18:41:04

还有就是论坛的老资料都不能下载,莫大什么时候能够解决呢。。

风无痕 发表于 2012-5-5 19:02:05

样例已经发送。。。

asunders 发表于 2012-5-5 19:27:39

风无痕 发表于 2012-5-5 19:02 static/image/common/back.gif
样例已经发送。。。

已收到,谢谢~~
不过您的是MSPX14XX系列的例程,如果是MSPX2XX或者直接就是MSPG2553的例程就更好了

asunders 发表于 2012-5-6 10:54:18

up...
waiting..

yangsen 发表于 2012-5-8 09:34:05

给你一个闪LED灯的,在launchpad上跑的。用户手册,数据手册到TI网站上下载吧,我就不浪费网站资源了。PS,别说你不读英文的文档

/******************************************************************************
*                  MSP-EXP430G2-LaunchPad User Experience Application
*
* 1. Device starts up in LPM3 + blinking LED to indicate device is alive   
*    + Upon first button press, device transitions to application mode
* 2. Application Mode
*    + Continuously sample ADC Temp Sensor channel, compare result against
*      initial value      
*    + Set PWM based on measured ADC offset: Red LED for positive offset, Green
*      LED for negative offset
*    + Transmit temperature value via TimerA UART to PC
*    + Button Press --> Calibrate using current temperature
*                     Send character '? via UART, notifying PC
******************************************************************************/

#include"msp430x20x2.h"

#define   LED0                  BIT0
#define   LED1                  BIT6
#define   LED_DIR               P1DIR
#define   LED_OUT               P1OUT



#define   BUTTON                BIT3
#define   BUTTON_OUT            P1OUT
#define   BUTTON_DIR            P1DIR
#define   BUTTON_IN             P1IN
#define   BUTTON_IE             P1IE
#define   BUTTON_IES            P1IES
#define   BUTTON_IFG            P1IFG
#define   BUTTON_REN            P1REN

#define   TXD                   BIT1                      // TXD on P1.1
#define   RXD                   BIT2                      // RXD on P1.2

#define   APP_STANDBY_MODE      0
#define   APP_APPLICATION_MODE1

#define   TIMER_PWM_MODE      0   
#define   TIMER_UART_MODE       1
#define   TIMER_PWM_PERIOD      10
#define   TIMER_PWM_OFFSET      20

#define   TEMP_SAME             0
#define   TEMP_HOT            1
#define   TEMP_COLD             2

#define   TEMP_THRESHOLD      5

//   Conditions for 9600/4=2400 Baud SW UART, SMCLK = 1MHz
#define   Bitime_5            0x05*4                      // ~ 0.5 bit length + small adjustment
#define   Bitime                13*4//0x0D   

#define   UART_UPDATE_INTERVAL1000


unsigned char BitCnt;


unsigned char applicationMode = APP_STANDBY_MODE;
unsigned char timerMode = TIMER_PWM_MODE;

unsigned char tempMode;
unsigned char calibrateUpdate = 0;
unsigned char tempPolarity = TEMP_SAME;
unsigned int TXByte;
                              
/* Using an 8-value moving average filter on sampled ADC values */
long tempMeasured;
unsigned char tempMeasuredPosition=0;
long tempAverage;

long tempCalibrated, tempDifference;



void InitializeLeds(void);
void InitializeButton(void);
void PreApplicationMode(void);                     // Blinks LED, waits for button press
void ConfigureAdcTempSensor(void);
void ConfigureTimerPwm(void);
void ConfigureTimerUart(void);
void Transmit(void);
void InitializeClocks(void);

void main(void)
{
WDTCTL = WDTPW + WDTHOLD;               // Stop WDT

InitializeClocks();
InitializeButton();
InitializeLeds();
PreApplicationMode();                     // Blinks LEDs, waits for button press

/* Application Mode begins */
applicationMode = APP_APPLICATION_MODE;
ConfigureTimerPwm();
   
__enable_interrupt();                     // Enable interrupts.


/* Main Application Loop */
while(1)
{   

}
}

void PreApplicationMode(void)
{   
LED_DIR |= LED0 + LED1;
LED_OUT |= LED0;                        // To enable the LED toggling effect
LED_OUT &= ~LED1;
   
BCSCTL1 |= DIVA_1;                        // ACLK/2
BCSCTL3 |= LFXT1S_2;                      // ACLK = VLO

TACCR0 = 1200;                           //   
TACTL = TASSEL_1 | MC_1;                  // TACLK = SMCLK, Up mode.
TACCTL1 = CCIE + OUTMOD_3;                // TACCTL1 Capture Compare
TACCR1 = 600;
__bis_SR_register(LPM3_bits + GIE);          // LPM0 with interrupts enabled
}

void ConfigureTimerPwm(void)
{
timerMode = TIMER_PWM_MODE;

TACCR0 = TIMER_PWM_PERIOD;                              //   
TACTL = TASSEL_2 | MC_1;                  // TACLK = SMCLK, Up mode.
TACCTL0 = CCIE;
TACCTL1 = CCIE + OUTMOD_3;                // TACCTL1 Capture Compare
TACCR1 = 1;
}


// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{

{
    if (tempPolarity == TEMP_HOT)
      LED_OUT |= LED1;   
    if (tempPolarity == TEMP_COLD)      
      LED_OUT |= LED0;
    TACCTL0 &= ~CCIFG;            
}
}

#pragma vector=TIMERA1_VECTOR
__interrupt void ta1_isr(void)
{
TACCTL1 &= ~CCIFG;
LED_OUT ^= (LED0 + LED1);
   
}

void InitializeClocks(void)
{

BCSCTL1 = CALBC1_1MHZ;                  // Set range
DCOCTL = CALDCO_1MHZ;
BCSCTL2 &= ~(DIVS_3);                         // SMCLK = DCO / 8 = 1MHz
}

void InitializeButton(void)               // Configure Push Button
{
BUTTON_DIR &= ~BUTTON;
BUTTON_OUT |= BUTTON;
BUTTON_REN |= BUTTON;
BUTTON_IES |= BUTTON;
BUTTON_IFG &= ~BUTTON;
BUTTON_IE |= BUTTON;
}


void InitializeLeds(void)
{
LED_DIR |= LED0 + LED1;                        
LED_OUT &= ~(LED0 + LED1);
}

/* *************************************************************
* Port Interrupt for Button Press
* 1. During standby mode: to exit and enter application mode
* 2. During application mode: to recalibrate temp sensor
* *********************************************************** */
#pragma vector=PORT1_VECTOR
__interrupt void PORT1_ISR(void)
{   
BUTTON_IFG = 0;
BUTTON_IE &= ~BUTTON;            /* Debounce */
WDTCTL = WDT_ADLY_250;
IFG1 &= ~WDTIFG;               /* clear interrupt flag */
IE1 |= WDTIE;
   
if (applicationMode == APP_APPLICATION_MODE)
{
    tempCalibrated = tempAverage;
    calibrateUpdate= 1;
}
else
{
    applicationMode = APP_APPLICATION_MODE; // Switch from STANDBY to APPLICATION MODE
    __bic_SR_register_on_exit(LPM3_bits);      
}   
}

#pragma vector=WDT_VECTOR
__interrupt void WDT_ISR(void)
{
    IE1 &= ~WDTIE;                   /* disable interrupt */
    IFG1 &= ~WDTIFG;               /* clear interrupt flag */
    WDTCTL = WDTPW + WDTHOLD;      /* put WDT back in hold state */
    BUTTON_IE |= BUTTON;             /* Debouncing complete */
}

// ADC10 interrupt service routine
#pragma vector=ADC10_VECTOR
__interrupt void ADC10_ISR (void)
{
__bic_SR_register_on_exit(CPUOFF);      // Return to active mode
}


137703056 发表于 2012-5-8 09:43:22

在官网上没有l例程么?自己去下载很方便啊!

scty 发表于 2012-5-8 16:28:54

TI官网提供的例程代码:MSP430G2x53, MSP430G2x33, MSP430G2x13, MSP430G2x03 Code Examples

asunders 发表于 2012-5-9 14:32:24

scty 发表于 2012-5-8 16:28 static/image/common/back.gif
TI官网提供的例程代码:MSP430G2x53, MSP430G2x33, MSP430G2x13, MSP430G2x03 Code Examples

...

谢谢~~~~

asunders 发表于 2012-5-9 14:32:52

137703056 发表于 2012-5-8 09:43 static/image/common/back.gif
在官网上没有l例程么?自己去下载很方便啊!

没去官网看过。。学校发的板子。。

asunders 发表于 2012-5-9 14:34:14

yangsen 发表于 2012-5-8 09:34 static/image/common/back.gif
给你一个闪LED灯的,在launchpad上跑的。用户手册,数据手册到TI网站上下载吧,我就不浪费网站资源了。PS, ...

谢谢~
英文手册也看,一个是MSP430X2XX FAMILY,一个是MSP430G2553。。但是没有例程学起来还是有点慢

asunders 发表于 2012-5-9 14:37:55

scty 发表于 2012-5-8 16:28 static/image/common/back.gif
TI官网提供的例程代码:MSP430G2x53, MSP430G2x33, MSP430G2x13, MSP430G2x03 Code Examples

...

那个,目前有一个小问题,手册上说用PXSEL,PXSEL2选择外围器件,可是我怎么知道那个器件是主外围还是次外围呢?譬如P1.1有一下功能:P1.1/TA0.0/ A1/CA1,这两个寄存器分别设置什么值的时候分别是哪个功能呢?

yangsen 发表于 2012-5-9 15:06:22

asunders 发表于 2012-5-9 14:37 static/image/common/back.gif
那个,目前有一个小问题,手册上说用PXSEL,PXSEL2选择外围器件,可是我怎么知道那个器件是主外围还是次外 ...

你去看芯片的用户手册,SLAU144,有讲IO的寄存器

lcofjp 发表于 2012-5-9 15:15:42

asunders 发表于 2012-5-9 14:37 static/image/common/back.gif
那个,目前有一个小问题,手册上说用PXSEL,PXSEL2选择外围器件,可是我怎么知道那个器件是主外围还是次外 ...

DATASHEET的IO口部分。

asunders 发表于 2012-5-9 15:41:10

lcofjp 发表于 2012-5-9 15:15 static/image/common/back.gif
DATASHEET的IO口部分。

我用的是MSP430 G2553,TI 的launch pad.
msp430x2xx family 的手册显示如下
8.2.5 FunctionSelectRegistersPxSELandPxSEL2
Portpinsareoftenmultiplexedwithotherperipheralmodulefunctions. Seethe device-specificdatasheet
to determinepinfunctions. EachPxSELandPxSEL2bitis usedto selectthe pinfunction -I/O portor
peripheralmodulefunction.
Table8-1.PxSELandPxSEL2
PxSEL2   PxSEL                     PinFunction
0            0                  I/O function is selected.
0            1                  Primaryperipheralmodulefunction is selected.
1            0                  Reserved.Seedevice-specificdatasheet.
1            1                  Secondaryperipheralmodulefunction is selected.
SettingPxSELx=1doesnotautomaticallysetthe pindirection.Otherperipheralmodulefunctions may
requirethe PxDIRxbitsto beconfiguredaccordingto the directionneededfor the modulefunction. See
the pinschematicsin the device-specificdatasheet.


然后我就去看msp430g2553的“ device-specificdatasheet”

然后只找到芯片图




asunders 发表于 2012-5-9 15:42:14

yangsen 发表于 2012-5-9 15:06 static/image/common/back.gif
你去看芯片的用户手册,SLAU144,有讲IO的寄存器

于是我还是不明白。。。图片上有的一个管脚有五六个功能,是怎么选择的。。

lcofjp 发表于 2012-5-9 16:00:13

asunders 发表于 2012-5-9 15:41 static/image/common/back.gif
我用的是MSP430 G2553,TI 的launch pad.
msp430x2xx family 的手册显示如下
8.2.5 FunctionSelectRegist ...

DATASHEET的Port Schematics部分,展开就是详细的引脚说明。

scty 发表于 2012-5-9 16:03:13

asunders 发表于 2012-5-9 14:37 static/image/common/back.gif
那个,目前有一个小问题,手册上说用PXSEL,PXSEL2选择外围器件,可是我怎么知道那个器件是主外围还是次外 ...

我试用G2433的时候发现的,它与常见的F2132在设置上还是有点小的区别的,就是IO的功能选择设置,多了一个寄存器PxSEL2,例如需要同时设置P2SEL、P2SEL2的值。
具体请仔细看数据手册吧。

asunders 发表于 2012-5-9 16:13:32

其实MSP430有没有像STM32那样的强大的库呢?以前用STM32的时候都是上来改几个参数就可以跑了。。

asunders 发表于 2012-5-9 16:17:58

lcofjp 发表于 2012-5-9 16:00 static/image/common/back.gif
DATASHEET的Port Schematics部分,展开就是详细的引脚说明。

呃。。请问是哪个data sheet?找了半天没找到

asunders 发表于 2012-5-9 16:19:59

lcofjp 发表于 2012-5-9 16:00 static/image/common/back.gif
DATASHEET的Port Schematics部分,展开就是详细的引脚说明。

噢。。找到了

asunders 发表于 2012-5-9 16:26:25

lcofjp 发表于 2012-5-9 16:00 static/image/common/back.gif
DATASHEET的Port Schematics部分,展开就是详细的引脚说明。

看了一下,终于明白了~~
谢谢~~{:handshake:}

lcofjp 发表于 2012-5-9 16:35:01

asunders 发表于 2012-5-9 16:26 static/image/common/back.gif
看了一下,终于明白了~~
谢谢~~

不客气。{:handshake:}

dianzichina 发表于 2012-5-9 16:38:09

int main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;

P1DIR = 0x41;                            // Set P1.0 to output direction
while(1)
{
    volatile unsigned int i;
    P1OUT ^= 0x41;                        // Toggle P1.0 using exclusive-OR
    i = 0xf000;                              // Delay
    while (i--);
}
}

asunders 发表于 2012-5-10 22:25:56

dianzichina 发表于 2012-5-9 16:38 static/image/common/back.gif
int main( void )
{
// Stop watchdog timer to prevent time out reset


其实我想要的是各模块的程序,组建一个类似STM32的库。。。为啥都给我个LED。。

dianzichina 发表于 2012-5-11 08:25:22

不是我打击你,你这标题没说清你要干吗啊?连内容也没说要STM32库,,,,小心有人举报你。。。。。。

avrgogo 发表于 2012-5-11 09:10:13

TI官网上的资料很全的。

asunders 发表于 2012-5-11 11:03:38

dianzichina 发表于 2012-5-11 08:25 static/image/common/back.gif
不是我打击你,你这标题没说清你要干吗啊?连内容也没说要STM32库,,,,小心有人举报你。。。。。。 ...

我的却不要STM32库阿..我就是要我标题写的那些资料..

asunders 发表于 2012-5-11 11:04:05

avrgogo 发表于 2012-5-11 09:10 static/image/common/back.gif
TI官网上的资料很全的。

英文不好上英文网站很头痛..

asunders 发表于 2012-5-11 11:05:28

dianzichina 发表于 2012-5-11 08:25 static/image/common/back.gif
不是我打击你,你这标题没说清你要干吗啊?连内容也没说要STM32库,,,,小心有人举报你。。。。。。 ...

我是要资料,然后资料齐全的话可以自己弄一个齐全的库,然后比喻了一下,"像STM32那样的库"..

asunders 发表于 2012-5-11 11:10:30

lcofjp 发表于 2012-5-9 16:35 static/image/common/back.gif
不客气。

那个,看数据手册和Laucnpad的例程研究了半天都没搞懂PWM波是怎么用定时器生成的,大侠能不能解释一下?
void pwm_init(void)                                //使用定时器1
{
        P2DIR |=(BIT2+BIT4);                //P2.4和P2.2设置为输出模式
        P2SEL |=(BIT2+BIT4);                //设置P2.4和P2.2为外围模块使用
        TA1CCR0=10000;                                //设定PWM的周期

        TA1CCTL1=OUTMOD_7;                        //设定CCR1单元为复位/置位模式,第一束PWM波
        TA1CCR1=2000;                                //装入CCR1的占空值

        TA1CCTL2=OUTMOD_7;                        //设定CCR2单元为复位/置位模式,第二束PWM波
        TA1CCR2=1000;                                //装入CCR2的占空值

        TA1CTL=TASSEL_2+MC_1;                //计数器0的时钟选择为SMCLK,增计数模式
}


我用这个可以使,但是lauchpad 的例程上也说生成了pwm波,就没找到是哪里控制的,也没发现和上面那个小程序类似的控制模块。所以虽然有个能用的小程序,但是一塌糊涂。。

lcofjp 发表于 2012-5-11 11:14:56

asunders 发表于 2012-5-11 11:05 static/image/common/back.gif
我是要资料,然后资料齐全的话可以自己弄一个齐全的库,然后比喻了一下,"像STM32那样的库".. ...

不要总想着库,你已经走入误区了。
430的外设差别太大,库通用不起来。5和6系列好像有库,这两个系列强大一些。
430对外设操作的语句都很精简,没有有多少条,封装成库反而没啥效率了。
TI已经给出了对各个系列的各种外设操作的基本程序,你可以好好看看,愿意封装的话可以自己封一个。

lcofjp 发表于 2012-5-11 11:23:45

asunders 发表于 2012-5-11 11:10 static/image/common/back.gif
那个,看数据手册和Laucnpad的例程研究了半天都没搞懂PWM波是怎么用定时器生成的,大侠能不能解释一下?
v ...

仔细看下user's guide的相关部分吧,都有非常详细描述,有很多模式像定时器,输入捕获,比较输出。我对430的外设操作也不是很熟悉。

asunders 发表于 2012-5-15 23:42:24

lcofjp 发表于 2012-5-11 11:23 static/image/common/back.gif
仔细看下user's guide的相关部分吧,都有非常详细描述,有很多模式像定时器,输入捕获,比较输出。我对43 ...

您好,我这几天一直在看User's guide
看到比较器部分的时候有一点点不大理解的地方。

asunders 发表于 2012-5-15 23:46:01

lcofjp 发表于 2012-5-11 11:23 static/image/common/back.gif
仔细看下user's guide的相关部分吧,都有非常详细描述,有很多模式像定时器,输入捕获,比较输出。我对43 ...

就是说,是用来改变采样时间?

asunders 发表于 2012-5-15 23:47:26

asunders 发表于 2012-5-15 23:42 static/image/common/back.gif
您好,我这几天一直在看User's guide
看到比较器部分的时候有一点点不大理解的地方。
...

置一和不置一有什么区别呢?上下联通的两端都有CA1,CA2,这两个有什么区别和联系呢?
页: [1]
查看完整版本: 求助 哪位大侠有 MSP430x2xx 例程 或是资料