第一次在正点原子上发帖子,可能编辑不太好抱歉!
上图是教程源码里的图片,我在复制一下文字在下面。
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
}
红 {MOD}的是截取出来的部分源码,其中我疑惑的是蓝 {MOD}的字体程序部分,
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的?
另外,我是以为stm32的初学者,是从51单片机过渡过来的,51里头的中断我大概是知道怎么转接的,
但F407的NVIC和Handler之间与GPIO口之间的联系,它们的路径之间是怎么联系转接的我还有点蒙,希望
原子哥和各路大神给小弟指点迷津!非常感谢!
一周热门 更多>