首页 > 解决方案 > 添加功能后的奇怪问题

问题描述

我有奇怪的问题。当我编译第一个函数时,微控制器发送带有错误的信号(som 八位字节是重复的,有些根本没有发送等)。但是当我完成第二个功能时,微控制器发送清除信号。这些错误的原因可能是什么?如果您需要更多信息,我会尽力回答:3


第一个功能:

uint8_t DataOut[DATA_OUT_BUF_SIZE];
uint8_t DataOutPosition = 0;

void add_data(uint8_t Value)
{
    DataOut[DataOutPosition] = Value;
    DataOutPosition++;
}

void send_data()
{
    uint8_t Checksum = 0x52;
    for (uint8_t i = 0; i < DataOutPosition; ++i)
    {
        Checksum ^= DataOut[i];
    }
    
    add_data((checksum_compression(Checksum) | (ProcessDataStatus << 6) | (EventFlag << 7)));
    
    UART_CONTROL &= ~(1 << RXEN0);
    EN_OUT;
    for (uint8_t i = 0; i < DataOutPosition; ++i)
    {
        uart_put(DataOut[i]);
    }
    default_variables();
}

第二个功能:

uint8_t DataOut[DATA_OUT_BUF_SIZE];
uint8_t DataOutPosition = 0;

void send_data()
{
    uint8_t Checksum = 0x52;
    for (uint8_t i = 0; i < DataOutPosition; ++i)
    {
        Checksum ^= DataOut[i];
    }
    
    DataOut[DataOutPosition] = checksum_compression(Checksum) | (ProcessDataStatus << 6) | (EventFlag << 7);
    DataOutPosition++;
    
    UART_CONTROL &= ~(1 << RXEN0);
    EN_OUT;
    for (uint8_t i = 0; i < DataOutPosition; ++i)
    {
        uart_put(DataOut[i]);
    }
    default_variables();
}

描述:

逻辑分析仪截图

标签: cfunctionmicrocontroller

解决方案


推荐阅读