{
printf("进入TIM1_IRQHandler\r\n")
TIM_ClearFlag(TIM1, TIM_IT_CC1)
}
这里出了问题。
函数名不是这样的
资料说:
EXPORT TIM1_BRK_IRQHandler[WEAK]
EXPORT TIM1_UP_IRQHandler [WEAK]
EXPORT TIM1_TRG_COM_IRQHandler[WEAK]
EXPORT TIM1_CC_IRQHandler [WEAK]
EXPORT TIM2_IRQHandler[WEAK]
EXPORT TIM3_IRQHandler[WEAK]
EXPORT TIM4_IRQHandler[WEAK]
显然TIM1的中断和其他不一样,所以中断函数改成:
void TIM1_CC_IRQHandler(void)
就没有问题了
TIM_DeInit(TIM1)//将外设TIM1寄存器重设为默认值/*设置时间基准*/
TIM_TimeBaseStructure.TIM_Prescaler=0//时钟频率的预分频值
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up
TIM_TimeBaseStructure.TIM_Period=7200-1//自动重装载寄存器周期值
TIM_TimeBaseStructure.TIM_ClockDivision=0x0//时钟分割值
TIM_TimeBaseStructure.TIM_RepetitionCounter=0x0
TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure)//初始化TIM1的时间基数数据
TIM_ICInitStructure.TIM_Channel= TIM_Channel_1//选择通道2
TIM_ICInitStructure.TIM_ICPolarity= TIM_ICPolarity_Rising//上升沿
TIM_ICInitStructure.TIM_ICSelection= TIM_ICSelection_IndirectTI//通道方向选择
TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1/*每次检测到捕获输入就触发一次捕获 */
TIM_ICInitStructure.TIM_ICFilter=0x00/* 对分频率没有影响 选择输入比较滤波器*/
TIM_PWMIConfig(TIM1, &TIM_ICInitStructure)//根据参数配置TIM外设信息
TIM_SelectInputTrigger(TIM1, TIM_TS_TI1FP1)//选择IC1为始终触发源
TIM_SelectSlaveMode(TIM1, TIM_SlaveMode_Reset)//TIM从模式:触发信号的上升沿重新初始化计数器和触发寄存器的更新事件
TIM_SelectMasterSlaveMode(TIM1, TIM_MasterSlaveMode_Enable)//启动定时器的被动触发
TIM_ITConfig(TIM1, TIM_IT_CC1, ENABLE)//打开中断
TIM_Cmd(TIM1,ENABLE)}
// ***注意*** //TIM3时钟和SPI1时钟不能同时打开,否则TIM3的CH1、CH2不能输出PWM,但CH3、CH4能输出 //APB1ENR最好全部打开,否则TIM1在极偶尔情况下会不工作 另外,STM32中很多的IO都是复用,对于具备多个复用功能的IO要尤其小心,注意会不会...欢迎分享,转载请注明来源:内存溢出
评论列表(0条)