Собирал сегодня проект (точнее что то вроде близкое к проекту). Компилятор IAR MCS-51 v7.51A.
Камень nRF24LE1.
Написал вот такую функцию, которая (по идее должна) записывает в модуль интегрированного приемопередатчика порцию байтов разной длинны. Компилятор и до этого ругался как оказалось на указатель *buff. Почему то ему он не нравился

Код
void rf_write_multibyte_reg(unsigned char reg, unsigned char *buff, unsigned char byte_num)
{
unsigned char i;
i = 0;
CS_LOW;
rf_spi_rw(W_REGISTER | reg);
while (i < byte_num)
{
rf_spi_rw(*(buff + i));
i++;
}
CS_HIGH;
}
{
unsigned char i;
i = 0;
CS_LOW;
rf_spi_rw(W_REGISTER | reg);
while (i < byte_num)
{
rf_spi_rw(*(buff + i));
i++;
}
CS_HIGH;
}
После компиляции выдал ошибку:
Error[e124]: Segment conflict for segment ISTACK. In module "__program_start" there is a segment part that is of type STACK, while in module "CSTARTUP" there is a segment part that is of type RELOCATABLE
немного изменил функцию
Код
void rf_write_multibyte_reg(unsigned char reg, unsigned char *buff, unsigned char byte_num)
{
unsigned char i;
i = 0;
CS_LOW;
rf_spi_rw(W_REGISTER | reg);
while (i < byte_num)
{
rf_spi_rw(*(buff + i));
//i++;
}
CS_HIGH;
}
{
unsigned char i;
i = 0;
CS_LOW;
rf_spi_rw(W_REGISTER | reg);
while (i < byte_num)
{
rf_spi_rw(*(buff + i));
//i++;
}
CS_HIGH;
}
соответственно цикл стал бесконечным... Но компилятор его схавал!!!
Изменял размер стека все бестолку...