STM8L TIM3外部计数,不停进入溢出中断的问题

2019-03-23 16:31发布

void TIM2_Init(void)//通用定时器16位,用于PWM输出{    CLK_PCKENR1_PCKEN10=1;//开启定时器2外设时钟
  TIM2_ARRH=0x00;//设定重装载值  TIM2_ARRL=50;
  TIM2_CCER1=0x01;//高电平有效  TIM2_CCMR1=0x60;//PWM模式1
  TIM2_CCR1H=0;//占空比  TIM2_CCR1L=25;  TIM2_CR1|=0x01;//向上计数,无缓存,使能  TIM2_BKR=0x80;//开启总输出使能}
void TIM3_Init(void)//用于采样定时{CLK_PCKENR1_PCKEN11=1;//开启定时器3外设时钟 TIM3_CR1=0x80;TIM3_PSCR=0x00;//预分频器TIM3_SMCR=0x77;//外部计数模式1TIM3_ARRH = 0x00; //TIM3_ARRL = 50; // TIM3_IER = 0x01; // 允许更新中断TIM3_CR1 |= 0x01; // 计数器使能,开始计数}
void GPIO_Init(void){  PD_DDR=0x00;  PB_DDR=0xff;  PC_DDR=0x80;    PD_CR1=0x02;  PB_CR1=0xff;  PC_CR1=0xff;    PD_CR2|=0x02;  PC_CR2|=0x02;  EXTI_CR1=0x08;//开PC1外部电平中断}
#pragma vector = EXTI1_vector __interrupt void EXIT_PORTC_01(void)     //中断服务函数  {  //PC_ODR^=0x80;EXTI_SR1=0xff;}
#pragma vector = TIM3_OVR_UIF_vector     __interrupt void TIM3_OVR_CC(void)     //中断服务函数  {  PC_ODR^=0x80;TIM3_SR1=0xff;//清溢出中断标志}   int main(void)
{  CLK_ICKCR|=0x04;  CLK_SWR=0x02;  CLK_SWCR|=0x02;  CLK_CKDIVR=0x00;//使用内部LSI时钟,无分频   asm("sim");    GPIO_Init();    TIM2_Init();    TIM3_Init();    asm("rim");    //开总中断  while(1)  {  }}
使用的是STM8L152C6T6,PC7接了LED,程序如上,TIM2产生PWM从PB0输出,频率调节,占空比调节,一切正常。PB0连接到PD1(TIM3的外部时钟输入口),TIM3对PWM进行计数,溢出中断中对LED电平进行翻转,程序实际执行时,PWM频率780HZ,LED点亮,示波器测LED电压频率为390HZ,为啥是一半频率??更改PWM频率再测试LED电压频率还是是PWM的一半~~!那里的问题??

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。