Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of SimpleDMA by
Diff: SimpleDMA.h
- Revision:
- 2:fe2fcaa72434
- Parent:
- 1:0b73b00bcee8
- Child:
- 3:34f5bf8adfa0
diff -r 0b73b00bcee8 -r fe2fcaa72434 SimpleDMA.h
--- a/SimpleDMA.h Fri Dec 20 20:48:17 2013 +0000
+++ b/SimpleDMA.h Sun Dec 22 21:42:49 2013 +0000
@@ -1,8 +1,11 @@
#ifndef SIMPLEDMA_H
#define SIMPLEDMA_H
+#ifdef RTOS_H
+#include "rtos.h"
+#endif
+
#include "mbed.h"
-#include "rtos.h"
#include "SimpleDMA_KL25.h"
@@ -35,7 +38,7 @@
*/
template<typename Type>
int source(Type* pointer, bool autoinc, int size = sizeof(Type*)) {
- return setMemory((uint32_t)pointer, size, true, autoinc);
+ return setAddress((uint32_t)pointer, size, true, autoinc);
}
/**
@@ -56,7 +59,7 @@
*/
template<typename Type>
int destination(Type* pointer, bool autoinc, int size = sizeof(Type*)) {
- return setMemory((uint32_t)pointer, size, false, autoinc);
+ return setAddress((uint32_t)pointer, size, false, autoinc);
}
/**
@@ -102,13 +105,14 @@
_callback.attach(object, member);
}
-void wait(void) {
+#ifdef RTOS_H
+void wait(int length) {
id = Thread::gettid();
this->attach(this, &SimpleDMA::waitCallback);
- this->start(8);
+ this->start(length);
Thread::signal_wait(0x1);
}
-
+#endif
protected:
/**
@@ -117,15 +121,17 @@
* @param chan - DMA channel to use
*/
void channel(int chan);
+int setAddress(uint32_t address, int wordsize, bool source, bool autoinc);
-int setMemory(uint32_t address, int wordsize, bool source, bool autoinc);
int _channel;
+uint32_t SAR, DAR, DSR, DCR;
+uint8_t CHCFG;
+
+//IRQ handlers
FunctionPointer _callback;
bool irq_en;
void irq_handler(void);
-//IRQ handlers
-
static SimpleDMA *irq_owner[4];
static void irq_handler0( void ) {
@@ -144,14 +150,14 @@
if (irq_owner[3]!=NULL)
irq_owner[3]->irq_handler();
}
-public:
+
+
+#ifdef RTOS_H
osThreadId id;
void waitCallback(void) {
-
- //id = Thread::gettid();
- osSignalSet(id, 0x1);
-
+ osSignalSet(id, 0x1);
}
+#endif
};
#endif
\ No newline at end of file
