55337575 发表于 2023-12-22 16:03:11

_uCosII移植使用了T4软中断,我怎么就模拟不出来呢

_uCosII移植使用了T4软中断,我也做了一个小程序模拟计数试了一下,结果.......没有结果。请各位老师帮帮忙{:4_196:}



#include        "config.h"
char aa;
void T4Soft_isr() interrupt 20
{
        T4IF = 0;
        aa++;
}
void tt_Init()
{       
        T4IF = 0;
        ET4 = 1;
        EA = 1;
}

void main()
{       
        unsigned long edata i;

        _nop_();
        _nop_();
        i = 437498UL;

        WTST = 0;   
        EAXFR = 1;   
        CKCON = 0;   

        tt_Init();
        while(1)
        {
                if(--i==0)
                {
                        i = 437498UL;
                        T4IF=1;
                }
        }
}


源码是35M,50ms计数完成溢出一次。结果aa没反应

tzz1983 发表于 2023-12-22 22:41:09

本帖最后由 tzz1983 于 2023-12-22 22:48 编辑

你是如何看出没有反应的呢? 刚才用(STC32G12K128屠龙刀)测试了一下你这个代码, 可以正常产生中断.
在你代码的基础上增加了两条语句:   P2M0=0XFF;P2=~P2;是为了可以直观的看到中断发生的频率.下面是代码
#include "Config.h"
char aa;
void T4Soft_isr() interrupt 20
{
    T4IF = 0;
    aa++;
    P2=~P2; //每次发生中断, P2翻转, 可见LED闪烁
}
void tt_Init()
{      
    T4IF = 0;
    ET4 = 1;
    EA = 1;
}
void main()
{      
    unsigned long edata i;
    _nop_();
    _nop_();
    i = 437498UL;
    WTST = 0;   
    EAXFR = 1;   
    CKCON = 0;
    P2M0=0XFF; //P2设置为推挽
    tt_Init();
    while(1)
    {
      if(--i==0)
      {
            i = 437498UL;
            T4IF=1;
      }
    }
}


55337575 发表于 2024-1-5 11:22:23

嗯,找到原因了,我没有使用硬件调试,是使用仿真调试出的问题,谢谢{:4_196:}
页: [1]
查看完整版本: _uCosII移植使用了T4软中断,我怎么就模拟不出来呢