OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2903|回复: 6

定时器捕获PWM 没能进入中断

[复制链接]

1

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
172
金钱
172
注册时间
2015-5-14
在线时间
36 小时
发表于 2015-8-7 15:15:47 | 显示全部楼层 |阅读模式
5金钱
u8  TIM3CH1_CAPTURE_STA = 0;                 // bit7 捕获完成标志       bit6 捕获到高电平标志     bit5~0 捕到高后定时器溢出次数
u16 TIM3CH1_CAPTURE_VAL;                     // 捕获下降沿的时候 TIM5_CNT值

void led_init()
{
  GPIOA->CRH &= 0XFFFFFFF0;
GPIOA->CRH |= 0X00000003;     //  复用推挽
GPIOA->ODR |= 1<<0;
}

void Timer2_init( u16 arr, u16 psc )
{ RCC->APB2ENR = 1<<0;   //   
  RCC->APB2ENR |= 1<<2;   //GPIOA 

  GPIOA->CRL &= 0XFFFFFFF0;
  GPIOA->CRL |= 0X0000000B;
  GPIOA->ODR |= 1<<0;  // 上拉

  RCC->APB1ENR |= 1<<0;   //时钟2
 
  TIM2->ARR = arr;
  TIM2->SC = psc;

  TIM2->CCMR1 |= 0X74;
TIM2->CCER  |= 1<<0;
TIM2->CCR1 = 1000;
 
TIM2->CR1 |= 1<<8;  //ENABLE 预装载
TIM2->CR1 |= 1<<0;  

   }

void Timer3_init( u16 arr, u16 psc )
{
   
   GPIOA->CRL &= 0XF0FFFFFF;
   GPIOA->CRL |= 0X08000000;
   GPIOA->ODR |= 0<<6; //PA6  下拉

RCC->APB1ENR |= 1<<1;  //使能时钟3
TIM3->ARR = arr;     //    
TIM3->SC = psc;     //    计数 1us   周期 
 
// TIM3->SMCR |= 0X00D4;   //主、从    滤波后定时器输入

TIM3->CCMR1 |= 1<<0;     // 映射 通道1输入
TIM3->CCMR1 |= 0<<2;    // 无预分频
TIM3->CCMR1 |= 0<<4;    //配置滤波器  无滤波Fdts采样
 
// TIM3->CCMR1 |= 1<<8;     //通道2输入
// TIM3->CCMR1 |= 0<<10;    // 无预分频
// TIM3->CCMR1 |= 0<<12;    //配置滤波器

TIM3->CCER |= 1<<0;      // 通道1 捕获使能  
   TIM3->CCER |= 0<<1;      //上升沿有效
 
TIM3->DIER |= 1<<1;     //  通道 1   捕获中断
TIM3->DIER |= 1<<0;     // 更新中断

 TIM3->CR1 |= 0X01;    //使能定时器1
MY_NVIC_Init( 2, 0, TIM3_IRQChannel, 2 );       // 设置定时器中断
    LED0 = 0;  //  灯亮
   }



 
void ITM3_IRQHandler( void )
{
  u16 tsr; 
tsr = TIM3->SR;

//读成功标志位  bit7置1 主函数处理
if(( TIM3CH1_CAPTURE_STA&0X80 ) == 0 )  // 还未成功捕获       只要bit7为1 就不会进行第二次捕获
{
 if( tsr & 0x01 )  //    计数器溢出( 更新事件 )   更新中断标志 UIF置1   硬件置1软件清零
{
if( TIM3CH1_CAPTURE_STA & 0X40 )  //已经捕获高电平
{
if( TIM3CH1_CAPTURE_STA & 0X3F)  //溢出计数满 0x3F   高电平时间太长

TIM3CH1_CAPTURE_STA |= 0x80; //标记成功捕获一次
TIM3CH1_CAPTURE_VAL = 0XFFFF; 
}

else 
       TIM3CH1_CAPTURE_STA++;

}
         
}


//读寄存器
if( tsr &0x02 )        //  通道1捕获中断位
{

  if( TIM3CH1_CAPTURE_STA &0x40 ) //   高电平位  捕获到一个下降沿
{
TIM3CH1_CAPTURE_STA |= 0x80;   // 标记成功捕获到一个高电平脉宽
TIM3CH1_CAPTURE_VAL |= TIM3->CCR1;  // 获取当前捕获值
TIM3->CCER &= ~( 1<<1 );     //CC1P=0 上升沿有效    回到初始状态
}

else    //  第一次捕获上升沿 清空 标记高电平 设置下降沿有效
{
TIM3CH1_CAPTURE_STA = 0;  //清空
TIM3CH1_CAPTURE_VAL = 0;
TIM3CH1_CAPTURE_STA = 0x40;   // 高电平标志 计数清零
TIM3->CNT = 0;
TIM3->CCER |= 1<<1;        //CC1P=1  通道1 设置下降沿有效
}
     }
   }
TIM3->SR = 0;   //清除中断标志位
LED0 = 1;    //  灯灭
}


如果能进入中断我的灯会灭吧?但是一直亮着

最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-8-7 15:15:48 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

2170

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5781
金钱
5781
注册时间
2013-11-22
在线时间
1212 小时
发表于 2015-8-8 00:08:33 | 显示全部楼层
你这上面是什么中断函数   void ITM3_IRQHandler( void )????
回复

使用道具 举报

1

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
172
金钱
172
注册时间
2015-5-14
在线时间
36 小时
 楼主| 发表于 2015-8-9 14:57:43 | 显示全部楼层
回复【2楼】lycreturn:
---------------------------------
回复【2楼】lycreturn:
---------------------------------
定时器3的上升沿  下降沿 更新事件 的中断,   中断是搬历程的
回复

使用道具 举报

3

主题

2170

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5781
金钱
5781
注册时间
2013-11-22
在线时间
1212 小时
发表于 2015-8-9 16:54:50 | 显示全部楼层
回复【3楼】小黑哥94:
---------------------------------
你仔细看看这个函数名字   你这例程是咋搬的?
回复

使用道具 举报

1

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
172
金钱
172
注册时间
2015-5-14
在线时间
36 小时
 楼主| 发表于 2015-8-9 22:08:41 | 显示全部楼层
回复【4楼】lycreturn:
---------------------------------
额,想不到。。。。。。。
回复

使用道具 举报

1

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
172
金钱
172
注册时间
2015-5-14
在线时间
36 小时
 楼主| 发表于 2015-8-9 22:09:05 | 显示全部楼层
回复【4楼】lycreturn:
---------------------------------
大意了。。。。。。。。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-18 14:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表