OpenEdv-开源电子网

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

红外遥控解码,求助原子哥

[复制链接]

19

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
211
金钱
211
注册时间
2016-10-3
在线时间
32 小时
发表于 2016-10-22 08:02:17 | 显示全部楼层 |阅读模式
1金钱
//问题描述:利用定时器输入捕获功能解码红外遥控,解码后的数据通过串口显示在串口调试助手上。但是无论如何都不能正确解码红外遥控。
//硬件:原子哥MINI板
//编译环境:MDK5
//解码思路:配置TIM2_CH2作为输入捕获通道,开启捕获中断(没有开启更新中断),在中断中对捕获到的数据做进一步的处理。
//以下附带代码,后续再对我的代码作一个详细的说明,请原子哥指正,看到底是哪个环节出了问题

//定时器捕获初始化函数
u8 AddressCodeL = 0;//地址码低
u8 AddressCodeH = 0;//地址码高
u8 KeyCode = 0;//键值,我们需要的就是这个数据
u8 KeyCodeF = 0;//键值反码
u32 IR_Data = 0;//一帧数据
u8 IR_RECEIVE_STA = 0;

//[7]:0,没有成功接收到一帧信号;1,成功接收到一帧信号
//[6]:0,没有成功接收到引导码;1,成功接收到引导码
//[5:0]:对遥控接收脉冲计数
u16 TIM2CH2_CAPTURE_VAL;
u8 TIM2CH2_CAPTURE_STA = 0;
//捕获状态
//[7]:0,没有成功的捕获;1,成功捕获到一次(即先捕获到高电平,然后捕获到低电平).
//[6]:0,还没捕获到高电平;1,已经捕获到高电平了.
//[5:0]:捕获高电平后溢出的次数,最大溢出次数为2^5-1.

//PA1\TIM2_CH2\TIM5_CH2
//利用输入捕获红外解码
//初始化步骤:
//①使能TIM2,PA时钟,配置PA为下拉输入
//②配置计数器ARR,PSC
//③配置捕获模式
void IR_Init(u16 reload_val,u16 psc)
{
        RCC->APB1ENR &= ~(1<<0);//清0位0
        RCC->APB1ENR |= 1<<0;//使能TIM2时钟
        RCC->APB2ENR &= ~(1<<2);//清0位2
        RCC->APB2ENR |= 1<<2;//使能PORTA时钟
       
        GPIOA->CRL &= 0XFFFFFF0F;//清0位【7:4】
        GPIOA->CRL |= 0X00000080;
        GPIOA->ODR |= 1<<1;//配置PA1输入上拉
       
        TIM2->ARR = reload_val;//配置重加载值
        TIM2->CR1 |= 1<<7;//TIM2_ARR被装入缓冲器
        TIM2->CR1 |= 0<<4;//计数器向上计数
        TIM2->PSC = psc;//配置预分频器(计数器计数频率)
       
        TIM2->CCMR1 |= 1<<8;//配置TIM2_CH2输入,且IC2映射至TI2上。
        TIM2->CCMR1 |= 0<<12;//无滤波器,以fDTS采样
        TIM2->CCMR1 |= 3<<12;//无滤波器,以fDTS采样
        TIM2->CR1 |= 0<<8;//配置fDTS = fCK_INT
        TIM2->CCER |= 0<<5;//CH2上升沿捕获
        TIM2->CCMR1 |= 0<<10;//无预分频器
        TIM2->CCER |= 1<<4;//使能CH2输入捕获
        TIM2->DIER |= 1<<2;//使能TIM2_CH2捕获中断
        //TIM2->DIER |= 1<<0;//使能TIM2更新中断
        TIM2->CR1 |= 1<<0;//使能计数器
        MY_NVIC_Init(1,3,TIM2_IRQn,2);//抢占2,子优先级0,组2                               
}



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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-10-22 20:12:57 | 显示全部楼层
回复

使用道具 举报

19

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
211
金钱
211
注册时间
2016-10-3
在线时间
32 小时
 楼主| 发表于 2016-10-23 08:02:11 | 显示全部楼层
原子哥,不是这份,还有一份,这份是不小心发错了的。
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2016-10-23 22:39:01 | 显示全部楼层
这份发错了,那份错的更离谱,不是悬赏帖、编辑一塌糊涂
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-24 06:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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