Как мне реализовать прерывание в микро фреймворке?
Я не могу скомпилировать код для stm32f4discovery
в.NET с VS2010.
С помощью NETMF 4.2
using System;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
namespace MFConsoleApplication1
{
public class Program
{
private static InterruptPort interruptPort;
public static void Main()
{
interruptPort = new InterruptPort(Cpu.Pin.GPIO_Pin2,
false,
Port.ResistorMode.PullUp,
rt.InterruptMode.InterruptEdgeLevelLow);
interruptPort.OnInterrupt += new NativeEventHandler(port_OnInterrupt);
Thread.Sleep(Timeout.Infinite);
}
private static void port_OnInterrupt(uint port, uint state, TimeSpan time)
{
Debug.Print("Pin=" + port + " State=" + state + " Time=" + time);
interruptPort.ClearInterrupt();
}
}
}
При компиляции я получаю следующую ошибку: No overload for 'port_OnInterrupt' matches delegate 'Microsoft.SPOT.Hardware.NativeEventHandler'
Как я могу скомпилировать код?
Я взял этот пример из книги "Эксперт.NET Micro Framework".
1 ответ
Хотя в документации говорится, что последний аргумент TimeSpan
Я думаю, что это действительно DateTime
в микрорамках.net я использую.
Так что вместо
private static void port_OnInterrupt(uint port, uint state, TimeSpan time)
пытаться
private static void port_OnInterrupt(uint port, uint state, DateTime time)
И еще один намек: вместо
interruptPort.OnInterrupt += new NativeEventHandler(port_OnInterrupt);
ты можешь написать
interruptPort.OnInterrupt += port_OnInterrupt;
что эквивалентно, но более читабельно.