关于STM32F407定时器实验中使用外部时钟模式2的问题

2019-07-20 01:03发布

 我就是按照上面的步奏写的程序,外部时钟输入引脚定的是PA0,但是当把外部时钟信号接到PA0时没有进入中断,也就是没有任何现象,不知道怎么回事?下面是我的程序,大神帮忙给看看
#include <timer.h>
//端口初始化
void timer_init()
{
RCC->AHB1ENR|=1<<5;
GPIO_Set(GPIOF,PIN9|PIN10,GPIO_MODE_OUT,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU);
GPIO_Set(GPIOA,PIN0,GPIO_MODE_IN,0,0,GPIO_PUPD_NONE);
led0=1;
led1=1;
}

//中断服务函数
void TIM2_IRQHandler(void)
{
if(TIM2->SR&0x0001)
{
led1=~led1;
}
TIM2->SR&=~(1<<0);  //清除中断标志位
}


//通用定时器2中断初始化
//时钟选择为APB1的2倍,APB1为42M
//arr:自动重装值
//psc:时钟预分频数
//定时器溢出时间计算方法:Tout=((arr+1)*(psc+1))/Ft
//Ft:定时器工作频率,单位:MHz
//这里使用的定时器2
void TIM2_Int_Init(u32 arr,u32 psc)
{
RCC->APB1ENR|=1<<0; //定时器2时钟使能
TIM2->SMCR&=0xf0ff; //不要滤波器
TIM2->SMCR|=1<<12; //2分频ETRP频率
TIM2->SMCR&=~(1<<15);    //高电平触发
TIM2->SMCR|=(1<<4&1<<5&1<<6);//外部触发输入
TIM2->SMCR|=1<<14;  //使能外部时钟模式2


TIM2->ARR=arr;       //设置TIM2_ARR 和TIM2_PSC的值 
TIM2->SC=psc;
TIM2->DIER|=1<<0;   //设置DIER,允许更新中断
TIM2->DIER|=1<<6;   //使能触发信号中断
TIM2->CR1|=1<<0;    //使能计数器
MY_NVIC_Init(3,2,TIM2_IRQn,2);
}


//下面是主函数部分


int main(void)
{
Stm32_Clock_Init(336,8,2,7);
delay_init(168);
timer_init();
uart_init(84,115200);
TIM2_Int_Init(5000000-1,0); 
while(1)
{
printf("OK ");
led0=!led0;
delay_ms(200);
}

}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。