void MY_CONFIG(void)
{
// NVIC_InitTypeDef NVIC_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
/* TIM4 clock source enable */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
/* Enable GPIOA, clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
//TIM4输出初始化
TIM_DeInit(TIM4);
TIM_TimeBaseStructure.TIM_Period = 65535; //计数值
TIM_TimeBaseStructure.TIM_Prescaler = 0; //预分频
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //时钟分割
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //模式
TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); //基本初始化
TIM_SetCounter(TIM4, 0); //设置 TIM4 计数器寄存器值
//设置 TIMx 自动重装载寄存器值
TIM_ARRPreloadConfig(TIM4, ENABLE);
TIM_SelectInputTrigger(TIM4, TIM_TS_TI2FP2); //若为通道1 ,则为TIM_TS_TI1FP1
TIM_SelectSlaveMode(TIM4, TIM_SlaveMode_External1);
TIM_Cmd(TIM4, ENABLE); //启动TIM4
TIM_ClearFlag(TIM4, TIM_IT_CC2); //若用一通道,则此处和后面的TIM_IT_CC2都改为TIM_IT_CC1
TIM_ITConfig(TIM4, TIM_IT_CC2, ENABLE);
}
int main(void)
{
unsigned char n=0;
SystemInit();
delay_init(72); //延时初始化
NVIC_Configuration();
uart_init(9600);
LED_Init();
KEY_Init();
while(1)
{
delay_ms(1000);
LED0=0;
delay_ms(1000);
LED0=1;
n=TIM_GetCounter(TIM4);
printf("n=%d\n",n);
}
}
我是想用PA.8输出脉冲,然后PB.7通道2计算这段脉冲的频率,可是读出的计数总是为0,求解答~~~
|