передача и прием одного и того же буфера, логично что он не будет изменяться.
смотрим заголовочный файл stm32f4x_hal_gpio.h, функция записи пина выглядит несколько иначе:
void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);
HAL_SPI_MspInit имеет множественное определение... а именно в файлах stm32f4xx_hal_msp и main. что то нужно удалить)
В каком режиме работает ДМА? нормальный или циркулярный?
ну не знаю... по моему мазохизм это настраивать всю периферию через регистры