历史上的今天
返回首页

历史上的今天

今天是:2025年07月25日(星期五)

正在发生

2020年07月25日 | MSP430f5529之PWM控制舵机程序

2020-07-25 来源:51hei

#include                         //函数库

int sum=0;                                  //全局变量

int main(void)

{

  volatile unsigned int i;                  //局部变量

                //设置timerA相关参数

  WDTCTL = WDTPW+WDTHOLD;                   // 关闭看门狗

  P1DIR |= BIT2;                            // 将P1.2设置为输出端口,验证状态

  P2DIR |= BIT0;                            //P2.0输出PWM波

  TA0CCTL1 = OUTMOD_7;                         //将输出模式选择为模式7

  TA0CTL = TASSEL_1 + MC_1 + TACLR ;         //选择ACLK时钟源,timerA计数模式选择up模式,计数到TA0CCR0,重置timerA计数器

  TA1CCTL1 = OUTMOD_7;

  TA1CTL = TASSEL_1 + MC_1 +TACLR ;


    P1REN |= BIT7;                            // 使能端口1.7

    P1OUT |= BIT7;                            // 选择下拉模式

    P1IES |= BIT7;                            // 1.7端口中断触发沿选择下降沿,高到低触发

    P1IFG &= ~BIT7;                           // 1.7端口中断寄存器清零

    P1IE |= BIT7;                       // 1.7端口中断使能


    __bis_SR_register(GIE);                     //将GIE置1,打开全局中断使能


  while(1)                                       // 采用switch,每一个case值对应一个状态

  {

    switch (sum)

    {

    case 0:

    P1OUT &= ~BIT2;                              //初始状态为低功耗状态

        TA0CCR1 = 0;

        __bis_SR_register(LPM3_bits);            //将LPM3置1,使系统进入低功耗

        break;                                   //跳出switch函数

    case 1:                                      //选系统的默认时钟,频率为1MHZ。

        P1OUT &= ~BIT2;                 //状态1要求:转到—60°,900微秒,设置的为1000微秒,时钟频率为32768Hz

        TA0CCR0 = 20000;          //验证进入状态1

        TA0CCR1 = 10000;

        TA1CCR0 = 100;              //输出PWM波周期

        TA1CCR1 = 34;               占空比

        P1DIR |=BIT2;

        P1SEL |=BIT2;

        P2DIR |=BIT0;

        P2SEL |=BIT0;

        break;

    case 2:               

        P1OUT &= ~BIT2;                 //状态2要求:转到0°。1520微秒

        TA0CCR0 = 20000;         

        TA0CCR1 = 5000;

        TA1CCR0 = 100;         

        TA1CCR1 = 50;

        P1DIR |=BIT2;

        P1SEL |=BIT2;

        P2DIR |=BIT0;

        P2SEL |=BIT0;

        break;

    case 3:                     //时钟为辅助时钟ACLK,频率为32768HZ

    //P1OUT &= ~BIT2;                 //状态3要求:转到60°   2100微秒

        TA0CCR0 = 20000;         

        TA0CCR1 = 800;

        TA1CCR0 = 100;

        TA1CCR1 = 66;

        P1DIR |=BIT2;

        P1SEL |=BIT2;  //选择1.2端口的复用功能,使之能够实现亮和灭

        P2DIR |=BIT0;

        P2SEL |=BIT0;

        break;


    }

    if(sum>3)                     //当sum的值超过3时,要让sum减3,重新进入循环

          {

            sum=sum-3;

          }


  }

}


//采用S1作为按键实现

#pragma vector=PORT1_VECTOR                //端口p1的中断函数

__interrupt void Port_1(void)

{

    unsigned int push_key =0;

    push_key == P1IFG & (P1IN);

    __delay_cycles(20000);                  //精确时间延迟,乘以MCLK时钟周期,防止抖动

    if( push_key == (P1IN & BIT7))

    {

    __low_power_mode_off_on_exit();        //SR寄存器置0,退出低功耗

    sum=sum+1;                               // 按下p1.7,sum加1,周期变化一次

    }

      P1IFG &= ~BIT7;                          // p1.7中断重置

}


推荐阅读

史海拾趣

CBM_America_Corporation公司的发展小趣事

在全球电子行业遭遇供应链危机时,CBM_America_Corporation面临着巨大的挑战。公司的原材料采购受到影响,生产成本大幅上升。为了应对这一危机,CBM积极调整采购策略,寻找新的供应商和合作伙伴。同时,公司还加大了研发投入,开发出了更加环保、节能的产品,以适应市场需求的变化。通过一系列措施的实施,CBM成功度过了危机,并保持了稳定的发展态势。

CTS公司的发展小趣事

随着全球化趋势的加强,CTS公司开始积极拓展国际市场。公司在全球范围内设立了多个生产基地和销售网络,以便更好地服务全球客户。同时,CTS还加强了与国际知名企业的合作,共同推动电子行业的发展。

西博臣(CYBERSEN)公司的发展小趣事

经过多年的技术积累和市场拓展,西博臣成功研发出了一系列高性能、高可靠性的湿度传感器产品,广泛应用于家电、医疗、气象、仓储等多个领域。同时,公司积极拓展国内外市场,与众多知名企业建立了长期稳定的合作关系,产品销售网络遍布全球多个国家和地区。

Hitachi Chemical Co America Ltd公司的发展小趣事

作为一家技术驱动型企业,西博臣始终将创新作为发展的核心动力。公司不断投入资源进行新技术和新产品的研发,积极申请各类专利和知识产权,以保护自己的技术成果。这些专利和知识产权不仅提升了公司的技术实力,也为其在市场中树立了良好的口碑。

西安航天民芯公司的发展小趣事

随着新能源汽车市场的蓬勃发展,西安航天民芯敏锐地捕捉到了这一机遇。公司投入大量资源进行新能源汽车BMS管理芯片的研发,并成功推出了国内首款新能源汽车专用BMS管理芯片。这一创新产品填补了国内空白,为公司在新能源汽车领域赢得了先机。

General Diode Corp公司的发展小趣事
检查控制单元是否受到干扰或损坏,重新设置焊接参数;若问题依旧存在,则需更换控制单元。

问答坊 | AI 解惑

低功耗无线充电的试验~~

原理相信我们每个人都熟悉,但是真正动手付诸实践,也需要不小的兴趣哦 i\'m going to show you how to make your own low-power wireless chargingcircuits that will let you pass electricity through the air (or anyother non-metallic med ...…

查看全部问答>

LPC1343+JLINKV7V8都不能调试?大家帮忙啊!

LPC1343+JLINKV7V8都不能调试?大家帮忙啊! 首先我的JLINK不能设置为100K的速度。 然后下载程序也不可以。 希望高手指点。 问题已经解决了!! [ 本帖最后由 lilong8470 于 2010-6-13 15:59 编辑 ]…

查看全部问答>

传入ImeToAsciiEx的虚拟键值内容是什么?

如题。 UINT WINAPI ImeToAsciiEx(       UINT    uVirtKey,       UINT    uScanCode,       CONST  LPBYTE lpbKeyState,     ...…

查看全部问答>

增量式编码器的相位对齐方式

增量式编码器的相位对齐方式 在此讨论中,增量式编码器的输出信号为方波信号,又可以分为带换相信号的增量式编码器和普通的增量式编码器,普通的增量式编码器具备两相正交方波脉冲输出信号A和B,以及零位信号Z;带换相信号的增量式编码器除具备ABZ ...…

查看全部问答>

能否用JTAG仿真器读芯片程序

我用的是LIERDA的并口仿真器,能否用此仿真器在IAR环境下读出芯片中的程序?谢谢…

查看全部问答>

求大神帮看看程序问题,为什么1602显示不出时间?

本帖最后由 ny760117144 于 2014-6-11 18:46 编辑 //P3^2和P3^3低电平检测,液晶输出圈数、序号、低电平时间 #include #include #define uchar unsigned char #define uint unsigned int uchar sun;//sun为主函数中1602显示地址所用 uchar ...…

查看全部问答>

出个MSP430 LaunchPad ,交换或者芯币兑换

如题,这个MSP430 LaunchPad是全新的,盒子什么的都在呢,用不到。换个其他的板子或者什么东西,或者芯币兑换,起芯3000,大家有什么想拿出来换的可以联系我啊 …

查看全部问答>

TMS320C6713 MCBSP0 SPI Slave模式 接收进不了中断

各位朋友:     SPI slave模式CPU轮询可以接收到数据,并且是正确的,但是 配置为中断接收却进步了中断 中断配置代码: void Setup_Spi_Interrupt(void) {     //point to the IRQ vector table     IRQ_setVecs( ...…

查看全部问答>

[KW41Z] 关于Thread协议若干问题

在学习Thread过程中会碰到很多问题, 由于资料相对封闭, 而且使用的人较少导致有些问题很难通过文档(Thread API函数的说明基本就一句话)来找出来。如果有Thread的wiki就好了, 能让新手少走很多弯路。 现在还没解决的问题如下: 1. 各种地址的 ...…

查看全部问答>