微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > stm32库函数学习篇通用定时器输入捕获功能

stm32库函数学习篇通用定时器输入捕获功能

时间:11-19 来源:互联网 点击:

= 0x0; /*选择输入比较滤波器,滤波设置,经历几个周期跳变认定波形稳定0x0~0xF*/

TIM_ICInit(TIM3, &TIM_ICInitStructure);

//开启TIM2的中断

TIM_ClearFlag(TIM3, TIM_IT_CC2);

TIM_ITConfig(TIM3,TIM_IT_CC2,ENABLE);

TIM_Cmd(TIM3, ENABLE); //使能TIMx外设

}

/

* @brief Main program.

* @param None

* @retval None

*/

int main(void)

{

rcc_cfg();

gpio_cfg();

nvic_cfg();

tim3_cfg();

while (1)

{

/* Set PA8 */

GPIO_WriteBit(GPIOA, GPIO_Pin_8, Bit_SET);

delay();

/* Reset PA8 */

GPIO_WriteBit(GPIOA, GPIO_Pin_8, Bit_RESET);

delay();

}

}

注意定时器3通道2引脚设置为浮空输入。

下面是stm32f10x_it.c文件

#include "stm32f10x_it.h"

u8 flag=0;

extern TIM_ICInitTypeDef TIM_ICInitStructure;

void TIM3_IRQHandler(void)

{

if(TIM_GetITStatus(TIM3, TIM_IT_CC2) == SET)

{

/* Clear TIM3 Capture compare interrupt pending bit */

TIM_ClearITPendingBit(TIM3, TIM_IT_CC2);

//每次进入中断就改变捕获触发方式,且翻转PD2的电平

if(flag==0)

{

flag=1;

TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Falling;

TIM_ICInit(TIM3, &TIM_ICInitStructure);

GPIO_WriteBit(GPIOD, GPIO_Pin_2, Bit_RESET);

}

else

{

flag=0;

TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;

TIM_ICInit(TIM3, &TIM_ICInitStructure);

GPIO_WriteBit(GPIOD, GPIO_Pin_2, Bit_SET);

}

}

}

程序运行后,可以看到板子上两个led灯交替闪烁。

我并没有对捕获值作任何处理,因为我只是测试程序是否能顺利进入捕获中断。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top