2983|2

10

帖子

0

资源

一粒金砂(初级)

STM8L TIM3外部计数,不停进入溢出中断的问题 [复制链接]

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的一半~~!那里的问题??

此帖出自stm32/stm8论坛

回复

10

帖子

0

资源

一粒金砂(初级)

新手发帖,这排版没排好~!!

回复

3648

帖子

11

资源

五彩晶圆(高级)

PWM频率 PWM频率 。二者在电路上是什么关系。是相同的频率吗。是的话,那就分析,你计算pwm频率的过程,是不是哪里对应关系没算对。以寄存器状态为准。相关寄存器配置的值。对照手册,计算出理论值。再对比一下。

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

查找数据手册?

EEWorld Datasheet 技术支持

最新文章 更多>>
    关闭
    站长推荐上一条 1/9 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表