OpenEdv-开源电子网

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

关于探索者F407输入捕获例程里程序书写的几个疑惑问题(求解答)

[复制链接]

9

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2018-11-11
在线时间
35 小时
发表于 2018-11-20 11:59:33 | 显示全部楼层 |阅读模式
1金钱

第一次在正点原子上发帖子,可能编辑不太好抱歉!
上图是教程源码里的图片,我在复制一下文字在下面。
if(TIM5CH1_CAPTURE_STA&0X40)                //捕获到一个下降沿
                        {                                 
                                TIM5CH1_CAPTURE_STA|=0X80;                //标记成功捕获到一次高电平脉宽
                          TIM5CH1_CAPTURE_VAL=TIM_GetCapture1(TIM5);//获取当前的捕获值
                                TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Rising); //CC1P=0 设置为上升沿捕获
                        }else                                                                  //还未开始,第一次捕获上升沿
                        {
                                TIM5CH1_CAPTURE_STA=0;                        //清空
                                TIM5CH1_CAPTURE_VAL=0;
                                TIM5CH1_CAPTURE_STA|=0X40;                //标记捕获到上升沿
                                TIM_Cmd(TIM5,DISABLE );         //关闭定时器5
                                 TIM_SetCounter(TIM5,0);
                                TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Falling);                //CC1P=1 设置为下降沿捕获
                                TIM_Cmd(TIM5,ENABLE );         //使能定时器5
                        }                    
红色的是截取出来的部分源码,其中我疑惑的是蓝色的字体程序部分,
TIM_OC1PolarityConfig不应该是output的设置吗,为什么里面装的却是input的
TIM_ICPolarity_Falling!!!而且我很好奇的是,程序是能够完全完好地进行的。
我通过点击TIM_OC1PolarityConfig的“go to the definition”进去到下面截图部分

再点击IS_TIM_OC_POLARITY的“go to the definition”进去,然后到了下面的截图部分

这里面TIM_OC1PolarityConfig的定义里头并没有发现TIM_ICPolarity_Falling的定义,
只有TIM_OCNPolarity_High和TIM_OCNPolarity_Low,而TIM_ICPolarity_Falling存在的
函数是下面截图里头的TIM_Input_Capture_Polarity();那么请问这里面的联系到底是
怎么样的?程序运行的地址是怎么从input到output的?
407.3.png
另外,我是以为stm32的初学者,是从51单片机过渡过来的,51里头的中断我大概是知道怎么转接的,
但F407的NVIC和Handler之间与GPIO口之间的联系,它们的路径之间是怎么联系转接的我还有点蒙,希望
原子哥和各路大神给小弟指点迷津!非常感谢!


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

使用道具 举报

3

主题

288

帖子

0

精华

高级会员

Rank: 4

积分
865
金钱
865
注册时间
2018-8-28
在线时间
130 小时
发表于 2018-11-20 13:45:30 | 显示全部楼层
因为你设置的是输入捕捉,所以这里是设置输入捕捉方式。TIM_ICPolarity_Falling为什么是2你可以看看CC1P 通道配置,这个寄存器是TIMx_CCER里的。
回复

使用道具 举报

3

主题

288

帖子

0

精华

高级会员

Rank: 4

积分
865
金钱
865
注册时间
2018-8-28
在线时间
130 小时
发表于 2018-11-20 13:45:58 | 显示全部楼层
还是多看看原子哥的开发指南吧!多看几遍就会理解的
回复

使用道具 举报

9

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2018-11-11
在线时间
35 小时
 楼主| 发表于 2018-11-20 15:02:45 | 显示全部楼层
douxiaolingyun 发表于 2018-11-20 13:45
因为你设置的是输入捕捉,所以这里是设置输入捕捉方式。TIM_ICPolarity_Falling为什么是2你可以看看CC1P 通 ...

一直都在看原子的开发指南,我知道是设置的是输入捕获呀,但为什么输入捕获设置的函数名是
TIM_OC1PolarityConfig呢?
回复

使用道具 举报

3

主题

288

帖子

0

精华

高级会员

Rank: 4

积分
865
金钱
865
注册时间
2018-8-28
在线时间
130 小时
发表于 2018-11-20 15:20:40 | 显示全部楼层
。。。。。     因为库函数里就是这么写的啊!TIM5->CCER|=0x02;实际上就是这个样的。你可以看看这个 TIM_OC1PolarityConfig里面,时间是就是对寄存器CCER进行操作,至于CCER为啥是下降沿是0x02,你可以看看数据手册,厂商规定的。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-11-21 02:26:06 | 显示全部楼层
因为可以正常使用。  你看寄存器描述就知道了,这个寄存器的输入/输出的时候,有不同的功能。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-21 23:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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