初级会员
- 积分
- 119
- 金钱
- 119
- 注册时间
- 2014-12-11
- 在线时间
- 3 小时
|
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循环来改变三个通道的定时比较值,我想请教大家有没有更好的办法,觉得自己这个办法调节占空比还是不够方便
|