找回密码
 立即注册
查看: 652|回复: 13

定时器编译一直报错

[复制链接]
  • 打卡等级:偶尔看看II
  • 打卡总天数:27
  • 最近打卡:2025-06-17 16:20:55
已绑定手机

12

主题

65

回帖

334

积分

中级会员

积分
334
发表于 2025-3-3 22:56:28 | 显示全部楼层 |阅读模式
void Delay10ms(void)        //@24.000MHz
{
        unsigned char data i, j;

        i = 234;
        j = 115;
        do
        {
                while (--j);
        } while (--i);
}
  void Timer1_Init(void)                //3秒@24.000MHz
{
        TM1PS = 0x5B;                        //设置定时器时钟预分频 ( 注意:并非所有系列都有此寄存器,详情请查看数据手册 )
        AUXR &= 0xBF;                        //定时器时钟12T模式
        TMOD &= 0x0F;                        //设置定时器模式
        TL1 = 0x3F;                                //设置定时初始值
        TH1 = 0x01;                                //设置定时初始值
        TF1 = 0;                                //清除TF1标志
        TR1 = 1;                                //定时器1开始计时
        ET1 = 1;                                //使能定时器1中断
}
void main(void) //    主函数
{
        WTST=0;
        EAXFR=1;
        CKCON=0;        
    P0M1 = 0x00;   P0M0 = 0x00;
    P1M1 = 0x00;   P1M0 = 0x00;
    P2M1 = 0x00;   P2M0 = 0x00;
    P3M1 = 0x00;   P3M0 = 0x00;
    P4M1 = 0x00;   P4M0 = 0x00;
    P5M1 = 0x00;   P5M0 = 0x00;
    P6M1 = 0x00;   P6M0 = 0x00;
    P7M1 = 0x00;   P7M0 = 0x00;

    usb_init();                                     //USB CDC 接口配置

    EA =1;
    void Timer1_Init();        
    while (DeviceState != DEVSTATE_CONFIGURED);     //等待USB完成配置
    while (1)
    {
        if (bUsbOutReady)
        {
//            USB_SendData(UsbOutBuffer,OutNumber);//发送数据缓冲区,长度(接收数据原样返回, 用于测试)
                        
                        printf("一起来打王者荣耀\r\n");
            usb_OUT_done();
                }
               
                if(P32==0)
                {
                    Delay10ms();
                        while(P32==0);
        }
    }
}
      void Timer1_Isr(void) interrupt 3
   {
           state = !state;
               P20=state;
   }

Rebuild target 'Target 1'
compiling main.c...
main.c(50): error C25: syntax error near 'void'
main.c(51): error C25: syntax error near 'while'
main.c(51): error C25: syntax error near '!='
main.c(52): error C25: syntax error near '1'
main.c(55): error C103: 'bUsbOutReady': illegal function definition (missing ';' ?)
Target not created.
Build Time Elapsed:  00:00:00



回复

使用道具 举报 送花

3

主题

704

回帖

119

积分

等待验证会员

积分
119
发表于 2025-3-3 22:58:00 | 显示全部楼层
在您提供的代码中,`Delay10ms`函数通过嵌套循环实现延时,这种方式在精确计时上可能存在误差。建议使用定时器中断来实现精确延时。`Timer1_Init`函数中,`TM1PS`寄存器用于设置定时器1的预分频值,0x5B对应91,即预分频系数为92。若需实现3秒定时,需结合定时器的工作模式及计数周期进行计算。建议检查定时器配置是否正确,并确保中断服务程序已正确实现。若有具体错误信息,可进一步分析并优化代码。

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

3

主题

704

回帖

119

积分

等待验证会员

积分
119
发表于 2025-3-3 22:58:00 | 显示全部楼层
在您的代码中,`Delay10ms` 函数通过嵌套循环实现延时,但可能存在精度问题。建议使用定时器中断来实现精确延时。`Timer1_Init` 函数中,`TM1PS` 是定时器1的预分频寄存器,设置为 `0x5B` 可能不符合您的3秒延时需求。请检查时钟频率和预分频值,确保定时器配置正确。建议参考芯片手册,调整 `TM1PS` 和重装值,以实现精确的3秒延时。同时,确保定时器中断服务程序(ISR)正确配置和启用。

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:500
  • 最近打卡:2025-06-17 17:14:03
已绑定手机
已实名认证

112

主题

2394

回帖

6026

积分

版主

积分
6026
发表于 2025-3-3 23:24:01 | 显示全部楼层
void Timer1_Init();   是这句出现了问题
原因是:void只能在声明的时候使用,调用时应该去掉
改为:
Timer1_Init();就可以了
(去掉前面的void)
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:27
  • 最近打卡:2025-06-17 16:20:55
已绑定手机

12

主题

65

回帖

334

积分

中级会员

积分
334
发表于 2025-3-3 23:25:46 来自手机 | 显示全部楼层
好的明天我去试一下谢谢大哥
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:27
  • 最近打卡:2025-06-17 16:20:55
已绑定手机

12

主题

65

回帖

334

积分

中级会员

积分
334
发表于 2025-3-4 10:31:01 | 显示全部楼层
还是有错误   太菜了我
截图202503041030385315.jpg
截图202503041030422305.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:27
  • 最近打卡:2025-06-17 16:20:55
已绑定手机

12

主题

65

回帖

334

积分

中级会员

积分
334
发表于 2025-3-4 11:41:30 | 显示全部楼层
王*** 发表于 2025-3-3 23:24
void Timer1_Init();   是这句出现了问题
原因是:void只能在声明的时候使用,调用时应该去掉
改为:

还是有问题 太菜了我

点评

能否给出问题截图呢?  详情 回复 发表于 2025-3-4 13:23
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:500
  • 最近打卡:2025-06-17 17:14:03
已绑定手机
已实名认证

112

主题

2394

回帖

6026

积分

版主

积分
6026
发表于 2025-3-4 13:23:02 | 显示全部楼层
小*** 发表于 2025-3-4 11:41
还是有问题 太菜了我

能否给出问题截图呢?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:27
  • 最近打卡:2025-06-17 16:20:55
已绑定手机

12

主题

65

回帖

334

积分

中级会员

积分
334
发表于 2025-3-4 14:22:37 | 显示全部楼层
王*** 发表于 2025-3-4 13:23
能否给出问题截图呢?

#include "ai8051u.h"//        调用头文件
#include "stc32_stc8_usb.h"
#include "intrins.h"
#define  U8 unsigned char
#define U16 unsigned int
U8 state=0;
U8  Run_stste=0;
char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
void Delay10ms(void)        //@24.000MHz
{
        unsigned char data i, j;

        i = 234;
        j = 115;
        do
        {
                while (--j);
        } while (--i);
}
  void Timer1_Init(void)                //3秒@24.000MHz
{
        TM1PS = 0x5B;                        //设置定时器时钟预分频 ( 注意:并非所有系列都有此寄存器,详情请查看数据手册 )
        AUXR &= 0xBF;                        //定时器时钟12T模式
        TMOD &= 0x0F;                        //设置定时器模式
        TL1 = 0x3F;                                //设置定时初始值
        TH1 = 0x01;                                //设置定时初始值
        TF1 = 0;                                //清除TF1标志
        TR1 = 1;                                //定时器1开始计时
        ET1 = 1;                                //使能定时器1中断
}
void main(void) //    主函数
{
        WTST=0;
        EAXFR=1;
        CKCON=0;        
    P0M1 = 0x00;   P0M0 = 0x00;
    P1M1 = 0x00;   P1M0 = 0x00;
    P2M1 = 0x00;   P2M0 = 0x00;
    P3M1 = 0x00;   P3M0 = 0x00;
    P4M1 = 0x00;   P4M0 = 0x00;
    P5M1 = 0x00;   P5M0 = 0x00;
    P6M1 = 0x00;   P6M0 = 0x00;
    P7M1 = 0x00;   P7M0 = 0x00;
   
    usb_init();        // USB CDC 接口配置
        
        IE2 |= 0x80;
        Timer1_Init();
     EA = 1;
        
    while (DeviceState != DEVSTATE_CONFIGURED);     // 等待USB完成配置
    while (1)
    {
        if (bUsbOutReady)
        {
//            USB_SendData(UsbOutBuffer,OutNumber);//发送数据缓冲区,长度(接收数据原样返回, 用于测试)
                        
                        printf("一起来打王者荣耀\r\n");
            usb_OUT_done();
                }
               
                if(P32==0)
                {
                    Delay10ms();
                        while(P32==0);
        }
    }
}

         void Timer1_Isr(void) interrupt 3
   {
           state = !state;
               P20=state;
   }

Build target 'Target 1'
linking...
*** WARNING L27: INCOMPATIBLE INTERRUPT FRAME SIZE
    MODULE:  .\新建文件夹\范例程序\查询模式STC-CDC范例程序\stc32g_cdc_query_demo\stc_usb_cdc_32.LIB (usb)
    FRAME:   4 BYTES SAVED ON INTERRUPT
Program Size: data=8.3 edata+hdata=424 xdata=192 const=73 code=7688
creating hex file from ".\Objects\LED1"...
".\Objects\LED1" - 0 Error(s), 1 Warning(s).
Build Time Elapsed:  00:00:00
截图202503041424558395.jpg 截图202503041424376723.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:500
  • 最近打卡:2025-06-17 17:14:03
已绑定手机
已实名认证

112

主题

2394

回帖

6026

积分

版主

积分
6026
发表于 2025-3-4 14:46:09 | 显示全部楼层
这只是一个警告,可以不用管他。
不过想要消除警告的话,可以跟着这个视频一步一步来
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=15176
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-17 18:53 , Processed in 0.532335 second(s), 105 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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