NIOS II的C程序以错误的顺序运行

时间:2015-02-22 16:16:20

标签: c eclipse sequence intel-fpga nios

我正在为我的NIOS II处理器编写C语言代码。 我正在使用让我疯狂的Ecplipse! 它坚持了很多!!

这部分代码应该使用SPI读取寄存器,更改数据,将其写回,然后再次读取以进行验证。

因此序列应为SPIread-> SPIwrite-> SPIread。 当我运行它时,我得到SPIread-> SPIread-> SPIwrite。

代码示例:

alt_u32 SpiRead(alt_u8 spiNbytes, alt_u8 spiReg)
{
    IOWR_32DIRECT(NRF24_SPI_BASE, 0, 0x1f & spiReg);    //set register 
    IOWR_8DIRECT(NRF24_SPI_BASE, 8, 0x07 & spiNbytes);  //Start SPI read
    return IORD_32DIRECT(NRF24_SPI_BASE, 12);           //return the data
}

void SpiWrite(alt_u32 data,alt_u8 spiNbytes,alt_u8 spiReg)
{
    spiReg = 0x1F & spiReg;
    spiReg = 0x20 | spiReg;
    data = data<<8;
    IOWR_32DIRECT(NRF24_SPI_BASE, 0, data | spiReg); //set register
    IOWR_8DIRECT(NRF24_SPI_BASE, 8, 0x07 & spiNbytes); //begin write SPI
}


int main(void) 
{
 alt_u32 dat = 0;
 dat = SpiRead(1, 0x06); //read spi

 dat = ((dat>>8) & 0x000000f8) | 0x00000005; //change data
 SpiWrite(dat, 1, 0x06);  //write data back

 dat = SpiRead(1, 0x06); //read data to validate

 while (1)  {   }  //stay here forever

 return 0;
}

如果我移除了while循环,我得到4次SPIread,然后是2次SPIwrite。每一个小改变都可能改变一切...... 我的程序现在是6K字节,我有18K字节的专用内存(OnChipMemory)。

有什么问题,请帮忙! 梅德。

0 个答案:

没有答案
相关问题