File tree 3 files changed +7
-1
lines changed
3 files changed +7
-1
lines changed Original file line number Diff line number Diff line change 10
10
#include "clock.h"
11
11
#include "core_callback.h"
12
12
#include "digital_io.h"
13
+ #include "dma.h"
13
14
#include "dwt.h"
14
15
#include "hw_config.h"
15
16
#include "low_power.h"
Original file line number Diff line number Diff line change 8
8
*/
9
9
void DMATransferClass::prepare (dmatransfer_t *settings) {
10
10
if (!_prepared) {
11
+ // TODO - figure out which DMA to enable the clock for.
11
12
__HAL_RCC_DMA1_CLK_ENABLE ();
13
+
14
+ memcpy (&_transfer_settings, settings, sizeof (dmatransfer_t ));
12
15
13
- _transfer_settings.dma_settings .Init .Direction = DMA_MEMORY_TO_PERIPH ;
16
+ _transfer_settings.dma_settings .Init .Direction = transfer_direction ;
14
17
_transfer_settings.dma_settings .Init .PeriphInc = DMA_PINC_DISABLE;
15
18
_transfer_settings.dma_settings .Init .MemInc = DMA_MINC_DISABLE;
16
19
_transfer_settings.dma_settings .Init .PeriphDataAlignment = DMA_PDATAALIGN_WORD;
17
20
_transfer_settings.dma_settings .Init .MemDataAlignment = DMA_MDATAALIGN_WORD;
18
21
_transfer_settings.dma_settings .Init .Mode = settings.circular ? DMA_CIRCULAR : DMA_NORMAL;
19
22
_transfer_settings.dma_settings .Init .Priority = DMA_PRIORITY_VERY_HIGH;
20
23
_transfer_settings.dma_settings .Instance = settings.channel_stream ;
24
+ // TODO - intialize the callbacks.
21
25
22
26
// Perform HAL Initialization first.
23
27
HAL_DMA_Init (&dmaUpdate);
Original file line number Diff line number Diff line change @@ -17,6 +17,7 @@ struct dmatransfer_s {
17
17
*/
18
18
DMA_HandleTypeDef *dma_settings;
19
19
DMA_CS_Selection channel_stream;
20
+ uint32_t transfer_direction;
20
21
boolean circular;
21
22
void (*transferComplete)(DMA_HandleTypeDef *);
22
23
void (*transferHalfComplete)(DMA_HandleTypeDef *);
You can’t perform that action at this time.
0 commit comments