Hallo zusammen, Ich versuch mit CooCox und dem STM32F3Discovery einige kleine Programme für den Start zu ralisieren. Muss dazu sagen, ich stehe ganz am Anfang mit dem STM32F4 und CooCox. Nun klappt einiges schon ganz gut. Es leuchten die LEDs abwechselnd, auf die Userbuttons reagiert mein Programm auch wie gewollt. NUR: Alles in diesem "Debug Modus (Ctrl+F5)" von CooCox. Ich gehe davon aus, dass der ARM auch blinken sollte nachdem ich den Debug Stopp Knopf in CooCox gedrückt und anschließend den Reset-Taster auf dem Disco Board betätigt habe. Aber nichts. Dann gibts da noch den Knopf in CooCox "Download Code to Flash". Aber der zeigt in der Console brav alles an "Erase..., Programm..., Verify..." aber mein Controller startet das Programm nicht. Nicht mal nach dem HardwareReset. Kurz gesagt: im Debug Mode funktioniert alles wie gewollt, aber wie bekomme ich das Ding in normalen Betriebszustand zum laufen? Muss ich da was einstellen?
Hallo Bernd! EDIT: Sorry, habe ein F0 Discovery kein F4! Habe gestern Abend auch damit angefangen, scheint ein guter Tag gewesen zu sein ;-) Habe auch CooCox genommen. Bei mir funktioniert es auch ohne debug. Hast du bei der Projekterstellung in Repository auch CMSIS BOOT angewählt? Ich will nur ganz einfach einige LEDs über Transistoren schalten bzw. blinken lassen und habe dafür folgendes gewählt: M0 Cmsis Core CMSIS BOOT RCC GPIO Ich drücke einfach F7 zum compilieren und dann download code to flash und es beginnt sofort zu blinken so wie ich es geändert habe. Mein Testfile (main.c) sieht momentan so aus:
1 | #include <stdint.h> |
2 | #include <system_stm32f0xx.h> |
3 | #include <stm32f0xx_gpio.h> |
4 | #include <stm32f0xx_rcc.h> |
5 | |
6 | |
7 | int main(void) |
8 | {
|
9 | GPIO_InitTypeDef InitGpio; |
10 | unsigned int i = 0; |
11 | |
12 | // Initialises the system clock
|
13 | SystemInit(); |
14 | |
15 | // Enables the clock for GPIOC + A
|
16 | RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE); |
17 | RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); |
18 | |
19 | // Configures the GPIOC pin8 and pin9, since leds are connected
|
20 | // to PC8 and PC9 of GPIOC + A
|
21 | InitGpio.GPIO_Pin = (GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9); |
22 | InitGpio.GPIO_Mode = GPIO_Mode_OUT; |
23 | InitGpio.GPIO_Speed = GPIO_Speed_Level_1; |
24 | InitGpio.GPIO_OType = GPIO_OType_PP; |
25 | InitGpio.GPIO_PuPd = GPIO_PuPd_NOPULL; |
26 | |
27 | // Initialises the GPIOC + A
|
28 | GPIO_Init(GPIOC, &InitGpio); |
29 | GPIO_Init(GPIOA, &InitGpio); |
30 | |
31 | |
32 | while(1) |
33 | {
|
34 | // Turn ON the Leds on C and OFF at A
|
35 | GPIO_ResetBits(GPIOA, (GPIO_Pin_8 | GPIO_Pin_9)); |
36 | GPIO_SetBits(GPIOC, (GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9)); |
37 | |
38 | // Delay
|
39 | for (i = 0; i < 10000000; i++); |
40 | |
41 | // Turn OFF the Leds on C and ON at A
|
42 | GPIO_SetBits(GPIOA, (GPIO_Pin_8 | GPIO_Pin_9)); |
43 | GPIO_ResetBits(GPIOC, (GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9)); |
44 | |
45 | // Delay
|
46 | for (i = 0; i < 10000000; i++); |
47 | }
|
48 | }
|
LG Gerald
Hallo Gerald, vielen Dank für deine Hilfe, Dein Hinweis dass es über "download to flash" gehen sollte haben mich dazu gebracht unsere beiden Codes nochmals zu vergleichen. Grundsätzlich war soweit alles vergleichbar. Nur habe ich mir einem Beispiel gestartet in dem "Semihosting" gebraucht wurde, um in der IDE Daten empfangen zu können. Das verhindert wohl auch, dass der Controller alleine ins laufen kommt. Nachdem ich das entfernt habe ist alles wie gewünscht. Weiß jemand warum Semihosting den Controllerstart verhindert?
Hallo Bernd! Das liegt an der Art und weise wie die Semihosting Ausgabe an deine IDE realisiert ist. Das zu sendende Zeichen wird in ein spezielles Register geschrieben und ein Breakpoint wird gesetzt. Anschließend muss der Debugger (dein PC) die Daten abholen und den Breakpint clearen. Dann laueft die CPU weiter. Ist der Debugger nicht aktiv haengt das Programm an der ersten Stelle an der Semihosting verwendet wird. Siehe http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0471c/Bgbjjgij.html LG Stefan
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.