stm32库函数学习篇通用定时器输入捕获功能
= 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灯交替闪烁。
我并没有对捕获值作任何处理,因为我只是测试程序是否能顺利进入捕获中断。
stm32库函数通用定时器输入捕 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)
