OpenEdv-开源电子网

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

求助,定时器3通道1部分重映射到PB4作输入捕捉完成红外解码木有效果,JTAG也关了

[复制链接]

28

主题

190

帖子

0

精华

高级会员

Rank: 4

积分
758
金钱
758
注册时间
2012-8-23
在线时间
71 小时
发表于 2013-12-21 13:54:50 | 显示全部楼层 |阅读模式
这是初始化配置的代码 是按照原子哥的例程移植的,原子哥以及各位帮我看看问题出哪儿了

//红外遥控初始化
//设置IO以及定时器3的输入捕获
void Remote_Init(void)      
{   
RCC->APB1ENR|=1<<1;   //TIM3 时钟使能 
RCC->APB2ENR|=1<<3;     //使能PORTB时钟 

JTAG_Set(SWD_ENABLE);//关闭JTAG 使能SWD

GPIOB->CRL&=0XFFF0FFFF; //PB4 输入  
GPIOB->CRL|=0X00080000; //上拉输入     
GPIOB->ODR|=1<<4; //PB4 上拉

//这里先对定时器3的通道1进行部分重映射到PB4
RCC->APB2ENR|=1<<0;//开启辅助时钟
AFIO->MAPR&=0XFFFFF3FF;//清除MAPR寄存器的[11:10]
AFIO->MAPR|=1<<11;//部分重映射TIM3通道1->B4
 
  TIM3->ARR=10000;   //设定计数器自动重装值 最大10ms溢出  
TIM3->SC=71;   //预分频器,1M的计数频率,1us加1.  

TIM3->CCMR2|=1<<8; //CC4S=01 选择输入端 IC4映射到TI4上
  TIM3->CCMR2|=3<<12;   //IC4F=0011 配置输入滤波器 8个定时器时钟周期滤波
  TIM3->CCMR2|=0<<10;   //IC4PS=00 配置输入分频,不分频 

TIM3->CCER|=0<<13; //CC4P=0 上升沿捕获
TIM3->CCER|=1<<12; //CC4E=1 允许捕获计数器的值到捕获寄存器中
TIM3->DIER|=1<<4;   //允许CC4IE捕获中断
TIM3->DIER|=1<<0;   //允许更新中断
TIM3->CR1|=0x01;     //使能定时器3

  MY_NVIC_Init(1,3,TIM3_IRQChannel,2);//抢占1,子优先级3,组2  
}

问题解决了,昏头了,定时器改了,通道没有重新配置了,原子哥的例程是通道4,而我用的通道1,修改后的代码如下
(发现JTAG_Set函数不调用,PB4重新映射后还是可以用的,不晓得为什么)

//红外遥控初始化
//设置IO以及定时器3的输入捕获
void Remote_Init(void)      
{   
RCC->APB1ENR|=1<<1;   //TIM3 时钟使能 
RCC->APB2ENR|=1<<3;     //使能PORTB时钟 

//JTAG_Set(SWD_ENABLE);//关闭JTAG 使能SWD 去掉了还是能用的

GPIOB->CRL&=0XFFF0FFFF; //PB4 输入  
GPIOB->CRL|=0X00080000; //上拉输入     
GPIOB->ODR|=1<<4; //PB4 上拉

//这里先对定时器3的通道1进行部分重映射到PB4
RCC->APB2ENR|=1<<0;//开启辅助时钟
AFIO->MAPR&=0XFFFFF3FF;//清除MAPR寄存器的[11:10]
AFIO->MAPR|=1<<11;//部分重映射TIM3通道1->B4
 
  TIM3->ARR=10000;   //设定计数器自动重装值 最大10ms溢出  
TIM3->SC=71;   //预分频器,1M的计数频率,1us加1.  

TIM3->CCMR1|=1<<0; //CC1S=01 选择输入端 IC1映射到TI1上 
  TIM3->CCMR1|=3<<4;   //IC1F=0011 配置输入滤波器 8个定时器时钟周期滤波
  TIM3->CCMR1|=0<<2;   //IC1PS=00 配置输入分频,不分频  

TIM3->CCER|=0<<1; //CC1P=0 上升沿捕获
TIM3->CCER|=1<<0; //CC1E=1 允许捕获计数器的值到捕获寄存器中

TIM3->DIER|=1<<1;   //允许CC1IE捕获中断
TIM3->DIER|=1<<0;   //允许更新中断

TIM3->CR1|=0x01;     //使能定时器3

  MY_NVIC_Init(1,3,TIM3_IRQChannel,2);//抢占1,子优先级3,组2  
}

一介草民……
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165537
金钱
165537
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-21 14:27:12 | 显示全部楼层
回复【楼主位】月光疾風:
---------------------------------
你的定时器配置的都不是通道1啊。。。
你看看通道1是CCMR1还是CCMR2?
还有CCER,通道1,是第几位?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

28

主题

190

帖子

0

精华

高级会员

Rank: 4

积分
758
金钱
758
注册时间
2012-8-23
在线时间
71 小时
 楼主| 发表于 2013-12-21 16:18:50 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
我去,昏头了,这部分没改,我再试试去……顺便再问下原子哥,调用这个JTAG_Set(SWD_ENABLE);之后,就不能再用Jlink下载了,提示找不到器件。看了原子哥发的Jlink问题汇总,B0上3.3V就可以下载了,但是程序没法直接跑了,难道是调用这个函数之后就没法直接下载完成后,程序就开始跑么
一介草民……
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165537
金钱
165537
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-21 21:39:28 | 显示全部楼层
回复【3楼】月光疾風:
---------------------------------
用SWD模式
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

12

主题

50

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
211
金钱
211
注册时间
2014-9-13
在线时间
31 小时
发表于 2017-3-5 20:13:54 | 显示全部楼层
选择输入端 IC4映射到TI4上,这个IC4和TI4各是什么?
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-13 22:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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