找回密码
 立即注册
查看: 561|回复: 6

使用定时器0和1实现频率统计,计数器赋初值失败

[复制链接]

5

主题

7

回帖

67

积分

注册会员

积分
67
发表于 2024-3-7 16:10:29 | 显示全部楼层 |阅读模式
#include "public.h"



char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";

#define KEY2 P32
#define KEY3 P33

void Timer1_Init(void);//计数
void Timer0_Init(void);//定时


u16 time2s=0;
u16 Pulse_num=0;       
u16 flag=0;
void main()
{
       
       
        sys_init();
  usb_init();
        TMOD = 0x40;       
  Timer1_Init();
  Timer0_Init();       
       
       
  EA = 1;
//        P40=0;
        P3PU = 0x20;

       
        while(1)
        {
       
               
          if(DeviceState!=DEVSTATE_CONFIGURED)
                continue;
               
                        if(bUsbOutReady)
                                {
                                usb_OUT_done();
                                       

                                }


         

        }
}




//-------------定时器1计数模式--------------
void Timer1_Isr(void) interrupt 3
{
        //P27=!P27;
}

void Timer1_Init(void)       
{

//        TMOD = 0x40;                       
        TL1 = 0x00;                               
        TH1 = 0x00;                               

        TR1 = 1;                               
        ET1 = 1;                               
}


void Timer0_Isr(void) interrupt 1
{
        time2s++;
        if(time2s>=2000)
        {
          Pulse_num=TH1*256+TL1;
                printf("Pulse_num=%u\n",Pulse_num);
    TL1=0;                               
          TH1=0;
                flag=TH1*256+TL1;
                printf("flag=%u\n",flag);
    time2s=0;               
        }
}

void Timer0_Init(void)                //1毫秒@24.000MHz
{
////        AUXR |= 0x80;                        //定时器时钟1T模式
////        TMOD |= 0x00;                        //设置定时器模式
        TL0 = 0x40;                                //设置定时初始值
        TH0 = 0xA2;                                //设置定时初始值
        TF0 = 0;                                //清除TF0标志
        TR0 = 1;                                //定时器0开始计时
        ET0 = 1;                                //使能定时器0中断
}




计数器赋初值失败

计数器赋初值失败
回复

使用道具 举报 送花

5

主题

7

回帖

67

积分

注册会员

积分
67
发表于 2024-3-7 16:24:24 | 显示全部楼层
使用的屠龙刀核心板
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:462
  • 最近打卡:2025-06-16 10:02:39

33

主题

2447

回帖

5168

积分

论坛元老

积分
5168
发表于 2024-3-8 09:39:51 | 显示全部楼层
再赋值前加上关闭定时器计数代码 就能改定时器计数值,,具体的可以看看 手册关于定时器的章节,,,介绍挺详细的
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:117
  • 最近打卡:2025-03-06 09:50:21

6

主题

142

回帖

718

积分

高级会员

积分
718
发表于 2024-11-11 13:42:35 | 显示全部楼层
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:523
  • 最近打卡:2025-06-17 09:55:53
已绑定手机

23

主题

593

回帖

2989

积分

金牌会员

积分
2989
发表于 2025-1-11 11:17:30 | 显示全部楼层
_奶*** 发表于 2024-3-8 09:39
再赋值前加上关闭定时器计数代码 就能改定时器计数值,,具体的可以看看 手册关于定时器的章节,,,介绍挺 ...

我用定时器3及4设置为计数模式,按照你说的“赋值前加上关闭定时器计数代码 就能改定时器计数值”, 结果并不能更改定时器计数值,不知何故。
不停地学习
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:462
  • 最近打卡:2025-06-16 10:02:39

33

主题

2447

回帖

5168

积分

论坛元老

积分
5168
发表于 2025-1-11 12:42:29 | 显示全部楼层
WH*** 发表于 2025-1-11 11:17
我用定时器3及4设置为计数模式,按照你说的“赋值前加上关闭定时器计数代码 就能改定时器计数值”, 结果 ...

没用过计数模式,,我这里定时模式可以这样该,,你再看看手册把
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:202
  • 最近打卡:2025-06-17 00:31:00
已绑定手机

12

主题

193

回帖

897

积分

高级会员

积分
897
发表于 2025-1-11 19:37:47 | 显示全部楼层
学习学习
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-17 13:02 , Processed in 0.153743 second(s), 93 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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