找回密码
 立即注册
查看: 1211|回复: 5

请教,STC8H8K64U TIMER3做计数器,不能计数

[复制链接]
  • 打卡等级:偶尔看看II
  • 打卡总天数:25
  • 最近打卡:2026-03-16 11:34:42

2

主题

18

回帖

366

积分

中级会员

积分
366
发表于 2023-6-6 23:36:16 | 显示全部楼层 |阅读模式
我用的是官方的函数库写的程序:
定时器3初始化如下,计数器脉冲从P04(准双向输入口)输入:

        TIM_InitStructure.TIM_ClkSource = TIM_CLOCK_Ext;
        TIM_InitStructure.TIM_ClkOut    = DISABLE;               
        TIM_InitStructure.TIM_Value     = 10UL;               
        TIM_InitStructure.TIM_Run       = ENABLE;                               
        Timer_Inilize(Timer3,&TIM_InitStructure);       
        NVIC_Timer3_Init(ENABLE,Priority_2);               

发现不能计数,但用TIMER0从P35输入脉冲能计数,请问是什么问题?手册关于定时器部分也看了N遍,没发现问题。各位大神知道是什么回事不?
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:640
  • 最近打卡:2026-03-16 09:10:58
已绑定手机

52

主题

2480

回帖

8772

积分

论坛元老

积分
8772
发表于 2023-6-7 10:30:30 | 显示全部楼层
5个定时器都能做计数器的,从预设计数值累加溢出后才会产生中断。
附件例程请参考。

Timer0-Timer1-Timer2-Timer3-Timer4做计数器-LIB.zip

39.01 KB, 下载次数: 150

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:25
  • 最近打卡:2026-03-16 11:34:42

2

主题

18

回帖

366

积分

中级会员

积分
366
发表于 2023-6-7 18:26:36 | 显示全部楼层
乘风*** 发表于 2023-6-7 10:30
5个定时器都能做计数器的,从预设计数值累加溢出后才会产生中断。
附件例程请参考。 ...

谢谢您的回答,问题找到了,预设值应该是(65536UL-SET_VALUE)才是对的。非常感谢
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2026-03-15 18:48:24
已绑定手机

5

主题

19

回帖

67

积分

注册会员

积分
67
发表于 3 天前 | 显示全部楼层
乘风*** 发表于 2023-6-7 10:30
5个定时器都能做计数器的,从预设计数值累加溢出后才会产生中断。
附件例程请参考。 ...

代码里Timer4_Run();这个函数在哪引用的找不到啊
if(TIM == Timer4)                //Timer4,固定为16位自动重装, 中断无优先级
        {
                Timer4_Stop();        //停止计数
                if(TIMx->TIM_Interrupt == ENABLE)                Timer4_InterruptEnable();        //允许中断
                else                Timer4_InterruptDisable();        //禁止中断
                if(TIMx->TIM_ClkSource >  TIM_CLOCK_Ext)        return 2;
                if(TIMx->TIM_ClkSource == TIM_CLOCK_12T)        Timer4_12T();        //12T
                if(TIMx->TIM_ClkSource == TIM_CLOCK_1T)                Timer4_1T();        //1T
                if(TIMx->TIM_ClkSource == TIM_CLOCK_Ext)        Timer4_AsCounter();        //对外计数或分频
                else                Timer4_AsTimer();                //定时
                if(TIMx->TIM_ClkOut == ENABLE)        Timer4_CLKO_Enable();                //输出时钟
                else                Timer4_CLKO_Disable();        //不输出时钟

                T4_Load(TIMx->TIM_Value);
                if(TIMx->TIM_Run == ENABLE)        Timer4_Run();        //开始运行
                return        0;                //成功
        }
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:640
  • 最近打卡:2026-03-16 09:10:58
已绑定手机

52

主题

2480

回帖

8772

积分

论坛元老

积分
8772
发表于 昨天 09:10 | 显示全部楼层
彭*** 发表于 2026-3-14 16:12
代码里Timer4_Run();这个函数在哪引用的找不到啊
if(TIM == Timer4)                //Timer4,固定为16位自动重装, 中断 ...

在头文件里面定义,下载的项目编译通过后,在想要查看的函数上右键选择前往定义位置就能找到定义的地方:

截图202603160906226947.jpg

或者通过全局查找“CTRL+SHIFT+F”也能找到该函数/变量的所有位置:
截图202603160908571384.jpg
截图202603160910017317.jpg

点评

谢谢棒棒的  发表于 昨天 16:10
回复

使用道具 举报 送花

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

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-3-17 05:34 , Processed in 0.106193 second(s), 70 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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