Lamer to lamer. Pierwsza skucha. Chciałem wypróbować na szybko STM32F4Discovery, więc napisałem najprostszy program: mruganie zielonej led. Popatrzyłem do dokumentacji płytki: zielony led na porcie PD12 - nóżka 59 i wyszedł taki kot:
using System.Threading; using Microsoft.SPOT.Hardware; namespace Led1 { public class Program { public static void Main() { const Cpu.Pin ledPin = (Cpu.Pin) 59; const int delay = 1000; using (var ledPort = new OutputPort(ledPin, false)) { while (true) { ledPort.Write(true); Thread.Sleep(delay); ledPort.Write(false); Thread.Sleep(delay); } } } } }
Kompiluję, we właściwościach projektu ustawiam odpowiednią konfigurację.
Uruchamiam przez F5, w oknie wynikowym poleciały informacje o wysłaniu kodu do płytki, przeleciały informacje od debuggera, czekam, czekam, czekam i nic. Nie mruga! Nie działa! Dlaczego?
CPU.Pin to nie nóżka procesora. Pisząc programy na mikro-kontrolery trzeba operować na pinach GPIO. Piny GPIO są zgrupowane w porty. Akurat STM32F4 ma 5 portów (od 0 do 5) oznaczonych: A, B, C, D i E. Każdy port ma 16 pinów (od 0 do 15): PA0..PA15, PB0..PB15, PC0...PC15 itd. (dlatego tak oznaczone są szpilki złączy goldpin na płytce). Na tej podstawie możemy określić numery pinów:
- PA0 = 0*16 + 0 = 0
- PA1 = 0*16 + 1 = 1
- PA2 = 0*16 + 2 = 2
- ...
- PA15 = 0*16 + 15 = 15
- PB0 = 1*16 + 0 = 16
- ...
- PB15 = 1*16 + 15 = 31
- PC0 = 2*16 + 0 = 32
- ...
- PC15 = 2*16 + 15 = 47
- ...
- ...
- i ostatni
- PE15 = 4*16 + 15 = 79
Dla zielonej diody (PD12) CPU.Pin będzie równy: 3*16 + 12 = 60. Po podstawieniu do kodu wszystko działa tak jak należy.
const Cpu.Pin ledPin = (Cpu.Pin) 60;
Kot dostępny na: https://kodfilemon.googlecode.com/svn/trunk/STM32F4Discovery_Demo/DemoLed1/ ( Checkout )
Great post. I was checking constantly this blog and I
OdpowiedzUsuńam impressed! Very helpful info specially the
last part :) I care for such info a lot. I was looking for this particular information for a very long time.
Thank you and best of luck.
Magnificent web site. Lots of useful info here. I'm sending it
OdpowiedzUsuńto a few pals ans additionally sharing in delicious.
And obviously, thank you on your effort!