OpenEdv-开源电子网

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

关于输入捕获这个结构体的问题 求大神解救

[复制链接]

5

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2014-11-6
在线时间
0 小时
发表于 2015-1-23 14:10:06 | 显示全部楼层 |阅读模式
5金钱
typedef struct
{
  uint16_t TIM_Channel;    
  uint16_t TIM_ICPolarity;  
  uint16_t TIM_ICSelection; 
  uint16_t TIM_ICPrescaler; 
  uint16_t TIM_ICFilter;    
} TIM_ICInitTypeDef;
就是这个结构体,我的问题是第一个参数不是就是设置通道的吗?那么第3个参数这个映射是怎么回事?在做红外实验的时候,例程的程序是这么写的,(用TIM5_CH2)
   TIM_ICInitStructure.TIM_Channel = TIM_Channel_2; 
  TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
  TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
第一个参数设置了通道2,但是第三个参数我查了下寄存器他的意思不是IC1映射在TI1上吗?这个TI1难道不是通道1吗,那么这最后IC1到底是在哪个通道呢。。一开始做输入捕获实验的时候还真没注意这个问题。。因为都是通道1,就没多想。。这下真的蒙了 ,求大神解救。。

最佳答案

查看完整内容[请看2#楼]

回复【3楼】烟酒不沾: --------------------------------- 回复【3楼】烟酒不沾: --------------------------------- 刚仔细研究了下库函数。。了解原因,兄弟其实 是这样的,定时器每个通道可以对应2个CC,即TI1可以映射到IC1也可以IC2,TI2同样可以映射到IC2和IC1, TIM_ICInitStructure.TIM_Channel = TIM_Channel_2 这个成员变量是用来选通道,选完通道库里面有个吊用 else if (TIM_ICInit ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2014-11-6
在线时间
0 小时
 楼主| 发表于 2015-1-23 14:10:07 | 显示全部楼层
回复【3楼】烟酒不沾:
---------------------------------
回复【3楼】烟酒不沾:
---------------------------------
刚仔细研究了下库函数。。了解原因,兄弟其实 是这样的,定时器每个通道可以对应2个CC,即TI1可以映射到IC1也可以IC2,TI2同样可以映射到IC2和IC1,
TIM_ICInitStructure.TIM_Channel = TIM_Channel_2 这个成员变量是用来选通道,选完通道库里面有个吊用 else if (TIM_ICInitStruct->TIM_Channel == TIM_Channel_2)
  {
    assert_param(IS_TIM_LIST6_PERIPH(TIMx));
    /* TI2 Configuration */
    TI2_Config(TIMx, TIM_ICInitStruct->TIM_ICPolarity,
               TIM_ICInitStruct->TIM_ICSelection,
               TIM_ICInitStruct->TIM_ICFilter);
    /* Set the Input Capture rescaler value */
    TIM_SetIC2Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);
  } 即调用TI2_Config这个函数,这个函数里面对宏#define TIM_ICSelection_DirectTI           ((uint16_t)0x0001) 做了个移位。。
tmpccmr1 |= (uint16_t)(TIM_ICSelection << 8)  即对CCMR1的CC2S进行赋值。。即IC2映射到TI2。。
回复

使用道具 举报

5

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2014-11-6
在线时间
0 小时
 楼主| 发表于 2015-1-23 14:26:51 | 显示全部楼层
顶一下。。我的疑问是 结构体的这个成员不应该写成
TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_IndirectTI 使IC1对应到TI2吗。。哎 遥控器没带回家。。不能自己试。。只能求大神解救。。
回复

使用道具 举报

13

主题

611

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1929
金钱
1929
注册时间
2014-10-6
在线时间
625 小时
发表于 2015-1-23 14:49:52 | 显示全部楼层
就这里两者我认为都可,只是用的边沿检测器不同,都是定时器通道2!不知理解的对否,望大家发表见解!

回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-26 16:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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