1445|0

1704

帖子

0

TA的资源

五彩晶圆(初级)

楼主
 

MSP430F系列单片机学习笔记_库函数编程思想 [复制链接]

 

            最近时间在准备TI430的电子竞赛,每天早上8点开始就一直在实验室,呆到晚上12点多才回来,虽然人已经很疲惫,但是还是坚持每天在EDN China博客更新MSP430F系列单片机的学习笔记,也算是经验总结吧。:)坚持!!
              今天想讲一下的就是MSP430F系列单片机的库函数编程思想,觉得效果很好,代码可移植性很强,实用价值很高!!
              已经很晚了,暂时分享一个简单的例程吧。
                                             基于MSP430F系列单片机TB的PWM输出

  1. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  2.  
  3. /****************************************************************************
  4. *  文件名称:
  5. *          TB.c
  6. *  文件说明:
  7. *          使用TB输出PWM波形,可通过set_TB设定不同的模式
  8. *****************************************************************************/
  9. #include  "msp430x44x.h"
  10. /******************************************************************************
  11. * 设置TimerB输出PWM的工作模式
  12. ********************************************************************************/
  13. void set_TB(int mode)
  14. {
  15.      if (mode==2)
  16.      {                          // 翻转/复位模式,CCR1=25%,CCR2=75%
  17.          TBCCR0  = 11;           // PWM 周期
  18.          TBCCTL1 = OUTMOD_2;      // PWM toggle/reset
  19.          TBCCR1  = 9;           // ccr1 Pwm cycle
  20.          TBCCTL2 = OUTMOD_2;      // PWM toggle/reset
  21.          TBCCR2  = 3;           // ccr2 Pwm cycle
  22.          P2DIR |= BIT1;         // p2.1 模式设置
  23.          P2SEL |= BIT1;         // p2.1 option select
  24.          P2DIR |= BIT2;         // P2.2 output mode
  25.          P2SEL |= BIT2;         // P2.2 option select
  26.          TBCTL |= MC0;          // 设置递增模式
  27.       }else if (mode==0x03)
  28.       {                         //置位/复位模式,CCR1=25%,CCR2=75%
  29.  
  30.          TBCCR0  = 11;           // PWM 周期
  31.          TBCCTL1 = OUTMOD_3;      // PWM toggle/reset
  32.          TBCCR1  = 9;           // ccr1 Pwm cycle
  33.          TBCCTL2 = OUTMOD_3;      // PWM toggle/reset
  34.          TBCCR2  = 3;           // ccr2 Pwm cycle
  35.          P2DIR |= BIT1;         // p2.1 output mode
  36.          P2SEL |= BIT1;         // p2.1 option select
  37.          P2DIR |= BIT2;         // P2.2 output mode
  38.          P2SEL |= BIT2;         // P2.2 option select
  39.          TBCTL |= MC0;          // 设置递增模式
  40.       }else if (mode==0x04)
  41.       {                         // 翻转模式,CCR1=50%,CCR2=50%
  42.          TBCCR0  = 11;           // PWM 周期
  43.          TBCCTL1 = OUTMOD_4;      // PWM toggle/reset
  44.          TBCCR1  = 9;           // ccr1 Pwm cycle
  45.          TBCCTL2 = OUTMOD_4;      // PWM toggle/reset
  46.          TBCCR2  = 3;           // ccr2 Pwm cycle
  47.          P2DIR |= BIT1;         // p2.1 output mode
  48.          P2SEL |= BIT1;         // p2.1 option select
  49.          P2DIR |= BIT2;         // P2.2 output mode
  50.          P2SEL |= BIT2;         // P2.2 option select
  51.          TBCTL |= MC0;          // 设置递增模式
  52.       }else if (mode==0x06)
  53.       {                         //翻转/置位模式,CCR1=75%,CCR2=25%
  54.  
  55.          TBCCR0  = 11;           // PWM 周期
  56.          TBCCTL1 = OUTMOD_6;      // PWM toggle/reset
  57.          TBCCR1  = 9;           // ccr1 Pwm cycle
  58.          TBCCTL2 = OUTMOD_6;      // PWM toggle/reset
  59.          TBCCR2  = 3;           // ccr2 Pwm cycle
  60.          P2DIR |= BIT1;         // p2.1 output mode
  61.          P2SEL |= BIT1;         // p2.1 option select
  62.          P2DIR |= BIT2;         // P2.2 output mode
  63.          P2SEL |= BIT2;         // P2.2 option select
  64.         TBCTL |= MC0;           // 设置递增模式
  65.       }else if (mode==0x07)
  66.       {                         // 复位/置位模式
  67.  
  68.          TBCCR0  = 11;           // P1.2--> CCR1 - 75% PWM
  69.                                 // P2.0--> CCR2 - 25% PWM
  70.                                 // PWM 周期
  71.          TBCCTL1 = OUTMOD_7;      // ccrl reset/set
  72.          TBCCR1  = 9;           // ccr1 Pwm cycle
  73.          TBCCTL2 = OUTMOD_7;      // ccr1 reset/set
  74.          TBCCR2  = 3;           // ccr2 Pwm cycle
  75.          P2DIR |= BIT1;         // p2.1 output mode
  76.          P2SEL |= BIT1;         // p2.1 option select
  77.          P2DIR |= BIT2;         // P2.2 output mode
  78.          P2SEL |= BIT2;         // P2.2 option select
  79.          TBCTL |= MC0;          // 设置递增模式
  80.       }
  81. }
  82. /******  在Timer B的不同工作模式下输出PWM波形  *****/
  83. void main()
  84. {
  85.      unsigned int pwm_Delay;
  86.      char tmpv,tmp[5] = {2,3,4,6,7};
  87.  
  88.      WDTCTL = WDTHOLD + WDTPW;  //关闭看门狗
  89.      FLL_CTL0 |= XCAP14PF;
  90.      TBCTL = TBSSEL0 + TBCLR;  //ACLK,清除TAR
  91.      tmpv=0;
  92.      while(1)
  93.      {
  94.         set_TB(tmp[tmpv]);      //选择 PWM 模式
  95.         tmpv = (tmpv + 1) % 5;  //改变模式
  96.         for(pwm_Delay=0;pwm_Delay<0xffff;pwm_Delay++);//delay
  97.      };
  98. }
 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表