Hallo Freunde ! Bestimmt werden die Experten lachen, aber ich quäle mich seit Tagen damit ab, die Led(PC13) auf dem BluePill Board zum leuchten oder gar zum Blinken zu bekommen. Mit viel Mühe habe ich das "System Workbench für STM32" eingerichtet, weil immer was mit meiner Linux-Version war, um ST-flash/ST-link usw. zu installieren. (Linux Mint-18.3 64-Bit) Nun kann ich erst mal flashen per ST-Link.v.2 und auch den einfachen Code compilieren/linken usw. Aber bestimmt sind meine Gedankengänge, um ein lauffähiges Programm zu erstellen, compiliere....flashen noch falsch. Ich habe mal den kompletten Projektordner gezipt und als Anhang gemacht. Vielleicht ist ja wer so gütig sich das mal anzusehen, um mich auf meine noch bestimmt grundlegenden Fehler hinzuweisen. Die Befehle für Initialisierung/Setzen/Reset der GPIO's usw. habe ich mir hier im dem Forum aus der STM32 Anleitung genommen. Bestimmt verkenne ich da noch die Zusammenhänge. Es ist ja mein Erstlingswerk auf dieser Ebene. Gruss und Dank Gerhard
Versuchs mal so:
1 | void initPort (void) |
2 | {
|
3 | GPIO_InitTypeDef GPIO_InitStructure; |
4 | |
5 | RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOC, ENABLE); // Clock des Ports einschalten |
6 | GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; |
7 | GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; |
8 | GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; |
9 | |
10 | GPIO_Init(GPIOC, &GPIO_InitStructure); |
11 | }
|
Also erst Peripherie-Clock einschalten, dann GPIO Init. Dann dürfte dein Delay noch zu schnell sein.
1 | void _delay (int a) |
2 | {
|
3 | volatile uint32_t i,j; |
4 | for (i=0; i<a; i++) |
5 | {
|
6 | j = 100; |
7 | while (j--); |
8 | }
|
9 | return; |
10 | }
|
Vielen Dank !!!! Werde ich probieren, wie gesagt ist mein erstes Wagnis. Bücher/Anleitung für Code habe ich nur in englisch(Amazon Kindle) und englisch ist noch fast ein Buch mit 7+1 Siegeln, ausser dem Code vielleicht. Gruss und Freu :) Gerhard
Es gibt sehr gute deutschsprachige Tutorials: Der Klassiker: http://www.diller-technologies.de/stm32.html Und das m.M sehr gute Videotutorial von Ultr@fx: https://www.youtube.com/playlist?list=PLd79x-uW4uyZUTnuAxnIBFj56JhK5io3g Gruß Daniel
@Daniel Danke Daniel ich werde schauen...nur mit Videoanleitungen, da habe ich es nicht so.... @Mitlesa: Es hat geklappt, ich habe diese Zeile an den Anfang der "initPort" gelegt :)
1 | void initPort( void ) { |
2 | RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); // Clock des Ports einschalten(!!) |
3 | GPIO_InitTypeDef GPIO_InitStructure; |
4 | GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; |
5 | GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //org _PP |
6 | GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; |
7 | GPIO_Init(GPIOC, &GPIO_InitStructure); |
8 | // RCC_HSEConfig(RCC_HSE_ON); //Aktiviert den Externen Highspeed Oszillator (Quarz). |
9 | RCC_HSICmd(ENABLE); //Aktiviert den internen Highspeed Oszillator. |
10 | } |
Vielen Dank Euch beiden Gerhard
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.