Hallo, ich habe einen STM32F407 und versuche gerade FreeRTOS ans laufen zu bringen. Gestern habe ich das mit einem STM32F051 bereits hinbekommen. Dasselbe Programm wie gestern, die Pins umkonfiguriert und es läuft nicht. Der Debugger bleibt wie gewohnt bei vTaskStartScheduler() stehen. Allerdings habe ich in meinem Task einen Breakpoint, wo eigentlich Leuchtdioden Ein und Ausgeschaltet werden sollten. Dort kommt der Debugger aber niemals rein. Schalte ich die LEDs in Main ein, so geht es. Also die Portdefinitionen sind schonmal richtig. So sieht der Code aus: #include "stm32f4xx.h" #include "stm32f4xx_rcc.h" #include "stm32f4xx_gpio.h" /* FreeRTOS includes. */ #include "FreeRTOS.h" #include "task.h" #define orange_off GPIO_ResetBits(GPIOD, GPIO_Pin_13); #define green_off GPIO_ResetBits(GPIOD, GPIO_Pin_12); #define red_off GPIO_ResetBits(GPIOD, GPIO_Pin_14); #define blue_off GPIO_ResetBits(GPIOD, GPIO_Pin_15); #define orange_on GPIO_SetBits(GPIOD, GPIO_Pin_13); #define green_on GPIO_SetBits(GPIOD, GPIO_Pin_12); #define red_on GPIO_SetBits(GPIOD, GPIO_Pin_14); #define blue_on GPIO_SetBits(GPIOD, GPIO_Pin_15); unsigned char toggle = 0; void BlinkyTask( void *pvParameters ) { while(1) { toggle++; toggle%=2; if (toggle) { red_on; blue_on; green_on; orange_on; } else { red_off; blue_off; green_off; orange_off; } // Task für 500ms auf "Blocked" vTaskDelay(500/portTICK_RATE_MS); } vTaskDelete( NULL ); // clean exit } int main(void) { RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); //Initialize struct GPIO_InitTypeDef GPIO_InitDef; //Pins 3, 4, 5 and 6 GPIO_InitDef.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15; //Mode output GPIO_InitDef.GPIO_Mode = GPIO_Mode_OUT; //Output type push-pull GPIO_InitDef.GPIO_OType = GPIO_OType_PP; //Without pull resistors GPIO_InitDef.GPIO_PuPd = GPIO_PuPd_NOPULL; //50MHz pin speed GPIO_InitDef.GPIO_Speed = GPIO_Speed_50MHz; //Initialize pins on GPIOD port GPIO_Init(GPIOD, &GPIO_InitDef); xTaskCreate(BlinkyTask, "Blinky", configMINIMAL_STACK_SIZE, NULL, 1, NULL); vTaskStartScheduler(); while(1) { } }
Gast
#3879053
Sind die RTOS Handler in der MAP Datei zu sehen? Stack zu klein? FPU beachtet?
Läuft das Programm denn noch, oder hängt er in irgendeinem Error handler fest?
Das Programm läuft jetzt seit geraumer Zeit. Habe irgendwie vergessen das hier rein zu schreiben. Ich weiß leider nicht mehr woran es lag. Ich meine ich habe da was in der FreeRTOSConfig.h eingestellt. Leider bin ich mir da aber nicht sicher. Entweder das oder ein ganz dummer Fehler. Folgender Code funktioniert jetzt auf jeden Fall:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | |
66 | |
67 | |
68 | |
69 | |
70 | |
71 | |
72 | |
73 | |
74 | |
75 | |
76 | |
77 | |
78 | |
79 | |
80 | |
81 | |
82 | |
83 | |
84 | |
85 | |
86 | |
87 | |
88 | |
89 | |
90 | |
91 | |
92 | |
93 | |
94 | |
95 | |
96 | |
97 | |
98 | |
99 | |
100 | |
101 | |
102 | |
103 | |
104 | |
105 | |
106 | |
107 | |
108 | |
109 | |
110 | |
111 | |
112 | |
113 | |
114 | |
115 | |
116 | |
117 | |
118 | |
119 | |
120 | |
121 | |
122 | |
123 | |
124 | |
125 | |
126 | |
127 | |
128 | |
129 | |
130 | |
131 | |
132 | |
133 | |
134 | |
135 | |
136 | |
137 | |
138 | |
139 | |
140 | |
141 | |
142 | |
143 | |
144 | |
145 | |
146 | |
147 | |
148 | |
149 | |
150 | |
151 | |
152 | |
153 | |
154 | |
155 | |
156 | |
157 | |
158 | |
159 | |
160 | |
161 | |
162 | |
163 | |
164 | |
165 | |
166 | |
167 | |
168 | |
169 | |
170 | |
171 | |
172 | |
173 | |
174 | |
175 | |
176 | |
177 | |
178 | |
179 | |
180 | |
181 | |
182 | |
183 | |
184 | |
185 | |
186 | |
187 | |
188 | |
189 | |
190 | |
191 | |
192 | |
193 | |
194 | |
195 | |
196 | |
197 | |
198 | |
199 | |
200 | |
Gast
#3974826
Hallo, versuche ebenfalls das FreeRTOS auf dem STM32F407 zum laufen zu bringen, bis jetzt allerdings ohne Erfolg. Hat hier jemand ein einfaches Beispielprojekt welches man zum start verwenden kann ? Wäre sehr hilfreich. Danke schon mal.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.