karaok

    1. DSP C2000程序员高手进阶.pdf完整版(1-14章) 66/23560 微控制器 MCU 2015-06-16
      这个资料很好啊! 谢谢楼主的贡献!!
    2. 求完整版《PIC单片机实用教程-基础篇》 21/9204 Microchip MCU 2015-06-16
      这个资料很好啊! 谢谢楼主的贡献!!
    3. 这个资料很好啊! 谢谢楼主的贡献!!
    4. 电子琴设计完整版 47/20081 单片机 2015-06-16
      这个资料很好啊! 谢谢楼主的贡献!!:handshake:handshake
    5. 这个资料很好啊! 谢谢楼主的贡献!!
    6. C51教程完整版 137/37696 51单片机 2015-06-16
      这个资料很好啊! 谢谢楼主的奉献!!
    7. 如何往MSP430G2553芯片中下载程序? 18/8076 微控制器 MCU 2014-04-08
      huixianfxt 发表于 2014-4-7 20:55 最简单的是把你那芯片插到launchpad上呢,下载完毕后扒出来呢。。。简单的插拔就搞定了呢。。。难道你还 ...
      如果封装不同,就把Launch Pad上面那几个跳线连到你的目标板的相应脚上。那小半块是可以做仿真器的。
    8. 如何往MSP430G2553芯片中下载程序? 18/8076 微控制器 MCU 2014-04-08
      小右派 发表于 2014-4-7 22:03 https://bbs.eeworld.com.cn/thread-433901-1-1.html 看我发的帖子吧,详细的解决了4线制JTAG的问题,针对 ...
      MSP-EXP430G2_LaunchPad是两线的。
    9. 新手求助怎么控制红灯 14/3300 微控制器 MCU 2014-04-08
      //****************************************************************************** //  MSP430G2xx3 Demo - Timer_A, PWM TA1, Up/Down Mode, 32kHz ACLK // //  Description: This program generates one PWM output on P1.2 using //  Timer_A configured for up/down mode. The value in CCR0, 128, defines the //  PWM period/2 and the value in CCR1 the PWM duty cycle. Using //  32kHz ACLK as TACLK, the timer period is 7.8ms with a 75% duty cycle on //  P1.2. Normal operating mode is LPM3. //  ACLK = TACLK = LFXT1 = 32768Hz, MCLK = default DCO //  //* External watch crystal installed on XIN XOUT is required for ACLK *//        // //               MSP430G2xx3 //            ----------------- //        /|\|              XIN|- //         | |                 | 32kHz //         --|RST          XOUT|- //           |                 | //           |         P1.2/TA1|--> CCR1 - 75% PWM // //  D. Dang //  Texas Instruments, Inc //  December 2010 //   Built with CCS Version 4.2.0 and IAR Embedded Workbench Version: 5.10 //****************************************************************************** #include   void main(void) {   WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT   P1DIR |= 0x0C;                            // P1.2 and P1.3 output   P1SEL |= 0x0C;                            // P1.2 and P1.3 TA1/2 otions   CCR0 = 128;                               // PWM Period/2   CCTL1 = OUTMOD_6;                         // CCR1 toggle/set   CCR1 = 32;                                // CCR1 PWM duty cycle   TACTL = TASSEL_1 + MC_3;                  // ACLK, up-down mode   _BIS_SR(LPM3_bits);                       // Enter LPM3 } 这是TI的官方PWM代码,但看规格书P1.0好象不能使用PWM。 下面这个是以前一个供你参考,对错不知道 。 #include "MSP430G2202.h" #define PWM_P 1000 #define PWM_S 400 #define PWM_L 750 #define PWM_T 10 #define KEY1 BIT1 #define LED1 BIT2   //P1.2|TA0.1  P2.1=TA1.1 #define KEY2 BIT3 #define LED2 BIT4   //P1.4|TA0.2 P2.4=TA1.2 void POWER_ON(unsigned char); void POWER_OFF(unsigned char); void LED_DIM(unsigned char); void DIM_UP(unsigned char); void DIM_DOWN(unsigned char); void Delay(int); unsigned char POWER_STU1=0; //unsigned char POWER_STU2=0; unsigned char COUNT_UP=0;   ///////////////////////// //void POWER_ON(void); //void POWER_OFF(void); //void LED_DIM(void); //void Delay(int); //void DIM_UP(void); //void DIM_DOWN(void); //unsigned char POWER_STU=0; //unsigned char COUNT_UP=1;   void main( void ) {   // Stop watchdog timer to prevent time out reset   WDTCTL = WDTPW + WDTHOLD;   DCOCTL|= MOD0+DCO0;//+DCO1;//+DCO2             // Set DCO Frequence select   BCSCTL1|=RSEL2;//+RSEL0;// RSEL3++RSEL1;     // Set DCO Resistor // P1SEL |= LED1+LED2;                    // P1.6 TA1/2 options //P1SEL2 |=LED2;   P1OUT &= ~(LED1+LED2);   P1DIR |= (LED1+LED2);//                       // P1.0 and P1.6 output       CCR0 = PWM_P;                            // PWM Period   CCTL1 = OUTMOD_7;                         // CCR1 reset/set   CCTL2 = OUTMOD_7;                         // CCR2 reset/set //TACTL = TASSEL_2 + MC_1;                   // SMCLK, up mode   P1IE |= BIT3;                            // P1.3 interrupt enabled   P1IES|= BIT3;                             // P1.3 H/L Hiedge   P1IFG &= ~(BIT3);                          // P1.3 IFG cleared   _EINT();        _BIS_SR(LPM0_bits);                        // Enter LPM0 } /*********** P1 port 中断程序 ***************/ #pragma vector=PORT1_VECTOR __interrupt void Port_11(void) { switch(P1IFG&(KEY1+KEY2))     {   case KEY1:     Delay(20);//延迟,防误判     if((P1IN&KEY1)==0)     //再次确认键已经按下;        { Delay(500);//延时0.5S          if((P1IN & KEY1)!=0)           {             if ((POWER_STU1&LED1)==0)             {               POWER_ON(LED1);                           POWER_STU1|=LED1;             }             else              {               POWER_OFF(LED1);               POWER_STU1&=~LED1;              }        }                  Delay(1000);         LED_DIM(LED1);             }                 P1IFG &=~(KEY1);   break;   case KEY2:     Delay(20);//延迟,防误判     if((P1IN&KEY2)==0)     //再次确认键已经按下;        { Delay(500);//延时0.5S          if((P1IN & KEY2)!=0)           {             if ((POWER_STU1&LED2)==0)             {               POWER_ON(LED2);                           POWER_STU1|=LED2;             }             else              {               POWER_OFF(LED2);               POWER_STU1&=~LED2;              }           }                  Delay(1000);         LED_DIM(LED2);        }            P1IFG &=~(KEY2);   break;      }    } //LED渐变调光 void LED_DIM(unsigned char LEDx) {   unsigned char KEYx; if (LEDx==LED1) {KEYx=KEY1;} else {   if(LEDx==LED2)   {     KEYx=KEY2;   }   else   {     KEYx=(KEY1+KEY2);   } }      while(POWER_STU1&&((P1IN&KEYx)==0))                     //P1.3为LOW,开始自动调光       {  Delay(10);          if(COUNT_UP)            {                DIM_UP(LEDx);            }          else            {              DIM_DOWN(LEDx);            }       }     P1IFG &=~(KEYx); }      //POWER ON OFF void POWER_ON(unsigned char LED_x) {        POWER_STU1|=LED_x;        P1DIR|=LED_x;        P1SEL|=LED_x;        P2SEL|=(LED_x&LED2);               CCR0 = PWM_P;                               // PWM Period        CCTL2=CCTL1 = OUTMOD_7;        switch(LED_x)        {        case LED1+LED2:         CCR2=CCR1=5;                                    // CCR1 reset/set         for (; CCR115)      {        Delay(10);        CCR1-=10;        TACTL = TASSEL_2 + MC_1;       }      break;    ///////      case LED2:      while(CCR2>15)      {        Delay(10);        CCR2-=10;        TACTL = TASSEL_2 + MC_1;       }      break;         P1OUT&=~(LED_y);      P1DIR&=~(LED_y);      POWER_STU1&=~(LED_y);   }    // void DIM_UP(unsigned char LED_n)    { int i;     if(CCR1>CCR2)     {i=CCR1;}     else     {i=CCR2;}          switch (LED_n)      {       case LED1+LED2:        if(i
    10. Mark:tongue:
    11. #include   #define CPU_F ((double)1000000) #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) #define PWM_P 0xFFFF #define PWM_2 0xFFF #define PWM_3 0xEFF #define KEY1 BIT3 void SET0(void);//Standby void SET30(void);//30% Dim void SET100(void);//No Dim void SET_FL(void);//Flash Mode unsigned char STU1=0; void main(void) {       WDTCTL = WDTPW + WDTHOLD;// Stop watchdog timer to prevent time out reset   DCOCTL|= MOD0+DCO0;//  +DCO1+DCO2           //Set DCO Frequence select   BCSCTL1|=DIVA_0+RSEL0;// +RSEL1+RSEL2+RSEL3    // Set DCO Resistor      P1DIR &= ~BIT3;                          //P1.3 input   P1REN |=BIT3;                            // P1.3 pullup   P1IE |= BIT3;                            // P1.3 interrupt enabled   P1IES |= BIT3;                           // P1.3 Hi/lo edge   P1IFG &= ~BIT3;                          // P1.3 IFG cleared      STU1=0;   SET0();         _BIS_SR(LPM3_bits + GIE);                       // Enter LPM3 } #pragma vector=PORT1_VECTOR __interrupt void Port_1 (void) {   if((P1IFG&KEY1)==KEY1) //KEY1 按下   {    delay_ms(20);     if((P1IN&KEY1)==0)     {       switch(STU1)       {       case 0:           SET100();           STU1=1;           break;       case 1:           SET30();                STU1=2;           break;       case 2:           SET_FL();           STU1=3;           break;      case 3:           STU1=0;           SET0();           break;       }       P1IFG &= ~BIT3;                           // P1.3 IFG cleared     }    }   } void SET100(void) {   P1DIR |= BIT6+BIT4+BIT0;// P1.2 and P1.3 output   P1SEL |=BIT4+BIT0;//   P1OUT |=BIT6+BIT4+BIT0;// } void SET30(void) {   P1DIR |= BIT6+BIT4+BIT0;//                            // P1.2 and P1.3 output   P1SEL |= BIT6+BIT4+BIT0;//                            // P1.2 and P1.3 TA1/2 options   P1OUT |= BIT3;      CCR0 = PWM_P;                             // PWM Period   CCTL1 = OUTMOD_3;                         // CCR1 reset/set   CCR1 = PWM_3;                               // CCR1 PWM duty cycle   TACTL = TASSEL_2 + MC_1;                  // MCLK, up mode } void SET0(void) {   P1OUT  &= BIT6;   P1IFG &= ~BIT3; //_BIS_SR(LPM4_bits + GIE);   } void SET_FL(void)                   //Flash Mode {   P1DIR |= BIT6;                            // P1.2 and P1.3 output   P1SEL |= BIT6;                            // P1.2 and P1.3 TA1/2 options   P1OUT |= BIT6;      CCR0 = PWM_P;                             // PWM Period   CCTL1 = OUTMOD_2;                         // CCR1 reset/set   CCR1 = PWM_3;                               // CCR1 PWM duty cycle   TACTL = TASSEL_1 + MC_1;                  // ACLK, up mode }
    12. 用LM3S811做模拟电梯成功了!总算交差了! 8/4101 微控制器 MCU 2012-02-12
      佩服高人,努力学习.
    13. 和lm3s811配套用的东东 15/7647 微控制器 MCU 2012-02-12
      新手上路,我用的是IAR :)
    14. lm3s 引脚死锁原理及解决办法! 4/6999 微控制器 MCU 2012-02-12
      如果出现JTAG接口连接失效的情况,可以通过LMFlashProgrammer编程工具软件来解锁。该软件可以在广州周立功单片机网站“http://www.ZLGMCU.com”或Luminary Micro官方网站“http://www.LuminaryMicro.com”下载到。解锁操作的具体步骤是: 􀁺 运行LMFlashProgrammer软件,把JTAG Speed(Hz)调到100,000以下; 􀁺 点击在Flash Utilties选项卡里的Erase按钮进行擦除操作,看能否恢复连接; 􀁺 如果不行,则切换到Other Utilties选项卡,在Debug Port Unlock复选框里选择芯片的家族:LM3S1000以下的为Sandstorm(沙暴)家族,LM3S1000以上的为Fury(狂暴)和DustDevil(尘魔)家族; 􀁺 先按住复位键不松手,再点击Other Utilties选项卡里的Unlock按钮进行解锁操作; 􀁺 操作完成后重新复位芯片即完成解锁操作,同时片内Flash内容也被擦除。 需要当心的是:对于Sandstorm家族(即LM3S100、300、600、800等),一旦JTAG接口因为误将其无防护地配置为GPIO接口而被锁定,则有可能再也无法恢复。为了防患于未然,我们建议在编写每一个应用程序时都必须要在main( )函数的开始处插入一段能够预防JTAG失效的代码(对于Fury和DustDevil家族也推荐这样做)。在Demo例程中jtagWait( )函数就是预防JTAG失效的范例代码,请认真参考。该函数的工作原理是: 􀁺 将能够有效预防JTAG失效的函数jtagWait( )插入到main( )函数的开始处; 如果出现JTAG接口连接失效的情况,可以通过LMFlashProgrammer编程工具软件来解锁。该软件可以在广州周立功单片机网站“http://www.ZLGMCU.com”或Luminary Micro官方网站“http://www.LuminaryMicro.com”下载到。解锁操作的具体步骤是: 􀁺 运行LMFlashProgrammer软件,把JTAG Speed(Hz)调到100,000以下; 􀁺 点击在Flash Utilties选项卡里的Erase按钮进行擦除操作,看能否恢复连接; 􀁺 如果不行,则切换到Other Utilties选项卡,在Debug Port Unlock复选框里选择芯片的家族:LM3S1000以下的为Sandstorm(沙暴)家族,LM3S1000以上的为Fury(狂暴)和DustDevil(尘魔)家族; 􀁺 先按住复位键不松手,再点击Other Utilties选项卡里的Unlock按钮进行解锁操作; 􀁺 操作完成后重新复位芯片即完成解锁操作,同时片内Flash内容也被擦除。 需要当心的是:对于Sandstorm家族(即LM3S100、300、600、800等),一旦JTAG接口因为误将其无防护地配置为GPIO接口而被锁定,则有可能再也无法恢复。为了防患于未然,我们建议在编写每一个应用程序时都必须要在main( )函数的开始处插入一段能够预防JTAG失效的代码(对于Fury和DustDevil家族也推荐这样做)。在Demo例程中jtagWait( )函数就是预防JTAG失效的范例代码,请认真参考。该函数的工作原理是: 􀁺 将能够有效预防JTAG失效的函数jtagWait( )插入到main( )函数的开始处; 􀁺 芯片正常复位时,由于KEY没有被按下,因此会直接运行后面的代码,即jtagWait( )函数不影响正常的操作; 􀁺 当需要JTAG连接时,先按住KEY不松手,再复位,则程序进入一个死循环,以等待JTAG连接,在此状态下连接是非常可靠的。 有了jtagWait( )函数的保障,我们就可以放心大胆地使用与JTAG接口复用的GPIO了,不必担心JTAG接口再被锁死的问题了!另外,我们还可以充分利用JTAG接口的这一特性来为自己的程序加密,以防非法复制。􀁺 芯片正常复位时,由于KEY没有被按下,因此会直接运行后面的代码,即jtagWait( )函数不影响正常的操作; 􀁺 当需要JTAG连接时,先按住KEY不松手,再复位,则程序进入一个死循环,以等待JTAG连接,在此状态下连接是非常可靠的。 有了jtagWait( )函数的保障,我们就可以放心大胆地使用与JTAG接口复用的GPIO了,不必担心JTAG接口再被锁死的问题了!另外,我们还可以充分利用JTAG接口的这一特性来为自己的程序加密,以防非法复制。

最近访客

< 1/1 >

统计信息

已有60人来访过

  • 芯积分:--
  • 好友:--
  • 主题:--
  • 回复:14

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言