亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? main_canall.c

?? winarm for lpc2129 CanA
?? C
字號:
/**************************************************************************
MODULE:    Main for LPC_CANAll
CONTAINS:  CAN Example using the LPC_CANAll Driver
           Tested with MCB2100 board from Keil Software
DOES:      
COPYRIGHT: Embedded Systems Academy, Inc. 2004.
LICENSE:   THIS VERSION CREATED FOR FREE DISTRIBUTION
		       FOR PHILIPS SEMICONDUCTORS www.philipsmcu.com
           FOR KEIL SOFTWARE www.keil.com
VERSION:   1.10, Pf 05-JAN-05, Updates in accordance with errata sheets
---------------------------------------------------------------------------
HISTORY:   1.00, Pf 14-JUL-04, First published release

14. May. 2005:
Modified for WinARM (arm-elf-gcc 4.0.0) 
by Martin Thomas, Kaiserslautern, Germany
<eversmith@heizung-thomas.de>
- LED handling
- Interrupt-enable helper-functions (thanks to R O Software)
- WinARM Makefile and linker-scripts
Tested with LPC-P2129 board from Olimex
***************************************************************************/ 
                  
#include <LPC21xx.H> // LPC21xx definitions
#include "LPC_CANAll.h"

#include "VIClowlevel.h"
// olimex LPC-P2129: buttons on P0.10/P0.11 (active low)
#define BUT1PIN 	10
#define BUT2PIN 	11
// olimex LPC-P2129: LEDs on P0.12/P0.13 (active low)
#define LED1PIN  	12
#define LED1BIT (1L<<LED1PIN)
#define LED2PIN  	13
#define LED2BIT (1L<<LED2PIN)


// This value defines the number of timer ticks (of 100 microcseconds)
// that the program waits before sending the next CAN message. Here: 100ms
//#define SLOWDOWN 1000
#define SLOWDOWN 200


// Interrupt Service Routines
void DefaultISR (void) __attribute__ ((interrupt)); 
void Timer0ISR (void) __attribute__ ((interrupt)); 
// void Timer0ISR (void) __attribute__ ((interrupt("IRQ")));


// Global Timer Tick
unsigned int volatile gTimerTick;


/**************************************************************************
DOES:    Default Service Routine for interrupts
GLOBALS: none
RETURNS: never
***************************************************************************/ 
void DefaultISR (
  void
  ) 
{
  while (1)
  { // We should never get here, if we do it is an error
  }
}


/**************************************************************************
DOES:    Timer 0 Interrupt Service Routine
GLOBALS: Increment timer tick
RETURNS: never
***************************************************************************/ 
void Timer0ISR (
  void
  ) 
{
  gTimerTick++;
  T0IR = 1; // Clear interrupt flag
  VICVectAddr = 0xFFFFFFFF; // Acknowledge Interrupt
}


/**************************************************************************
DOES:    Checks if a timestamp expired
GLOBALS: none
RETURNS: one if it expired, else zero
***************************************************************************/ 
static short IsTimeExpired (
  unsigned int timestamp
  )
{
unsigned int time_now;

  time_now = gTimerTick;
  if (time_now > timestamp)
  {
    if ((time_now - timestamp) < 0x80000000L)
      return 1;
    else
      return 0;
  }
  else
  {
    if ((timestamp - time_now) > 0x80000000L)
      return 1;
    else
      return 0;
  }
}


/**************************************************************************
DOES:    Waits until a timeout expires. Actual time waited is in the range
         from [0 to 100us*(delay-1)] to [0 to 100us*delay]
GLOBALS: none
RETURNS: nothing
***************************************************************************/ 
static void SlowDown (
  unsigned int delay // Number of 100us timeouts used for waiting
  )
{
  delay += gTimerTick;
  while (!IsTimeExpired(delay))
  {
  }
}


/**************************************************************************
DOES:    Main routine of demo program:
         1.) Initialization
         2.) Send a single CAN message
         3.) Wait for CAN message,
             send response to received messages
GLOBALS: none
RETURNS: never
***************************************************************************/ 
int main 
  (
  void
  ) 
{
  CANALL_MSG MsgBuf; // Buffers one CAN message
  // unsigned int LEDvalue = 0x10000000L; // Used for LED output

  // No divider: peripheral clock = processor clock
  VPBDIV = 1; 
    
  // Init LED ports
  // IODIR1 = 0x00FF0000; // P1.16..23 defined as Outputs
  IODIR0 |= ( LED1BIT | LED2BIT ); // define LED-Pins as outputs
  IOCLR0  = ( LED1BIT | LED2BIT ); // clear Bits = LEDs on (active low)

  // Init Vector Interrupt Controller
  VICIntEnClr = 0xFFFFFFFFL; // Disable all Ints
  VICIntSelect = 0x00000000L;

  // Install Default IRQVec
  VICDefVectAddr = (unsigned long) DefaultISR; // set interrupt vector

  // Initialisation of CAN interfaces
  // CAN interface 1, use IRQVec0, at 125kbit
  CANAll_Init(1,0,CANBitrate125k_12MHz); 
  
  // CAN interface 2, use IRQVec1, at 125kbit
  CANAll_Init(2,1,CANBitrate125k_12MHz); 

  // Set CAN Err ISR to IRQVec2
  CANAll_SetErrIRQ(2);
  
  // Initialize Timer Interrupt
  T0MR0 = 5999; // 100 microseconds = 6.000-1 counts
  T0MCR = 3; // Interrupt and Reset on MR0
  T0TCR = 1;  // Timer0 Enable

  // Set Timer0 ISR to IRQVec3
  VICVectAddr3 = (unsigned long) Timer0ISR; // set interrupt vector
  VICVectCntl3 = 0x20 | 4;  // use it for Timer 0 Interrupt
  VICIntEnable = 0x00000010;  // enable Timer0 Interrupt

  enableIRQ();

  // DEBUG HELP:
  // Wait for 10 milliseconds, to allow debug hardware to catch up
  SlowDown(100);

  // Initialize MsgBuf
  MsgBuf.Frame = 0x80080000L; // 29-bit, no RTR, DLC is 8 bytes
  MsgBuf.MsgID = 0x00012345L; // CAN ID
  MsgBuf.DatA = 0x00000000L; // all zeros
  MsgBuf.DatB = 0x00000000L; // all zeros
  // Transmit initial message on CAN 2
  CANAll_PushMessage(2,&MsgBuf);

  while (1)  
  {// Loop forever 

    // Handle LEDs
    /*LEDvalue <<= 1;
    if (LEDvalue > 0x00800000L)
    {
      LEDvalue = 0x00010000L;
    }
    IOSET1 = LEDvalue;
	*/

    // Check if message received on CAN 1
    if (CANAll_PullMessage(1,&MsgBuf))
    { // Message was received
      if (MsgBuf.MsgID == 0x00012345L)
      { // 12345h received, transmit 54321h
        MsgBuf.MsgID = 0x00054321L; 
        MsgBuf.DatA++;;
        CANAll_PushMessage(1,&MsgBuf);
		/* toogle LED1 */
		if (IOPIN0 & LED1BIT) {
			IOCLR0 = LED1BIT;
		}
		else {
			IOSET0 = LED1BIT;  
		}
      }
    } // Message on CAN 1 received

    // Check if message received on CAN 2
    if (CANAll_PullMessage(2,&MsgBuf))
    { // Message was received
      if (MsgBuf.MsgID == 0x00054321L)
      { // 54321h received, transmit 102h
        MsgBuf.MsgID = 0x00012345L;
        MsgBuf.DatB++;
        CANAll_PushMessage(2,&MsgBuf);
		/* toogle LED2 */
		if (IOPIN0 & LED2BIT) {
			IOCLR0 = LED2BIT;
		}
		else {
			IOSET0 = LED2BIT;  
		}
      }
    } // Message on CAN 2 received

#if (SLOWDOWN > 0)
    SlowDown(SLOWDOWN);
#endif
    // LEDs off    
    /* IOCLR1 = LEDvalue; */

  } // while(1)
}

/*----------------------- END OF FILE ----------------------------------*/

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品欧美精品| 在线精品视频小说1| 日韩电影在线一区| 一区二区三区在线播| 亚洲卡通动漫在线| 亚洲男人的天堂网| 一区二区三区视频在线看| 亚洲免费高清视频在线| 一区2区3区在线看| 一区二区三国产精华液| 亚洲精品一卡二卡| 亚洲成人自拍网| 五月激情综合色| 美日韩一区二区| 国产在线一区观看| 床上的激情91.| 91美女视频网站| 欧洲生活片亚洲生活在线观看| 在线免费观看日本欧美| 欧美男女性生活在线直播观看| 欧美一区二区三区成人| 欧美不卡123| 国产欧美精品日韩区二区麻豆天美| 国产欧美日韩另类视频免费观看| 中文字幕一区二区三区四区| 亚洲精品日韩一| 日韩影院精彩在线| 国产精品一区二区久久不卡| 99国产欧美另类久久久精品 | 7777精品伊人久久久大香线蕉超级流畅 | 国产精品久久久久久久浪潮网站 | 韩国av一区二区三区在线观看 | 国产亚洲综合色| 日韩一区欧美一区| 天堂av在线一区| 国产成人精品1024| 欧美性极品少妇| 欧美va在线播放| 国产精品久久久久久久蜜臀| 亚洲成a人v欧美综合天堂| 精品一区二区三区欧美| 99视频超级精品| 欧美福利视频一区| 久久久久久亚洲综合| 一个色在线综合| 国产中文字幕一区| 色爱区综合激月婷婷| 日韩精品中文字幕在线一区| 亚洲日本在线天堂| 免费成人性网站| 91视频com| 26uuu色噜噜精品一区| 亚洲美腿欧美偷拍| 韩国v欧美v亚洲v日本v| 欧美午夜精品久久久久久超碰| 久久久久久97三级| 亚洲成在人线免费| 成人精品视频.| 337p亚洲精品色噜噜| 综合网在线视频| 激情深爱一区二区| 欧美视频一二三区| 亚洲欧洲日韩一区二区三区| 美女网站在线免费欧美精品| 91黄色在线观看| 国产日韩欧美亚洲| 麻豆精品一二三| 在线一区二区三区四区五区| 欧美高清在线视频| 精品在线免费视频| 欧美剧在线免费观看网站| 精品第一国产综合精品aⅴ| 亚洲图片自拍偷拍| 91免费看`日韩一区二区| 国产网红主播福利一区二区| 人妖欧美一区二区| 欧美亚洲动漫精品| 国产精品入口麻豆原神| 狠狠色狠狠色综合系列| 337p亚洲精品色噜噜| 亚洲国产裸拍裸体视频在线观看乱了| 成人一区二区三区中文字幕| 精品sm捆绑视频| 美女脱光内衣内裤视频久久网站 | 欧美日韩精品欧美日韩精品一 | 婷婷中文字幕综合| 色诱视频网站一区| 国产精品久久久久久久久图文区 | 国产精品性做久久久久久| 欧美群妇大交群中文字幕| 一区二区日韩av| 91在线精品秘密一区二区| 亚洲国产经典视频| 国产成人在线观看| 久久综合久久99| 国产米奇在线777精品观看| 欧美成人性战久久| 日本网站在线观看一区二区三区 | 亚洲一区中文日韩| 91视频免费看| 亚洲人成精品久久久久| www.日韩av| 中文字幕一区二区不卡 | 欧美一卡二卡三卡| 视频一区视频二区中文| 欧美日韩另类国产亚洲欧美一级| 一区二区三区视频在线看| 在线亚洲高清视频| 亚洲一区视频在线| 欧美视频日韩视频在线观看| 亚洲综合免费观看高清完整版在线 | 国产精品久久久久影院亚瑟| 国产成人午夜99999| 国产亚洲欧美日韩在线一区| 国产乱淫av一区二区三区| 国产蜜臀97一区二区三区| 成人性生交大片免费看在线播放| 国产日韩欧美电影| 成人激情免费视频| 亚洲品质自拍视频| 欧美日韩免费高清一区色橹橹| 三级一区在线视频先锋| 日韩欧美国产一区二区三区| 国产综合久久久久久鬼色| 欧美精品一区二区三区在线| 国产成人精品免费看| 成人免费视频在线观看| 欧美日韩高清在线播放| 美国毛片一区二区| 久久精品视频在线看| 99久久99久久免费精品蜜臀| 亚洲精品乱码久久久久久| 4438x成人网最大色成网站| 极品销魂美女一区二区三区| 国产三级三级三级精品8ⅰ区| 91香蕉视频污| 日韩av一二三| 国产精品免费网站在线观看| 色婷婷av久久久久久久| 日韩电影免费在线看| 久久久夜色精品亚洲| 99精品久久只有精品| 日韩黄色小视频| 中文在线资源观看网站视频免费不卡| 不卡av电影在线播放| 午夜伦理一区二区| 久久婷婷国产综合国色天香| 97se亚洲国产综合自在线| 男男视频亚洲欧美| 国产精品成人免费| 在线观看日韩精品| 韩国在线一区二区| 亚洲精品欧美激情| 精品粉嫩aⅴ一区二区三区四区| 99久久久免费精品国产一区二区| 石原莉奈在线亚洲二区| 国产欧美va欧美不卡在线| 欧美美女一区二区| 不卡电影免费在线播放一区| 丝袜美腿亚洲综合| 亚洲色图都市小说| 欧美大白屁股肥臀xxxxxx| 色综合天天综合在线视频| 激情综合色综合久久| 亚洲一区二区三区四区的| 久久久久久免费网| 69堂精品视频| 色婷婷一区二区三区四区| 久久99久国产精品黄毛片色诱| 一区二区三区**美女毛片| 国产日韩欧美在线一区| 91精品国产麻豆| 色一情一伦一子一伦一区| 国产一区二区三区av电影| 视频一区二区三区入口| 亚洲九九爱视频| 国产夜色精品一区二区av| 欧美一级xxx| 在线观看亚洲a| 99久久777色| 国产激情视频一区二区三区欧美| 午夜精品一区在线观看| 亚洲婷婷在线视频| 国产欧美精品一区| 精品国产一区二区精华| 91.com视频| 欧美怡红院视频| 91福利国产成人精品照片| voyeur盗摄精品| 国产成人精品免费视频网站| 精品亚洲国内自在自线福利| 日本va欧美va瓶| 日韩精品成人一区二区三区| 一区二区三区在线视频观看 | 奇米精品一区二区三区四区| 亚洲一区在线观看免费观看电影高清| 国产精品国产自产拍高清av王其 | 喷白浆一区二区| 日产国产高清一区二区三区 | 成人免费观看男女羞羞视频|