标题: STM32为什么我的定时器计数累加 [打印本页]

作者: sssssda    时间: 2021-9-23 10:52
标题: STM32为什么我的定时器计数累加
这是我写的一个PID输出PWM控制温度的程序
但是为什么程序始终进不去算法函数
是不是定时器2和定时器3的中断有冲突
麻烦大佬帮我看下
程序在User里面






作者: sssssda    时间: 2021-9-23 10:54
这个是源程序

18B20最终方案.7z

212.19 KB, 下载次数: 6


作者: shumivan    时间: 2021-9-23 16:45
本帖最后由 shumivan 于 2021-9-24 08:36 编辑

你这也没有定时器3的相关信息 阿,只有定时器2的信息,无法判。补充,刚开始没看清楚,下边有我的观点

作者: lkc8210    时间: 2021-9-23 16:57
TIM_GetFlagStatus的返回值有什么含意?
既然你的函数都已经放在中断中
直接运行if(st!=0)内的东东就好了
为什么还要判断st的值?
作者: shumivan    时间: 2021-9-23 16:59
定义的时候重映射,而且我觉得要定时器3全部映射,你现在是部分映射,怕是PWM的功能没有启用
作者: yzwzfyz    时间: 2021-9-23 17:37
记住:永远不要在中断服务程序中,执行占用时间长的函数!
中断只做标记,在主函数中,根据标记执行相关的程序,完成后清除标记。


作者: sssssda    时间: 2021-9-23 19:15
shumivan 发表于 2021-9-23 16:59
定义的时候重映射,而且我觉得要定时器3全部映射,你现在是部分映射,怕是PWM的功能没有启用

TIM3的CH2通道部分映射对应管脚PB5,有PWM输出
作者: shumivan    时间: 2021-9-24 08:43
这个可以明确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)

51hei截图_20210924084044.jpg

作者: 946248446    时间: 2021-10-14 14:13
串口打印变量值分析下




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1