打印

MSP430单片机的使用感受

[复制链接]
4367|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gangwa258123456|  楼主 | 2012-3-30 23:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
简单分享一下MSP430单片机的使用感受。 430系列应该说是近些年来比较受欢迎的单片机,在国内的普及也非常快。记得本科时,学习MCU是从51系列开始的,51单片机作为入门级的单片机,确实为进入MCU世界做了一个很好的铺垫,而后来,在具体的项目开发中,实际投入使用的却是430。MSP430的超低功耗、集成度和价格在市场上都是极具竞争力的,在各种终端设备和便携式电子产品的研发中具有得天独厚的优势。同时,TI的430系列紧密联系高校,在各种教学课程和电子设计竞赛中,都有它的身影。这也为430系列的产品推广做了很好的铺垫。当年在参加电赛的时候,得益于TI的430免费样片,省去了很多资费,在此也感谢TI对高校研究的支持。
另外,430芯片的模块化结构也让我们在实际的使用中更加得心应手,能够在不同的应用领域灵活选用最合适的芯片类型,同时减去了重新学习的过程,可以说具有很高的效率,这一点,也是其他系列单片机所不能比及的。
另外,我的一个感受是MSP430正在逐渐向着高集成度发展,其“单片作战”能力正在快速加强,比如近几年出的MSP430f5438单片机(我本科时第一个DIY的开发板的核心芯片,所以对它情有独钟...呵呵),其片上资源及其丰富,而且主频高达20M,可以说足以满足大部分中低端的市场需求,也可以摆脱以往的“我很省饭,但我也不很能干”的帽子....只是感觉其价格稍高,在这个价格段恐怕无法和ARM7系列相竞争。
总之,这么多年,用430很顺手,希望日后能用更多TI的优秀产品。

相关帖子

沙发
梅花望青竹| | 2012-3-31 08:40 | 只看该作者
TI的产品的种类很多,我们的选择很多,这样就保证了我们不会出现束手无策的麻烦!

使用特权

评论回复
板凳
tianm| | 2012-3-31 09:29 | 只看该作者
每个产品都有其特点 应用时要扬长避短

使用特权

评论回复
地板
q1252433913| | 2012-3-31 09:41 | 只看该作者
顶一下了,学习学习 1# gangwa258123456

使用特权

评论回复
5
jiangzhe8525| | 2012-3-31 17:05 | 只看该作者
430却是不错,430f149,169用疯了,不过我觉得STM8比他好用些,至少5V直接驱动一些器件。

使用特权

评论回复
6
jxmzzr| | 2012-3-31 22:16 | 只看该作者
不同意楼上的说法,STM8有两种低功耗方式:待机方式和掉电方式。正常情况下消耗的电流为 24mA ,在待机状态下,其耗电电流仍为 3mA ;即使在掉电方式下,电源电压可以下降到 2V ,但是为了保存内部 RAM 中的数据,还需要提供约 50uA 的电流。而 MSP430 系列单片机在低功耗方面的优越之处,是STM8不可比拟的。

使用特权

评论回复
7
jiangzhe8525| | 2012-4-1 09:28 | 只看该作者
那要看是用在什么场合了,如果是手持设备,用电池供电的,430是占有优势,如果是对功耗要求不高,我感觉STM还是好用些。

使用特权

评论回复
8
金融小数| | 2012-4-1 11:30 | 只看该作者
价格是关键

使用特权

评论回复
9
wangkangming| | 2012-5-4 16:04 | 只看该作者
学习了

使用特权

评论回复
10
ji7423| | 2012-5-4 17:03 | 只看该作者
感觉很好用啊。

使用特权

评论回复
11
在路上的旁观者| | 2013-4-29 15:32 | 只看该作者
正在学习5438A

使用特权

评论回复
12
在路上的旁观者| | 2013-4-29 15:34 | 只看该作者

//******************************************************************************
//  MSP430F5438A Demo - Timer_A3, Toggle P1.0;P2.1-3, Cont. Mode ISR, 32kHz ACLK
//
//  Description: Use Timer1_A CCRx units and overflow to generate four
//  independent timing intervals. For demonstration, CCR0, CCR1 and CCR2
//  output units are optionally selected with port pins P2.1, P2.2 and P2.3
//  in toggle mode. As such, these pins will toggle when respective CCRx
//  registers match the TAR counter. Interrupts are also enabled with all
//  CCRx units, software loads offset to next interval only - as long as
//  the interval offset is added to CCRx, toggle rate is generated in
//  hardware. Timer1_A overflow ISR is used to toggle P1.0 with software.
//  Proper use of the TAIV interrupt vector generator is demonstrated.
//  ACLK = TACLK = 32kHz, MCLK = SMCLK = default DCO ~1.045MHz
//
//  As coded and with TACLK = 32768Hz, toggle rates are:
//  P2.1= CCR0 = 32768/(2*4) = 4096Hz
//  P2.2= CCR1 = 32768/(2*16) = 1024Hz
//  P2.3= CCR2 = 32768/(2*100) = 163.84Hz
//  P1.0= overflow = 32768/(2*65536) = 0.25Hz
//
//               MSP430F5438A
//            -------------------
//        /|\|                   |
//         | |                   |
//         --|RST                |
//           |                   |
//           |         P2.1/TA1.0|--> CCR0
//           |         P2.2/TA1.1|--> CCR1
//           |         P2.3/TA1.2|--> CCR2
//           |               P1.0|--> Overflow/software
//           |               P1.0|--> LED
//
//   M. Morales
//   Texas Instruments Inc.
//   June 2009
//   Built with CCE Version: 3.2.2 and IAR Embedded Workbench Version: 4.11B
//******************************************************************************

#include "msp430x54xA.h"

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  P2SEL |= 0x0E;                            // P1.1 - P1.3 option select
  P2DIR |= 0x0E;                            // P2.1 - P2.3 outputs
  P1DIR |= 0x01;                            // P1.0 - Outputs
  TA1CCTL0 = OUTMOD_4 + CCIE;               // CCR0 toggle, interrupt enabled
  TA1CCTL1 = OUTMOD_4 + CCIE;               // CCR1 toggle, interrupt enabled
  TA1CCTL2 = OUTMOD_4 + CCIE;               // CCR2 toggle, interrupt enabled
  TA1CTL = TASSEL_1 + MC_2 + TACLR + TAIE;  // ACLK, contmode, clear TAR,
                                            // interrupt enabled

  __bis_SR_register(LPM3_bits + GIE);       // Enter LPM3, interrupts enabled
  __no_operation();                         // For debugger
}

// Timer1 A0 interrupt service routine
#pragma vector=TIMER1_A0_VECTOR
__interrupt void Timer_A0 (void)
{
  TA1CCR0 += 4;                             // Add Offset to CCR0
}

// Timer_A3 Interrupt Vector (TAIV) handler
#pragma vector=TIMER1_A1_VECTOR
__interrupt void TIMER1_A1_ISR(void)
{
  switch(__even_in_range(TA1IV,14))
  {
    case 0: break;                  
    case 2:  TA1CCR1 += 16;                 // Add Offset to CCR1
             break;
    case 4:  TA1CCR2 += 100;                // Add Offset to CCR2
             break;
    case 6:  break;                         // CCR3 not used
    case 8:  break;                         // CCR4 not used
    case 10: break;                         // CCR5 not used
    case 12: break;                         // Reserved not used
    case 14: P1OUT ^= 0x01;                 // overflow
             break;
    default: break;
}
}

使用特权

评论回复
13
在路上的旁观者| | 2013-4-29 15:36 | 只看该作者
求解????P2.1= CCR0 = 32768/(2*4) = 4096Hz
//  P2.2= CCR1 = 32768/(2*16) = 1024Hz
//  P2.3= CCR2 = 32768/(2*100) = 163.84Hz
//  P1.0= overflow = 32768/(2*65536) = 0.25Hz
上面的公式是怎么计算的???谢谢

使用特权

评论回复
14
在路上的旁观者| | 2013-4-29 15:38 | 只看该作者

使用特权

评论回复
15
465055608| | 2013-4-29 18:54 | 只看该作者
在路上的旁观者 发表于 2013-4-29 15:34
//******************************************************************************
//  MSP430F5438A D ...

TI的写的方法是把公式简化了,我把整个公式算给你看:
一个时钟周期的时间=1/时钟(这里是32768)
计数是4所以:((1/时钟)*4)这是半个周期的时间,因为4是指一种状态,所以要*2,就是(1/时钟)*2*4,此时你得到的是周期,你要换成频率,就是用1再去除这个式子,最后就是TI给的了。懂否?

使用特权

评论回复
评论
在路上的旁观者 2013-4-29 19:01 回复TA
感谢回答 
16
465055608| | 2013-4-29 18:57 | 只看该作者
在路上的旁观者 发表于 2013-4-29 15:38

你的5438A的例程可否给我发一份,是A的哦~谢了,我的邮箱是465055608@qq.com

使用特权

评论回复
17
在路上的旁观者| | 2013-4-29 19:02 | 只看该作者
465055608 发表于 2013-4-29 18:54
TI的写的方法是把公式简化了,我把整个公式算给你看:
一个时钟周期的时间=1/时钟(这里是32768)
计数是 ...

TA1CCTL0 = OUTMOD_4;    /*输出在定时器计数到TA1CCRO时翻转,输出周期是定时器周期的两倍*/

//上面的我的问题里面的*2是不是这个意思啊???:输出周期是定时器周期的两倍

使用特权

评论回复
18
在路上的旁观者| | 2013-4-29 19:03 | 只看该作者
465055608 发表于 2013-4-29 18:57
你的5438A的例程可否给我发一份,是A的哦~谢了,我的邮箱是465055608@qq.com

好的,可以共享资源

使用特权

评论回复
19
在路上的旁观者| | 2013-4-29 19:05 | 只看该作者
在路上的旁观者 发表于 2013-4-29 19:03
好的,可以共享资源

已经发送,其实只要用CCS5的话,里面有例程的,你是用IAR的吧?

使用特权

评论回复
20
在路上的旁观者| | 2013-4-29 19:06 | 只看该作者
465055608 发表于 2013-4-29 18:54
TI的写的方法是把公式简化了,我把整个公式算给你看:
一个时钟周期的时间=1/时钟(这里是32768)
计数是 ...

已经发送,其实只要用CCS5的话,里面有例程的,你是用IAR的吧?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

215

帖子

2

粉丝