.net micro framework的入门例程-点灯神话-6.使用定时器代替延时函数闪烁LED

本文介绍了一个使用.NET Micro Framework实现LED灯定时闪烁的例子。通过结合定时器与外部中断,程序能够在开关控制下自动调整LED状态。该示例展示了如何在嵌入式系统中配置定时器和中断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

可以学学怎么使用定时器


using System;

using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;


using GHIElectronics.Gadgeteer;
namespace my_LED
{
    public class my_led
    {
        static OutputPort lampOutport = new OutputPort((Cpu.Pin)GHI.Hardware.G120.Pin.P1_15,false);
        static InterruptPort switchInterrupt = new InterruptPort(
                                    (Cpu.Pin)GHI.Hardware.G120.Pin.P2_10,
                                    false,
                                    Port.ResistorMode.PullUp,
                                    Port.InterruptMode.InterruptEdgeBoth);
       
        public static void Main()
        {
            
            switchInterrupt.OnInterrupt += new NativeEventHandler(switchInterrupt_OnInterrupt);

            System.Threading.Timer timer = new System.Threading.Timer(
                                            new TimerCallback(flashTick),
                                            null,
                                            5000,
                                            5000);
            System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);
        }

        static void switchInterrupt_OnInterrupt(uint data1, uint data2, DateTime time)
        {
            Monitor.Enter(switchInterrupt);
            switch (data2)
            {
                case 0: lampOutport.Write(true); break;
                case 1: lampOutport.Write(false); break;
                default: break;
            }
            Monitor.Exit(switchInterrupt);
            //throw new NotImplementedException();
        }

        private static void flashTick(object o)
        {
            if (!switchInterrupt.Read())
            {
                return;
            }
            lampOutport.Write(true);
            System.Threading.Thread.Sleep(100);
                
            System.Threading.Monitor.Enter(switchInterrupt);
            if (switchInterrupt.Read())
            {
                lampOutport.Write(false);
            }
            System.Threading.Monitor.Exit(switchInterrupt);               
        }

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值