OpenEdv-开源电子网

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

关于ministm32 使用输入捕获做红外实验的问题

[复制链接]

8

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2013-11-26
在线时间
0 小时
发表于 2013-11-26 11:43:37 | 显示全部楼层 |阅读模式
我用的是非战舰的那个
因为RMT口连着PA1口,我看PA1口对应着TIM2   的CH2  所以编写了一下初始化代码(我对应着战舰办的那个写的)
void TIM2_init(u16 arr,u16 psc) 
{       
RCC->APB1ENR|=1<<0;         
RCC->APB2ENR|=1<<2;    //时钟设置
               
GPIOA->CRL&=0XFFFFFF0F; //PA 删除设置
GPIOA->CRL|=0X00000080;     //把PA0弄成输入
GPIOA->ODR|=0<<1;   //PA拉低
 
TIM2->ARR=arr;             
TIM2->SC=psc;
   
 
// TIM2->CCMR1|=1<<8;    //因为是通道2 所以都去配置  CCMR1 的 8-15位  配置方式有两种  分别映射TL1 TL2 
// TIM2->CCMR1&=~(1<<9);

TIM2->CCMR1|=1<<9;  
TIM2->CCMR1&=~(1<<8);

       
TIM2->CCMR1|=0<<12;        //不滤波器
// TIM2->CCMR1|=0<<2; //这句  网上代码有的 不明白什么意思
        
TIM2->CCER|=0<<1;         //捕获上升沿
TIM2->CCER|=1<<0;   //允许捕获寄存器
    
TIM2->DIER|=1<<1;                  //开启捕获中断
TIM2->DIER|=1<<0; //使用中断更新
        
TIM2->CR1|=0x01; //使能TIM2
           
MY_NVIC_Init(2,0,TIM2_IRQChannel,2); 
      
}
中断内就一句
void TIM2_IRQHandler(void)
{
        

  printf("a");   
                                  
  
 TIM2->SR=0;           
}
结果是 串口不断的输入a;
也就是不停的进这个中断啊  !!请问是哪里出错了

main.c 中while是空的    
TIM2_init 就初始化过一次 在main.c


 

      



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

使用道具 举报

8

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2013-11-26
在线时间
0 小时
 楼主| 发表于 2013-11-26 11:44:09 | 显示全部楼层
顺便在此感谢下正点原子,书真的很不错!!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

8

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2013-11-26
在线时间
0 小时
 楼主| 发表于 2013-11-26 14:49:57 | 显示全部楼层
晕  库函数的我有点看不明白 好多啊
回复 支持 反对

使用道具 举报

8

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2013-11-26
在线时间
0 小时
 楼主| 发表于 2013-11-26 14:54:59 | 显示全部楼层
其实我主要想弄明白我这个为什么会搓成这样
回复 支持 反对

使用道具 举报

8

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2013-11-26
在线时间
0 小时
 楼主| 发表于 2013-11-26 16:12:02 | 显示全部楼层
然后我把  战舰的timer初始化那段代码全部复制过去    将所有的5改成2   然后用杜邦线连上PA0 和RMT  依旧是不断的输出a   (实际上我不连他也在不断的输出)
我在想 这个不同型号的难道设置的方法还不一样么
回复 支持 反对

使用道具 举报

8

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2013-11-26
在线时间
0 小时
 楼主| 发表于 2013-11-26 16:15:00 | 显示全部楼层
void TIM5_Cap_Init(u16 arr,u16 psc)
{  
RCC->APB1ENR|=1<<3;    //TIM5 ?±?????? 
RCC->APB2ENR|=1<<2;     //????PORTA?±??  
 
GPIOA->CRL&=0XFFFFFFF0; //PA0 ???????°?è??  
GPIOA->CRL|=0X00000008; //PA0 ????   
GPIOA->ODR|=0<<0; //PA0 ????
  
  TIM5->ARR=arr;   //?è?¨?????÷×?????×°??   
TIM5->SC=psc;   //?¤·????÷ 

TIM5->CCMR1|=1<<0; //CC1S=01  ?????????? IC1??????TI1??
  TIM5->CCMR1|=0<<4;  //IC1F=0000 ???????????¨?÷ ?????¨
  TIM5->CCMR1|=0<<10;  //IC2PS=00  ????????·???,??·??? 

TIM5->CCER|=0<<1;  //CC1P=0 ??????????
TIM5->CCER|=1<<0;  //CC1E=1  ???í?????????÷???????????????÷??

TIM5->DIER|=1<<1;    //???í????????
TIM5->DIER|=1<<0;    //???í?ü??????
TIM5->CR1|=0x01;     //?????¨?±?÷2
MY_NVIC_Init(2,0,TIM5_IRQChannel,2);//????2??×???????0??×é2    
}

这是原书的代码  我把5全部换成2了

io脚的肯定也改了
中断还是和一楼一样
实际上是我让PA0 空闲着 他都在不断的输出a
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-8 19:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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