设置
tiM3_CH1为捕获输入模式,在中断中测量捕获信号(方波)的频率,不知哪里出了问题???
/****************************
*
*
*
*
*************************/
#include"tim.h"
#include"misc.h"
/**************************************
*函数名 :void TIM3_NVIC_Config(void)
*描述 :配置TIM3的中断
*输入 :无
*输出 :无
*调用 :内部调用
**************************************/
static void TIM3_NVIC_Config(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
/*************************
*函数名 :TIM3_GPIO_Config()
*描述 : 初始化TIM3及GPIO
*输入 :无
*输出 :无
*调用 :内部调用
*************************/
static void TIM3_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
// TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
// TIM_ICInitTypeDef TIM_ICInitStructure;
// TIM_DeInit(TIM3);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; // PA6----TIM3_CH1
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA,&GPIO_InitStructure);
}
/**************************
*函数名 : TIM3_Mode_Config
* 描述 :配置TIM3为捕获输入模式
* 输入 :无
* 输出 :无
* 调用 :内部调用
****************************/
static void TIM3_Mode_Config(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_ICInitTypeDef TIM_ICInitStructure;
TIM_DeInit(TIM3);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
//初始化TIM3的相关参数
TIM_TimeBaseStructure.TIM_Period = 999; //1000个数据
TIM_TimeBaseStructure.TIM_Prescaler = (36-1); //2M
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);
//初始化TM3输入捕获通道 1 TIM3_CH1
TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;
TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; //上升沿捕获
TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; //不分频
TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; //
TIM_ICInitStructure.TIM_ICFilter = 0x00; //
TIM_ICInit(TIM3,&TIM_ICInitStructure);
TIM_CCxCmd(TIM3,TIM_Channel_1,TIM_CCx_Enable);
TIM3_NVIC_Config();
TIM_ITConfig(TIM3,TIM_IT_CC1,ENABLE); //配置TIM3的CC1中断并使能
TIM_Cmd(TIM3,ENABLE);
}
/*
* 函数名:TIM3_IC_Init
* 描述 :TIM3 捕获输入初始化
* 输入 :无
* 输出 :无
* 调用 :外部调用
*/
void TIM3_IC_Init(void)
{
TIM3_GPIO_Config();
TIM3_Mode_Config();
}
一周热门 更多>