OpenEdv-开源电子网

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

在使用定时器控制红外的时候,自己写的程序调不通,希望各位大神解答

[复制链接]

23

主题

87

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
306
金钱
306
注册时间
2014-9-24
在线时间
39 小时
发表于 2015-4-14 19:10:06 | 显示全部楼层 |阅读模式
5金钱
下面是我的中断函数

u8 TIM5CH1_CAPTURE_STA=0;
u16 Dval;
u32 RmtRec=0; //红外接收到的数据
static u8 IR_rece_Flag;

void TIM5_IRQHandler(void)
{
 u16 tsr;
 static u8 bitnum=0;
 tsr=TIM5->SR;
 if(tsr&(1<<2))
 {
  if((TIM5CH1_CAPTURE_STA&0x40)==0)
  {
  // printf("上升沿\r\n");
   Dval=0;
   TIM5CH1_CAPTURE_STA|=0X40;
   TIM5->CNT=0;
   TIM5->CCER|=1<<5;  //下降沿
  }
  if(TIM5CH1_CAPTURE_STA&0x40)
  {
  // printf("下降沿\r\n");
   Dval=TIM5->CCR2;
   TIM5->CCER&=~(1<<5);
   TIM5CH1_CAPTURE_STA&=~0x40;  //清除收到上升沿标志
   if(TIM5CH1_CAPTURE_STA&0X20)//接收到了引导码
   {
    if(Dval>300&&Dval<800)   //560为标准值,560us
    {
     RmtRec<<=1; //左移一位.
     RmtRec|=0; //接收到0   
    }else if(Dval>1400&&Dval<1800) //1680为标准值,1680us
    {
     RmtRec<<=1; //左移一位.
     RmtRec|=1; //接收到1
    }
    if((++bitnum) >= 33) //一帧数据含有32位码
    {
     bitnum = 0;
     TIM5CH1_CAPTURE_STA=0;
     IR_rece_Flag = 1; //一帧数据接收完毕,置位接收成功标志
    }
   }
   else if(Dval>4200&&Dval<4700)  //4500为标准值4.5ms
   {
    TIM5CH1_CAPTURE_STA|=0x20; //标记成功接收到了引导码
    bitnum = 0;
//    printf("成功接收引导码");
   }   
  }
 }
 TIM5->SR=0;//清除中断标志位
}


在这个中断函数读出来的结果都是0,各位大神看一下,谢谢。

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

使用道具 举报

3

主题

2170

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5782
金钱
5782
注册时间
2013-11-22
在线时间
1212 小时
发表于 2015-4-14 22:51:42 | 显示全部楼层
参考  mini开发板  红外遥控例程    用的TIM5_CH2    和你这个很相似了
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

23

主题

87

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
306
金钱
306
注册时间
2014-9-24
在线时间
39 小时
 楼主| 发表于 2015-4-15 15:02:04 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
下载历程没有问题的,只是我用之前使用AVR控制红外的思路写了就不行,不知道为什么
回复

使用道具 举报

23

主题

87

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
306
金钱
306
注册时间
2014-9-24
在线时间
39 小时
 楼主| 发表于 2015-4-15 20:52:24 | 显示全部楼层
回复【2楼】lycreturn:
---------------------------------
就是很相似却实现不了才郁闷啊
回复

使用道具 举报

23

主题

87

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
306
金钱
306
注册时间
2014-9-24
在线时间
39 小时
 楼主| 发表于 2015-4-15 20:53:21 | 显示全部楼层
回复【2楼】lycreturn:
---------------------------------
我和例程唯一不同的就是这个函数了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-23 18:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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