cc2541之pwm笔记

cc2541有四路timer,其中timer2为rtos使用,所以我们可以使用timer1、timer3、timer4。 其中timer1、timer2是16位的,timer3、timer4是8位的。

timer1 有5个通道,其中通道0输出比较功能较少,使用时需要特别注意。

        timer3、timer4各拥有两个通道。


        timer对应的io  map如下图所示:

   其中timer3、timer4输出pwm的配置代码如下(以timer4为例):

void pwmTimer4Init(void)    
{     
  P1SEL |= BV(1)|BV(0);         //P11、P10设置为外设功能;     
      
  T4CTL = 0x00;                     //1分频(32M/256=125K)、关timer、自由运行模式    
    
  T4CC0 = 255;                      //P10的初始化值    
  T4CC1 = 255;                      //P11的初始化值    
    
  T4CCTL0 = 0x2C;               //00 101 100无中断、Set output on compare, clear on 0xFF、比较模式、No Capture    
  T4CCTL1 = 0x2C;               //00 101 100无中断、Set output on compare, clear on 0xFF、比较模式、No Capture      
      
  T4CTL |= BV(4);               //开始timer
} 



timer1输出pwm的配置代码如下:

void pwmTimer1Init(void)    
{     
	P1SEL |=  0x01; 	 //P1.0设置为外设I/O口:定时器1通道2
	PERCFG |= (1<<6);	  //定时器1为外设位置2  即上表中alt2
	P2SEL &= ~(1<<4);	  //优先级控制:定时器1优先


	T1CTL  = 0x0f;     //定时器1设置为128分频,正计数/倒计数模式
	T1CCTL2 = 0x6c;    //定时器1通道2配置为比较输出,模式101,开通道2中断
	T1CC0L = 0x00;     //定时器1通道0捕获/比较值低位
	T1CC0H = 0x88;     //定时器1通道0捕获/比较值高位
	T1CC2L = 0x00;     //定时器2通道0捕获/比较值低位
	T1CC2H = 0x44;     //定时器1通道2捕获/比较值高位
	TIMIF &= ~(1<<6);  //定时器1溢出中断使能
	IEN1  |= (1<<1);   //定时器1中断使能
	EA = 1;            //开总中断

} 

1、timer1如果使用port0引脚,则需要注意 To have all Timer 1 channels visible in the alternative 1 location, move both USART 0 and USART 1 to
the alternative 2 location, 及
使uart0和uart1的 peripheral 功能设置为alt2


2、如果开了timer中断功能,一定要添加中断处理函数,不然会跑飞。


特别注意:

timer1输出pwm不稳定的现象,可以通过以下两个设置解决。

1:需要把POWER_SAVING关闭或者在INIT函数里加osal_pwrmgr_device(PWRMGR_ALWAYS_ON);

2:必须关闭CLK自动分频,HCI_EXT_ClkDivOnHaltCmd( HCI_EXT_DISABLE_CLK_DIVIDE_ON_HALT );!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路人 假

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值