码迷,mamicode.com
首页 > 其他好文 > 详细

[PCS] Hw.2 led & Stack

时间:2017-04-10 12:45:16      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:level   content   系统   mac   run   bsp   power   com   was   

一、状态机代码:

#define ledR (12)
#define ledG (11)
#define ledBrd (13)
#define sw1 (2)
#define SW_ON  (0)
#define SW_OFF  (1)

#define LED_ON  (1)
#define LED_OFF  (0)
#define interval  (500)
// Generally, you should use "unsigned long" for variables that hold time
// The value will quickly become too large for an int to store
unsigned long previousMillis = 0;        
// will store last time LED was updated

//现在状态
unsigned char swState;
//过去状态
unsigned char swPrevState;
unsigned char ledState;
unsigned char ledBlinkState;
// the setup function runs once when you press reset or power the board
void 
setup() {
  
// initialize digital pin 13 as an output.
  
pinMode(ledBrd, OUTPUT);
  
pinMode(ledR, OUTPUT);
  
pinMode(ledG, OUTPUT);
  
pinMode(ledB, OUTPUT);
  
pinMode(sw1, INPUT);
  
ledAllOff();
  
digitalWrite(ledBrd,LOW);
  
delay(100);
  
swState=swPrevState=digitalRead(sw1);
  
ledState=LED_OFF;
  
ledBlinkState=LOW;
}

void ledAllOff()
{
  
digitalWrite(ledR,HIGH);
  
digitalWrite(ledG,HIGH);
  
digitalWrite(ledB,HIGH);
}

// the loop function runs over and over again forever
void loop() {
  
swState=digitalRead(sw1);
  
if(swState ==SW_ON && swPrevState==SW_OFF)
  
{
    
if(ledState == LED_ON)
    
{
      
ledState = LED_OFF;     
    
}
else
{
      
ledState = LED_ON;
    
}
  
}
  
swPrevState = swState;
  
  
if(ledState == LED_ON)
  
{
    
//blink();
    
blinkWithoutDelay();
  
}
else
{
    
ledAllOff();
  
}
}

void blink()
{
  
digitalWrite(ledBrd, HIGH);   
// turn the LED on (HIGH is the voltage level)
  
digitalWrite(ledB,LOW);
  
delay(500);              
// wait for a second
  digitalWrite(ledBrd, LOW);    
// turn the LED off by making the voltage LOW
  digitalWrite(ledB,HIGH);
  
delay(500);              
// wait for a second
 
}

void blinkWithoutDelay()
{
    
unsigned long currentMillis = millis();
 
  
if(currentMillis - previousMillis >= interval) 
{
    
// save the last time you blinked the LED 
    
previousMillis = currentMillis;  
    
// if the LED is off turn it on and vice-versa:
    
if (ledBlinkState == LOW)
    
{
      ledBlinkState = HIGH;
    }
else
{
      ledBlinkState = LOW;
    }
    // set the LED with the ledState of the variable:
    
digitalWrite(ledBrd, ledBlinkState);   // turn the LED on (HIGH is the voltage level)
    
digitalWrite(ledB,ledBlinkState);
  
}

}

二、调查和比较 Linux\ Windows\ Mac 系统间堆栈的不同:

 

 

[PCS] Hw.2 led & Stack

标签:level   content   系统   mac   run   bsp   power   com   was   

原文地址:http://www.cnblogs.com/cragoncanth/p/6688307.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!