Hallo, ich benutze ein eigenes Eval Board und hab versucht mit ein paar Zeilen Code aus dem Blinky Beispiel ein Programm zu schreiben das LED's mittels der GPIO's PE4 und PE5 ansteuert bzw. ein und ausschaltet. Ich benutze keil und wenn ich das Prog auf die Hardware (STM32F103ZE 512k) flashe dann gehen zwar die LED's an weil ich sie initialisiere aber das Programm läuft nicht an. Ich hab hierzu mal den Fault Reports Dialog angehängt. Das Programm läuft irgendwie nicht an , ich hatte auch mal einen Hard fault bei R15 (PC) = Programm Counter... screenshot: http://s7.directupload.net/file/d/2635/zwqcc6kv_png.htm Ich bin wirklich relativ neu in der Materie. Kann es sein das ich mein Projekt falsch aufgebaut habe ? bzw. die ST Std Periph Lib falsch eingebunden habe oder irgendwas beachten muss ? ich füge hier mal auch das Projekt aus Keil an, ich benutz die Version 4.21: http://www.mediafire.com/?fmxdytnhibvvqh4 (Zip File, 600Kb) Vielleicht könnte mir jemand helfen. LG Alex PS. gibts vielleicht irgendwo eine anleitung wie ich ein STM32 Projekt mit der ST Std. lib erstelle in Keil also praktisch die Grundlage richtig schaffe damit ich richtig loslegen kann? Ich will erstmal nur GPIO's für LED's benutzen und via SPI, I2C paar Sensoren auslesen.
Moin, In der ST Lib im Ordner Projekts/Template ist ein Beispiel Keil Projekt -> Ordner kopieren/umbenennen und code in der Main ändern. Grund sätzlich ist es aber nicht schwer so ein Projekt selber einzurichten. 1. Projekt erstellen. Aus dem Template Ordner die Main usw c und h Dateien in den Projekt ordner kopieren. Die c Dateien aus dem ST Lib ins Projekt ein binden, und den Startup code von ST verwenden nicht den Von Keil. Dann noch die include verzeichnisse setzen und die Defines "USE_STDPERPHLIB_DRIVER" und "STM32....MD" oder so definieren. das wars schon. Versuchs erst mal so MfG Tec
ja das hab ich jetzt auch herausgefunden! danke trotzdem ;) dennoch hab ich das problem mit dem fehler ... ich glaub irgendwas stimmt mit meinem code nicht.
Dein Projekt baut mein Keil garnicht erst. Die STLib.lib ist das die von Keil? denn istes lediglich V2.01 oder hast du die selber gebaut. öffne mal dieses Projekt, lösche den Code in der Main und Kopier deinen darein. in deinem anderen Projekt war nicht mal Startup Code drin. STM32\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Templat e\MDK-ARM So ist der Ordner bei mir. MfG Tec
die ist selbst gebaut aber nicht von mir, ich hab die stlib mal hochegaleden falls es dich interessiert. http://www.mediafire.com/?5f9pghmwsf71ij7 ca. 4MB
Tec Nologic schrieb: > öffne mal dieses Projekt, lösche den Code in der Main und Kopier deinen > darein. in deinem anderen Projekt war nicht mal Startup Code drin. > > STM32\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Templat e\MDK-ARM > hab alles aus der main gelöscht , auch das inclode von dem ST Eval ... mein code:
1 | #include "stm32f10x.h" |
2 | #include <stdio.h> |
3 | |
4 | GPIO_InitTypeDef GPIO_InitStructure; |
5 | |
6 | int main (void) |
7 | {
|
8 | /* GPIOE Periph clock enable */
|
9 | RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE); |
10 | |
11 | /*LED blinken lassen an PE4 und PE5*/
|
12 | GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_4; |
13 | GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; |
14 | GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; |
15 | GPIO_Init(GPIOE, &GPIO_InitStructure); |
16 | |
17 | while(1){ |
18 | |
19 | /* Set PE4 5 */
|
20 | GPIOE->BSRR = GPIO_Pin_4; |
21 | GPIOE->BSRR = GPIO_Pin_5; |
22 | |
23 | /* Reset PE4 5 */
|
24 | GPIOE->BRR = GPIO_Pin_4; |
25 | GPIOE->BRR = GPIO_Pin_5; |
26 | }
|
27 | |
28 | }
|
Frage: muss ich noch timer, pll oder irgendwelche clocks einstellen oder wird das mit der vorlage bereits erledigt? in den preprocessor symbol steht: USE_STDPERIPH_DRIVER, STM32F10X_HD, USE_STM32100E_EVAL STM32F10X_HD , da ich einen STM32F103ZE mit 512k benutze. kann ich das USE_STM32100E EVAL rauslöschen? weil ich ja ein eigenes board hab? ... jedenfalls hab ich den code mal ausgeführt, schön ist das dort die hardfault handler schleifen existieren. hab allerdings immer noch die probleme (siehe bild). Kanns ein hardwaredesign fehler sein?
hab wenn ich ST-Link benutze und die MCU Register auslese die im bild zu sehenden werte. ich hab die mcu erased und auf RUN->HALT geklickt. dabei entstanden die im bild zu sehenden werte. jemand eine idee? soll ich mal das schematic hochladen ?
UPDATE: wenn ich das board resete dann springt er in den code und ich kann die schleife ausführen, die LED's blinken. Aber was ist das problem dafür das er am anfang die fehler anzeigt und die kangsten Core Registerwerte?
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.


