OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7011|回复: 4

求助:ZigBee CC2530无线模块 定时器1如何实现多通道不同占空比的PWM输出

[复制链接]

6

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2014-12-11
在线时间
3 小时
发表于 2015-8-7 17:09:46 | 显示全部楼层 |阅读模式
5金钱
#include <ioCC2530.h>

typedef unsigned int uint;

void DelayMs(uint msec)
{
     uint i,j;
     for(i=0;i<msec;i++)
         for(j=0;j<535;j++);
}
void Init_T1_Direction(void)
{
    /*系统时钟设置*/
    CLKCONCMD&=~0x40;//设置系统时钟源为32MHz的晶振
    while(CLKCONSTA&0x40);//等待晶振稳定为32MHz
    CLKCONCMD&=~0x07;//设置系统主时钟频率为32MHz
    CLKCONCMD|=0x38;//定时器标记输出为250KHz
  
    PERCFG = 0x40; //Timer1位于位置2 P0_6~P0_7   P10~P12
    P1SEL |= 0x03; //P10-P12用作外设接口00000010
    P1DIR |=0x03;  //output 
    P2DIR = 0xC0; //P0优先作为TIMER1()1st priority: Timer 1 channels 2-3
    
    T1CNTL=0x00;
    T1CNTH=0x00;  //Timer1 counter
    
    T1CTL |=0x02;  //set the running mode of control and  the value of divider , 128 ,module mode

    T1CC0L= 0xfa; 
    T1CC0H= 0x00;
    
    T1CCTL1=0x1c; //Clear when equal CCRO,Set when equal CCRx,00 101 100
    T1CC1L= 0x01; 
    T1CC1H= 0x00; 
    
    T1CCTL2=0x1c; //Clear when equal CCRO,Set when equal CCRx,00 101 100
    T1CC2L= 0x01; 
    T1CC2H= 0x00; 
   
}

void main()
{
    uint i;
    Init_T1_Direction();
    while(1)
    {
          for(i=500;i>0;i++)
          {
              T1CC2H=0x00;
              T1CC2L=i;
              T1CC1H=0x00;
              T1CC1L=i;
              while(T1CNTL!=0);
              DelayMs(50);
          }
    }
}

最佳答案

查看完整内容[请看2#楼]

回复【4楼】zs vs stm32: --------------------------------- 但是我的解决方法是在mian函数里面利用for循环来改变三个通道的定时比较值,我想请教大家有没有更好的办法,觉得自己这个办法调节占空比还是不够方便
我会让你以我为荣
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2014-12-11
在线时间
3 小时
 楼主| 发表于 2015-8-7 17:09:47 | 显示全部楼层
回复【4楼】zs vs stm32:
---------------------------------
但是我的解决方法是在mian函数里面利用for循环来改变三个通道的定时比较值,我想请教大家有没有更好的办法,觉得自己这个办法调节占空比还是不够方便
我会让你以我为荣
回复

使用道具 举报

6

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2014-12-11
在线时间
3 小时
 楼主| 发表于 2015-8-7 17:14:37 | 显示全部楼层
上面的代码已经实现了定时器1的通道1和2 “相同占空比” 的PWM输出,我现在想请教各位师兄师姐的是如何让两个通道输出 “不同占空比” 的PWM,而且两个通道都要属于 ”定时器1“ 的!
我会让你以我为荣
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165353
金钱
165353
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-8-9 23:15:09 | 显示全部楼层
帮顶。。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

6

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2014-12-11
在线时间
3 小时
 楼主| 发表于 2015-8-9 23:22:07 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
我已解决,感谢原子哥帮顶,有问题再继续请教
我会让你以我为荣
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 12:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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