передаю в функцию указатель на строку для получения результатов работы
если идти отладтчиком то всё работает данные записываються в строку
если отпустить и в функцию не входить, результатов нет
Keil uvision 4
переменная
вызов
тело функции
код той функции что данные набивает масив ( с её вызовом проблем нет)
если идти отладтчиком то всё работает данные записываються в строку
если отпустить и в функцию не входить, результатов нет
Keil uvision 4
переменная
Код: Выделить всё
char out[20];
Код: Выделить всё
ReadS50_16(n,out);
Код: Выделить всё
char ReadS50_16(char addr, char *out2)
{
char buf[20];
char crc[2];
char tmp;
int n;
buf[0]=0x30;
buf[1]=addr;
CRCcalc(buf,crc,2);
buf[2+0]=crc[0];
buf[2+1]=crc[1];
///////////////////////////////////////
WriteByte(CommandReg,PCD_IDLE);
WriteByte(FIFOLevelReg,0x80);
WriteFIFO(buf,4);
tmp=ReadByte(FIFOLevelReg );
WriteByte(CommandReg,PCD_TRANSCEIVE );
tmp=ReadByte(BitFramingReg ); //bit 1
WriteByte(BitFramingReg ,0x80);
for ( n=2000; n!=0; n--);
tmp=ReadByte(FIFOLevelReg );
ReadFIFO(out2,tmp);
WriteByte(BitFramingReg ,0x00);
return tmp;
}
Код: Выделить всё
void ReadFIFO(char *data, int count)
{
int n;
char tmp;
NSS_strob();
////////////////////////////////
/////////////////////////////////
if(count==0){ return;}
tmp = (FIFODataReg<<1)|(0x80);
SPI1->DR = tmp;
while (!(SPI1->SR & SPI_SR_RXNE)); //îæèäàíèå îêîí÷àíèÿ ïåðåäà÷è
tmp=SPI1->DR;
if (count>1){
for(n=0;n<count-1;n++)
{
tmp = (FIFODataReg<<1)|(0x80);
SPI1->DR = tmp;
while (!(SPI1->SR & SPI_SR_RXNE)); //îæèäàíèå îêîí÷àíèÿ ïåðåäà÷è
data[n]=SPI1->DR;
} }
SPI1->DR = 0x00;
while (!(SPI1->SR & SPI_SR_RXNE)); //îæèäàíèå îêîí÷àíèÿ ïåðåäà÷è
//
data[count-1]=SPI1->DR;
NSS_strob();
//
}
