找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7500|回复: 10
打印 上一主题 下一主题
收起左侧

msp430f5529 pwm源程序

[复制链接]
跳转到指定楼层
楼主
ID:370145 发表于 2018-7-12 13:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
msp430f5529还是5438a的,亲测有效,函数封装好了

单片机源程序如下:

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

  7. // *************************************************************
  8. // 延时函数,延时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. // 延时函数,延时1ms
  20. // *************************************************************
  21. void delay_1ms(void)
  22.    {
  23.      unsigned int i;
  24.      for (i=0;i<1140;i++);
  25.    }

  26. // *************************************************************
  27. // 延时函数,延时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;   // 关闭看门狗
  47.    P8DIR |= BIT1;              // 设置P1.2为输出
  48.    P8SEL |= 0x01; // 设置P1.2为TA0.1输出
  49.    TA0CCAR0=500-1;
  50.    TA0CCTL1 = OUTMOD_7;           // 设置PWM 输出模式为:7 - PWM复位/置位模式,              
  51.    TA0CCR1 =PWMPeriod;           // 设置PWM 周期
  52.    TA0CCTL2 = OUTMOD_7;
  53.    TA0CCR2 = PWMPeriod1;// 即输出电平在TAR的值等于CCRx时复位,当TAR的值等于CCR0时置位。
  54.    TA0CTL = TASSEL_2 + MC_1;    // 设置TIMERA的时钟源为SMCLK, 计数模式为up
  55. // _BIS_SR(LPM0_bits + GIE);

  56.    
  57.    while(1)
  58.    {
  59.      //渐亮过程:不断设置CCR1的值,使翻转的时间变长,改变PWM的占空比
  60.      
  61.     for(i=0;i<PWMPeriod;i+=1)
  62.      {
  63.        TA0CCR1=i;
  64.        delay_nus(600);           //占空比变化的延时,调整延迟时间可改变呼吸灯变亮的速度
  65.      }
  66.      //渐暗过程:不断设置CCR1的值,使翻转的时间变短,改变PWM的占空比
  67.      
  68.     for(i=PWMPeriod;i>0;i-=1)
  69.      {
  70.        TA1CCR1=i;
  71.        delay_nus(50);           //占空比变化的延时,调整延迟时间可改变呼吸灯变暗的速度
  72.      }
  73.      delay_nms(70);
  74.    
  75.   
  76.    
  77. }
  78. }
复制代码

所有资料51hei提供下载:
timertest.zip (346.8 KB, 下载次数: 98)


评分

参与人数 1黑币 +12 收起 理由
天才小能猫 + 12

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:371146 发表于 2018-7-15 11:58 | 只看该作者
感谢感谢
回复

使用道具 举报

板凳
ID:268725 发表于 2018-7-15 12:53 | 只看该作者
顶一下
回复

使用道具 举报

地板
ID:371146 发表于 2018-7-15 15:48 | 只看该作者
程序好像有问题,灯不会渐变,而且程序54行TA0CCR0=500-1; 多打了个A。
请问大佬有关于5529舵机的PWM信号控制的程序吗?
回复

使用道具 举报

5#
ID:343756 发表于 2018-7-18 16:45 | 只看该作者
P8DIR |= BIT1;              // 设置P1.2为输出    P8SEL |= 0x01; // 设置P1.2为TA0.1输出
回复

使用道具 举报

6#
ID:343756 发表于 2018-7-18 16:45 | 只看该作者
你这里是说的P8.1吧
回复

使用道具 举报

7#
ID:343756 发表于 2018-7-18 16:46 | 只看该作者
P8DIR |= BIT1;              // 设置P1.2为输出
   P8SEL |= 0x01; // 设置P1.2为TA0.1输出
这里是说的P8.1吧?怎么写p1.2
回复

使用道具 举报

8#
ID:592754 发表于 2019-10-14 08:59 | 只看该作者
你确定亲测有效吗,里面存在好几处错误,不过还是感谢你,提供了一个思路。
回复

使用道具 举报

9#
ID:682335 发表于 2020-1-6 17:44 | 只看该作者
问一下 MSP430f149 改一下其中的led端口和头文件啥的  是不是可以通用啊? 我改了以后msp430f149不能渐变
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表