OpenEdv-开源电子网

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

大家知道,吗

[复制链接]

15

主题

80

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2013-1-23
在线时间
10 小时
发表于 2013-7-9 15:58:43 | 显示全部楼层 |阅读模式
我捕获一个下降沿 中断处理启动TIM2的PWM,启动的TIM2的CNT赋初值是0XFFFF,意思想他马上进入TIM2溢出中断。就是一个下降沿到来马上产生PWM,然后马上进入PWM溢出中断,进行相关操作,但是实际情况为什么TIM2_CNT的0XFFFF到了0并没溢出中断,必须从0计数到0XFFFF后在溢出。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-9 16:57:14 | 显示全部楼层
是不是你在捕获中断里面耽误太多时间了?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

47

主题

255

帖子

1

精华

高级会员

Rank: 4

积分
641
金钱
641
注册时间
2012-11-3
在线时间
6 小时
发表于 2013-7-9 17:15:08 | 显示全部楼层
回复【楼主位】zhangyi3312:
---------------------------------
pwm用的  tim几?
回复 支持 反对

使用道具 举报

15

主题

80

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2013-1-23
在线时间
10 小时
 楼主| 发表于 2013-7-10 08:54:15 | 显示全部楼层
回复【3楼】liyanchao153:
---------------------------------
用的TIM3__PWM,
回复 支持 反对

使用道具 举报

15

主题

80

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2013-1-23
在线时间
10 小时
 楼主| 发表于 2013-7-10 09:27:19 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
//PWM在捕获后的第一个溢出时间不中断,要第二个溢出时间才中断
void TIM3_IRQHandler(void)
{
  if(TIM3->SR&0X0001)//溢出中断    **
{  LED3=!LED3;
  IWDG_Feed(); 
delay_us(247);
 LED2=0;
   delay_ms(2);
delay_us(320);
LED2=1;
// TIM2->SR&=~(1<<4);//清除中断标志位   
}
TIM3->SR&=~(1<<0);//清除中断标志位       
}
  
//捕获中断作为设置TIM3的PWM,没其他操作!
void TIM2_IRQHandler(void)   
{             
if(TIM2->SR&0X08)//捕获中断    **
{    LED1=!LED1; 
TIM3->DIER&=0xfffe;    //不允许中断
    TIM3->CR1&=0xfffe;  //禁能定时器3
      TIM3->CNT=0xFFFE;        //赋初值
      TIM3->DIER|=1<<0;    //允许中断
TIM3->CR1|=0x01;     //能定时器3
}
TIM2->SR&=~(1<<3);//清除中断标志位    
}
回复 支持 反对

使用道具 举报

15

主题

80

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2013-1-23
在线时间
10 小时
 楼主| 发表于 2013-7-10 09:32:26 | 显示全部楼层
请看看,为什么是第二个溢出时间才中断响应呢,
回复 支持 反对

使用道具 举报

15

主题

80

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2013-1-23
在线时间
10 小时
 楼主| 发表于 2013-7-10 10:36:52 | 显示全部楼层
回复【4楼】zhangyi3312:
---------------------------------
TIM2捕获,TIM3做PWM
回复 支持 反对

使用道具 举报

15

主题

80

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2013-1-23
在线时间
10 小时
 楼主| 发表于 2013-7-10 10:49:44 | 显示全部楼层
原子大哥 我捕获中断里就是设置PWM初始值,没别的事情啊
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-10 11:06:03 | 显示全部楼层
我的测试代码:
//定时器3中断服务程序  
void TIM3_IRQHandler(void)
{              
if(TIM3->SR&0X0001)//溢出中断
{
LED1=!LED1;                    
}    
TIM3->SR&=~(1<<0);//清除中断标志位 
TIM3->CR1&=~(1<<0);     //关闭定时器3    
}
//通用定时器3中断初始化
//这里时钟选择为APB1的2倍,而APB1为36M
//arr:自动重装值。
//psc:时钟预分频数
//这里使用的是定时器3!
void TIM3_Int_Init(u16 arr,u16 psc)
{
RCC->APB1ENR|=1<<1; //TIM3时钟使能    
  TIM3->ARR=arr;   //设定计数器自动重装值//刚好1ms    
TIM3->SC=psc;   //预分频器7200,得到10Khz的计数时钟   
TIM3->DIER|=1<<0;   //允许更新中断   
TIM3->CR1|=0x01;    //使能定时器3
   MY_NVIC_Init(1,3,TIM3_IRQChannel,2);//抢占1,子优先级3,组2  
}
//定时器2中断服务程序  
void TIM2_IRQHandler(void)
{              
if(TIM2->SR&0X0001)//溢出中断
{
TIM3->CNT=0XFFFE;
TIM3->CR1|=1<<0;     //开启定时器3
}    
TIM2->SR&=~(1<<0);//清除中断标志位     
}
//通用定时器2中断初始化
//这里时钟选择为APB1的2倍,而APB1为36M
//arr:自动重装值。
//psc:时钟预分频数
//这里使用的是定时器3!
void TIM2_Int_Init(u16 arr,u16 psc)
{
RCC->APB1ENR|=1<<0; //TIM2时钟使能    
  TIM2->ARR=arr;   //设定计数器自动重装值//刚好1ms    
TIM2->SC=psc;   //预分频器7200,得到10Khz的计数时钟   
TIM2->DIER|=1<<0;   //允许更新中断   
TIM2->CR1|=0x01;    //使能定时器3
   MY_NVIC_Init(1,3,TIM2_IRQChannel,2);//抢占1,子优先级3,组2  
}

main函数:

  TIM2_Int_Init(0XFFFF,72-1); //以1Mhz的频率计数 
TIM3_Int_Init(0XFFFF,72-1); //1Mhz
TIM3->CR1&=~(1<<0);     //关闭定时器3

测试正常运行.0XFFFE增加2后,就进入到TIM3中断了.

相比你的:
TIM3->DIER&=0xfffe;    //不允许中断
    TIM3->CR1&=0xfffe;  //禁能定时器3
      TIM3->CNT=0xFFFE;        //赋初值
      TIM3->DIER|=1<<0;    //允许中断
TIM3->CR1|=0x01;     //能定时器3

我的只有2句话:

TIM3->CNT=0XFFFE;
TIM3->CR1|=1<<0;     //开启定时器3
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

47

主题

255

帖子

1

精华

高级会员

Rank: 4

积分
641
金钱
641
注册时间
2012-11-3
在线时间
6 小时
发表于 2013-7-10 11:50:01 | 显示全部楼层
回复【7楼】zhangyi3312:
---------------------------------
我之前做过一个东西,假如 捕获和pwm全都用  普通定时器或  全都用高级定时器    捕获的值不准确,感觉就像冲突一样,  后来我用一个高级定时器一个普通定时器  就好了,
回复 支持 反对

使用道具 举报

15

主题

80

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2013-1-23
在线时间
10 小时
 楼主| 发表于 2013-7-10 11:57:32 | 显示全部楼层
回复【9楼】正点原子:
---------------------------------
原子大哥,我按你的做,其实就是平时关闭TIM3,一旦捕获然后使能TIM3,进入溢出中断后关闭TIM3
但是你的代码没有PWM呢,PWM能不能溢出中断?
TIM3是一个PWM初始化让他根据捕获到来产生的PWM控制信号同时溢出中断在中断做做其他操作
(是不是PWM的原因呢)
回复 支持 反对

使用道具 举报

15

主题

80

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2013-1-23
在线时间
10 小时
 楼主| 发表于 2013-7-10 11:59:29 | 显示全部楼层
void TIM3_PWM_Init(u16 arr,u16 psc)    //**输出PWM   TIM3-CH4 !!

{    
//PB5为TP12,PB4和PB0为发射同步, A3接收开  ,
RCC->APB1ENR|=1<<1;  //TIM3时钟使能    
RCC->APB2ENR|=1<<3;     //使能PORTB时钟
//RCC->APB2ENR|=1<<2;     //使能PORTA时钟

GPIOB->CRL&=0XFFFFFF0F; //PB1输出
GPIOB->CRL|=0X000000B0; //复用功能输出 
// GPIOB->CRH&=0XFFFFFF00; //PB89输出
// GPIOB->CRH|=0X000000BB; //复用功能输出 



TIM3->ARR=arr; //设定计数器自动重装值 
TIM3->SC=psc; //预分频器不分频



TIM3->CCMR2|=7<<12;   //CH4 WM2模式  
TIM3->CCMR2|=1<<11;  //CH4预装载使能    
TIM3->CCER|=1<<12;    //OC4 输出使能
   
TIM3->CR1=0x0080;    //ARPE使能 
TIM3->DIER|=1<<0;    //允许溢出中断
TIM3->CR1|=0x01;     //使能定时器3 
MY_NVIC_Init(3,2,TIM3_IRQChannel,2);//抢占1,子优先级0,组2   
}
回复 支持 反对

使用道具 举报

15

主题

80

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2013-1-23
在线时间
10 小时
 楼主| 发表于 2013-7-10 12:54:46 | 显示全部楼层
原子大哥是不是不能用PWM溢出中断
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-10 14:15:27 | 显示全部楼层
应该可以的.不过ARR值应该等于0XFFFF,设置为最大,CNT才可能溢出.
如果是ARR小于0XFFFF,那应该不会产生溢出中断,只会产生更新中断.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

15

主题

80

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2013-1-23
在线时间
10 小时
 楼主| 发表于 2013-7-10 14:53:43 | 显示全部楼层
谢谢!!!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-18 07:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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