找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 8453|回復(fù): 10
收起左側(cè)

msp430f5529 pwm源程序

[復(fù)制鏈接]
ID:370145 發(fā)表于 2018-7-12 13:34 | 顯示全部樓層 |閱讀模式
msp430f5529還是5438a的,親測(cè)有效,函數(shù)封裝好了

單片機(jī)源程序如下:

  1. #include <msp430f5438a.h>
  2. void delay_1us(void)
  3.    {
  4.      unsigned int i;
  5.      for(i=0;i<100;i++);
  6.    }

  7. // *************************************************************
  8. // 延時(shí)函數(shù),延時(shí)N*1us
  9. // *************************************************************
  10. void delay_nus(unsigned int n)
  11.    {
  12.      unsigned int i;
  13.      for(i=0;i<n;i++)
  14.      {
  15.        delay_1us();
  16.      }
  17.    }

  18. // *************************************************************
  19. // 延時(shí)函數(shù),延時(shí)1ms
  20. // *************************************************************
  21. void delay_1ms(void)
  22.    {
  23.      unsigned int i;
  24.      for (i=0;i<1140;i++);
  25.    }

  26. // *************************************************************
  27. // 延時(shí)函數(shù),延時(shí)N*ms
  28. // *************************************************************
  29. void delay_nms(unsigned int n)
  30.    {
  31.      unsigned int i;
  32.      for (i=0;i<n;i++)
  33.      {
  34.        delay_1ms();
  35.      }
  36.    }

  37. // *************************************************************
  38. // 主程序
  39. // *************************************************************
  40. void main(void)
  41. {
  42.    unsigned const PWMPeriod = 200;
  43.    unsigned const PWMPeriod1= 300;
  44.    unsigned int i;
  45.    unsigned int j;
  46.    WDTCTL = WDTPW + WDTHOLD;   // 關(guān)閉看門狗
  47.    P8DIR |= BIT1;              // 設(shè)置P1.2為輸出
  48.    P8SEL |= 0x01; // 設(shè)置P1.2為TA0.1輸出
  49.    TA0CCAR0=500-1;
  50.    TA0CCTL1 = OUTMOD_7;           // 設(shè)置PWM 輸出模式為:7 - PWM復(fù)位/置位模式,              
  51.    TA0CCR1 =PWMPeriod;           // 設(shè)置PWM 周期
  52.    TA0CCTL2 = OUTMOD_7;
  53.    TA0CCR2 = PWMPeriod1;// 即輸出電平在TAR的值等于CCRx時(shí)復(fù)位,當(dāng)TAR的值等于CCR0時(shí)置位。
  54.    TA0CTL = TASSEL_2 + MC_1;    // 設(shè)置TIMERA的時(shí)鐘源為SMCLK, 計(jì)數(shù)模式為up
  55. // _BIS_SR(LPM0_bits + GIE);

  56.    
  57.    while(1)
  58.    {
  59.      //漸亮過(guò)程:不斷設(shè)置CCR1的值,使翻轉(zhuǎn)的時(shí)間變長(zhǎng),改變PWM的占空比
  60.      
  61.     for(i=0;i<PWMPeriod;i+=1)
  62.      {
  63.        TA0CCR1=i;
  64.        delay_nus(600);           //占空比變化的延時(shí),調(diào)整延遲時(shí)間可改變呼吸燈變亮的速度
  65.      }
  66.      //漸暗過(guò)程:不斷設(shè)置CCR1的值,使翻轉(zhuǎn)的時(shí)間變短,改變PWM的占空比
  67.      
  68.     for(i=PWMPeriod;i>0;i-=1)
  69.      {
  70.        TA1CCR1=i;
  71.        delay_nus(50);           //占空比變化的延時(shí),調(diào)整延遲時(shí)間可改變呼吸燈變暗的速度
  72.      }
  73.      delay_nms(70);
  74.    
  75.   
  76.    
  77. }
  78. }
復(fù)制代碼

所有資料51hei提供下載:
timertest.zip (346.8 KB, 下載次數(shù): 98)


評(píng)分

參與人數(shù) 1黑幣 +12 收起 理由
天才小能貓 + 12

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:371146 發(fā)表于 2018-7-15 11:58 | 顯示全部樓層
感謝感謝
回復(fù)

使用道具 舉報(bào)

ID:268725 發(fā)表于 2018-7-15 12:53 | 顯示全部樓層
頂一下
回復(fù)

使用道具 舉報(bào)

ID:371146 發(fā)表于 2018-7-15 15:48 | 顯示全部樓層
程序好像有問題,燈不會(huì)漸變,而且程序54行TA0CCR0=500-1; 多打了個(gè)A。
請(qǐng)問大佬有關(guān)于5529舵機(jī)的PWM信號(hào)控制的程序嗎?
回復(fù)

使用道具 舉報(bào)

ID:343756 發(fā)表于 2018-7-18 16:45 | 顯示全部樓層
P8DIR |= BIT1;              // 設(shè)置P1.2為輸出    P8SEL |= 0x01; // 設(shè)置P1.2為TA0.1輸出
回復(fù)

使用道具 舉報(bào)

ID:343756 發(fā)表于 2018-7-18 16:45 | 顯示全部樓層
你這里是說(shuō)的P8.1吧
回復(fù)

使用道具 舉報(bào)

ID:343756 發(fā)表于 2018-7-18 16:46 | 顯示全部樓層
P8DIR |= BIT1;              // 設(shè)置P1.2為輸出
   P8SEL |= 0x01; // 設(shè)置P1.2為TA0.1輸出
這里是說(shuō)的P8.1吧?怎么寫p1.2
回復(fù)

使用道具 舉報(bào)

ID:592754 發(fā)表于 2019-10-14 08:59 | 顯示全部樓層
你確定親測(cè)有效嗎,里面存在好幾處錯(cuò)誤,不過(guò)還是感謝你,提供了一個(gè)思路。
回復(fù)

使用道具 舉報(bào)

ID:682335 發(fā)表于 2020-1-6 17:44 | 顯示全部樓層
問一下 MSP430f149 改一下其中的led端口和頭文件啥的  是不是可以通用? 我改了以后msp430f149不能漸變
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表