找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1271|回复: 8
收起左侧

STM32为什么我的定时器计数累加

[复制链接]
回帖奖励 30 黑币 回复本帖可获得 30 黑币奖励! 每人限 1 次
ID:936528 发表于 2021-9-23 10:52 | 显示全部楼层 |阅读模式
这是我写的一个PID输出PWM控制温度的程序
但是为什么程序始终进不去算法函数
是不是定时器2和定时器3的中断有冲突
麻烦大佬帮我看下
程序在User里面


b4251d7d9c309cf53743150fd4e3543e.png
a0d297d8fb2f2f9e99249267966fac92.png

回复

使用道具 举报

ID:936528 发表于 2021-9-23 10:54 | 显示全部楼层
这个是源程序

18B20最终方案.7z

212.19 KB, 下载次数: 6

回复

使用道具 举报

ID:81196 发表于 2021-9-23 16:45 | 显示全部楼层
本帖最后由 shumivan 于 2021-9-24 08:36 编辑

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

使用道具 举报

ID:161164 发表于 2021-9-23 16:57 | 显示全部楼层
TIM_GetFlagStatus的返回值有什么含意?
既然你的函数都已经放在中断中
直接运行if(st!=0)内的东东就好了
为什么还要判断st的值?
回复

使用道具 举报

ID:81196 发表于 2021-9-23 16:59 | 显示全部楼层
定义的时候重映射,而且我觉得要定时器3全部映射,你现在是部分映射,怕是PWM的功能没有启用
回复

使用道具 举报

ID:123289 发表于 2021-9-23 17:37 | 显示全部楼层
记住:永远不要在中断服务程序中,执行占用时间长的函数!
中断只做标记,在主函数中,根据标记执行相关的程序,完成后清除标记。

回复

使用道具 举报

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

TIM3的CH2通道部分映射对应管脚PB5,有PWM输出
回复

使用道具 举报

ID:81196 发表于 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
回复

使用道具 举报

ID:479619 发表于 2021-10-14 14:13 | 显示全部楼层
串口打印变量值分析下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表