Hallo liebe Forummitglieder,
ich verwende aktuell ein STM32f407 und spiele mit Threads rum.
In meiner Threadroutine führe ich eine Funktion aus, in der wiederum
eine Variable des Typs double initialisiert wird.
Nur bleibt der Thread in diesem Fall einfach stehen oder so.
Sobald die Variable ein Integer ist, geht das.
1 | /*Beispiel:*/
|
2 |
|
3 | osThreadId t1;
|
4 | void unterfunktion(){
|
5 | double i = 9.0;
|
6 | }
|
7 |
|
8 | void threadroutine(void const *argument){
|
9 | while(1){
|
10 | unterfunktion();
|
11 | toggle_led();
|
12 | }
|
13 | }
|
14 | osThreadDef(threadroutine,osPriorityNormal,1,0);
|
15 | int main(void){
|
16 | t1 = osThreadCreate(osThread(threadroutine),NULL);
|
17 | osDelay(osWaitForever);
|
18 | }
|
Ich dachte es hat vielleicht mit der Stacksize zu tun, aber ich kann bei
dem Threaddef nur bis 2 Byte angeben, sonst wird der Thread nicht mal
erzeugt.
Direkt in der Threadroutine einen double erzeugen geht hingegen.
Hat jemand eine Idee was da los ist?
Wenn alle Stricke reisen lege ich die Variable direkt in der
Threadroutine an und übergebe an die Funktion nen Pointer.
Lg
EDIT: mit nen Pointer gehts auch nicht!