串口打印变量值分析下 |
这个可以明确PB5你可进行TIM3的引脚重映射。重映射后的操作参考如下: GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimBaseStructure; TIM_ICInitTypeDef TIM_ICInitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3 ,ENABLE ); //重映射相应的外设 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOB, &GPIO_InitStructure); TIM_TimeBaseStructInit(&TIM_TimBaseStructure); TIM_TimBaseStructure.TIM_Prescaler = 0x0; TIM_TimBaseStructure.TIM_Period = 2400; TIM_TimBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM3,&TIM_TimBaseStructure); TIM_EncoderInterfaceConfig(TIM3,TIM_EncoderMode_TI12,TIM_ICPolarity_Rising,TIM_ICPolarity_Rising); TIM_ICStructInit(&TIM_ICInitStructure); TIM_ICInitStructure.TIM_ICFilter = 0; TIM_ICInit(TIM3,&TIM_ICInitStructure); TIM_ClearFlag(TIM3,TIM_FLAG_Update); TIM_SetCounter(TIM3,0); TIM_Cmd(TIM3,ENABLE); |
51hei截图_20210924084044.jpg (16.03 KB, 下载次数: 91)
shumivan 发表于 2021-9-23 16:59 TIM3的CH2通道部分映射对应管脚PB5,有PWM输出 |
记住:永远不要在中断服务程序中,执行占用时间长的函数! 中断只做标记,在主函数中,根据标记执行相关的程序,完成后清除标记。 |
定义的时候重映射,而且我觉得要定时器3全部映射,你现在是部分映射,怕是PWM的功能没有启用 |
TIM_GetFlagStatus的返回值有什么含意? 既然你的函数都已经放在中断中 直接运行if(st!=0)内的东东就好了 为什么还要判断st的值? |
本帖最后由 shumivan 于 2021-9-24 08:36 编辑 你这也没有定时器3的相关信息 阿,只有定时器2的信息,无法判。补充,刚开始没看清楚,下边有我的观点 |
这个是源程序 |
212.19 KB, 下载次数: 6