Я постараюсь быть более ясным: мне нужно передать 3 числа с плавающей запятой, вычисленные в оперативной памяти, в буфер, хранящийся в другом месте в оперативной памяти: я написал код для этого, но буфер не заполнен правильно способ: я могу прочитать только одно значение. Это функция в оперативной памяти, которая вычисляет переменную
#pragma CODE_SECTION(Calculatevar,".FLASHCODE")
void Calculatevar(volatile signed char *a,volatile signed char *b,volatile signed char *c)
{
float axg, ayg, azg; // x, y, and z axis readings of the accelerometer
volatile unsigned char a_x,a_y,a_z;
axg = (ax + 2083)/16131.0;
ayg = (ay + 208)/16131.0;
azg = (az + 204)/16131.0;
*a=axg*126;
*b=ayg*126;
*c=azg*126;
}
в main() я написал Calculatevar(&a,&b,&c); определение изменчивого знакового символа a,b,c; Вот функция DMA:
unsigned char DMA_transfer(buffer *pointer_buffer) //DATA WRITE/PUSH
{ int next = pointer_buffer->head + 1;
if (next >= pointer_buffer->Num_Samples)
next = 0;
//buffer is full
DMA0SZ =pointer_buffer->Num_Samples;
// __data20_write_long((unsigned long) &DMA0SA,(unsigned long) &d1);
__data20_write_long((unsigned long) &DMA0SA,(unsigned long) & a);
__data20_write_long((unsigned long) &DMA0DA,(unsigned long) &pointer_buffer->buffer[pointer_buffer->head]);
DMA0CTL |= DMAEN +DMAIE; // Enable DMA0
DMA0CTL |= DMAREQ; // Trigger block transfer
pointer_buffer->head = next;
return 0;
}
Что мне не хватает??
a
? Что такоеNum_Samples
? - person CL.   schedule 27.11.2015typedef struct { volatile signed char * const buffer; int head; int tail; const int Num_Samples; }buffer;
- person Dodz   schedule 27.11.2015a
. - person CL.   schedule 27.11.2015volatile signed char a,b,c;
как глобальная переменная - person Dodz   schedule 27.11.2015a
,b
иc
? (Загляните в файл карты.) - person CL.   schedule 27.11.2015char
s? - person CL.   schedule 02.12.2015