STM8S单独测试TIM2产生PWM的时候,是按照预期设定来运行的,频率为2Hz,但是加入到工程中,工程中其他的配置都没开,只是纯碎加入进去,产生PWM的频率明显变高了,这是怎么回事呢?
 
	    这是单独测试的程序,没有问题:
 
	    
	 
[mw_shl_code=c,true]/*
TIM2_CH3 PWM
PD2 output
*/
#include <STM8S103F3P.h>
void CLK_init(void)
{
	CLK_ICKR |= 0X01;    		//使能内部高速时钟 HSI
	CLK_CKDIVR |= 0x08;			// 16M内部RC经2分频后系统时钟为8M
	while(!(CLK_ICKR&0x02));//HSI准备就绪 
	CLK_SWR=0xe1;           //HSI为主时钟源 
}
void Init_Tim2(void)
{
	TIM2_CCMR3 |=	0X70;   //设置定时器2三通道(PD2)输出比较三模式
	TIM2_CCMR3 |= 0X04;		//输出比较3预装载使能
	
	TIM2_CCER2 |= 0x03;		//通道3使能,低电平有效,配置为输出
	
	// 初始化时钟分频器为1,即计数器的时钟频率为Fmaster=8M/64=0.125MHZ
	TIM2_PSCR = 0X06;	
	//初始化自动装载寄存器,决定PWM 方波的频率,Fpwm=0.125M/62500=2HZ
	TIM2_ARRH = 62500/256;
	TIM2_ARRL = 62500%256;
	//初始化比较寄存器,决定PWM 方波的占空比:5000/10000 = 50%
	TIM2_CCR3H = 31250/256;
	TIM2_CCR3L = 31250%256;
	// 启动计数;更新中断失能
	TIM2_CR1 |= 0x81;
	//TIM2_IER |= 0x00;        
}
void Init_GPIO(void)
{
	/*设置为推挽输出,PD2接了LED灯*/
	PD_DDR |= 0X04;     		//设置PD2端口为输出模式
	PD_CR1 |= 0X04;     		//设置PD2端口为推挽输出模式
	PD_CR2 &= 0XFD;
	
	PA_DDR |= 0X08;     		//设置PA3端口为输出模式
	PA_CR1 |= 0X08;     		//设置PA3端口为推挽输出模式
	PA_CR2 |= 0XF7;
}
void main(void)
{
	CLK_init();
	Init_GPIO();
	Init_Tim2();
	while (1);
}
[/mw_shl_code]
	 
 
下面的截图是我的工程的主程序:
	
		 
	 
	
		    
  
 
 
	 
	
		    其他的都屏蔽了,TIM2配置跟独立测试时一模一样,咋回事呢?有什么因素会影响呢?我的开发环境为STVD+COSMIC,板子为stms103f3p6。
	  |