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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ssp.c

?? 基于LPC2xxx的SSP總線程序.已在KEIL下調試通過.
?? C
字號:
/*****************************************************************************
 *   ssp.c:  SSP C file for NXP LPC23xx/24xx Family Microprocessors
 *
 *   Copyright(C) 2006, NXP Semiconductor
 *   All rights reserved.
 *
 *   History
 *   2006.07.20  ver 1.00    Prelimnary version, first Release
 *
*****************************************************************************/
#include "LPC23xx.h"			/* LPC23XX/24xx Peripheral Registers */
#include "type.h"
#include "irq.h"
#include "ssp.h"
#include "dma.h"

/* statistics of all the interrupts */
volatile DWORD interruptRxStat = 0;
volatile DWORD interruptOverRunStat = 0;
volatile DWORD interruptRxTimeoutStat = 0;

/*****************************************************************************
** Function name:		SSP0Handler
**
** Descriptions:		SSP port is used for SPI communication.
**						SSP0(SSP) interrupt handler
**						The algorithm is, if RXFIFO is at least half full, 
**						start receive until it's empty; if TXFIFO is at least
**						half empty, start transmit until it's full.
**						This will maximize the use of both FIFOs and performance.
**
** parameters:			None
** Returned value:		None
** 
*****************************************************************************/
void SSP0Handler (void) __irq 
{
  DWORD regValue;
  
  IENABLE;				/* handles nested interrupt */

  regValue = SSP0MIS;
  if ( regValue & SSPMIS_RORMIS )	/* Receive overrun interrupt */
  {
	interruptOverRunStat++;
	SSP0ICR = SSPICR_RORIC;		/* clear interrupt */
  }
  if ( regValue & SSPMIS_RTMIS )	/* Receive timeout interrupt */
  {
	interruptRxTimeoutStat++;
	SSP0ICR = SSPICR_RTIC;		/* clear interrupt */
  }

  /* please be aware that, in main and ISR, CurrentRxIndex and CurrentTxIndex
  are shared as global variables. It may create some race condition that main
  and ISR manipulate these variables at the same time. SSPSR_BSY checking (polling)
  in both main and ISR could prevent this kind of race condition */
  if ( regValue & SSPMIS_RXMIS )	/* Rx at least half full */
  {
	interruptRxStat++;		/* receive until it's empty */		
  }

  IDISABLE;
  VICVectAddr = 0;		/* Acknowledge Interrupt */
}

/*****************************************************************************
** Function name:		SSP0Init
**
** Descriptions:		SSP0 port initialization routine
**				
** parameters:			None
** Returned value:		true or false, if the interrupt handler
**						can't be installed correctly, return false.
** 
*****************************************************************************/
DWORD SSP0Init( void )
{
  BYTE i, Dummy;

  /* enable clock to SSP0 for security reason. By default, it's enabled already */
  PCONP |= (1 << 21);

  /* Configure PIN connect block */
  /* bit 32, 54, 76 are 0x10, bit 98 are 0x00 */
  /* port 0 bits 17, 18, 19, 20 are SSP port SCK0, MISO0, MOSI0, and SSEL0 */
  /* set SSEL to GPIO pin that you will have the totoal freedom to set/reset 
  the SPI chip-select pin */
  /* When DMA is enabled, enable USE_CS, or be careful with SSP0_SEL pin,
  clear SSP0_SEL before DMA starts, and set SSP0_SEL after finishing. */ 
#if USE_CS
  PINSEL0 |= 0x80000000;
  PINSEL1 |= 0x0000002A;
#else
  PINSEL0 |= 0x80000000;
  PINSEL1 |= 0x00000028;
  IODIR0 = SSP0_SEL;	/* SSEL is output */
  IOSET0 = SSP0_SEL;	/* set SSEL to high */
#endif
		
  /* Set DSS data to 8-bit, Frame format SPI, CPOL = 0, CPHA = 0, and SCR is 15 */
  SSP0CR0 = 0x0707;

  /* SSPCPSR clock prescale register, master mode, minimum divisor is 0x02 */
  SSP0CPSR = 0x2;

  for ( i = 0; i < FIFOSIZE; i++ )
  {
	Dummy = SSP0DR;		/* clear the RxFIFO */
  }

  if ( install_irq( SPI0_INT, (void *)SSP0Handler, HIGHEST_PRIORITY ) == FALSE )
  {
	return (FALSE);
  }
	
  /* Device select as master, SSP Enabled, loopback operational mode */
  SSP0CR1 = SSPCR1_LBM | SSPCR1_SSE;
  /* Set SSPINMS registers to enable interrupts */
  /* enable all error related interrupts */
  SSP0IMSC = SSPIMSC_RORIM | SSPIMSC_RTIM;
  return( TRUE );
}

/*****************************************************************************
** Function name:		SSP0Send
**
** Descriptions:		Send a block of data to the SSP0 port, the 
**						first parameter is the buffer pointer, the 2nd 
**						parameter is the block length.
**
** parameters:			buffer pointer, and the block length
** Returned value:		None
** 
*****************************************************************************/
void SSP0Send( BYTE *buf, DWORD Length )
{
  DWORD i;
    
  for ( i = 0; i < Length; i++ )
  {
	/* as long as TNF bit is set (TxFIFO is not full), I can always transmit */
	while ( !(SSP0SR & SSPSR_TNF) );
	SSP0DR = *buf;
	buf++;
	/* Wait until the Busy bit is cleared */
	while ( !(SSP0SR & SSPSR_BSY) );
  }
  return; 
}

/*****************************************************************************
** Function name:		SSP0Receive
** Descriptions:		the module will receive a block of data from 
**						the SSP0, the 2nd parameter is the block 
**						length.
** parameters:			buffer pointer, and block length
** Returned value:		None
** 
*****************************************************************************/
void SSP0Receive( BYTE *buf, DWORD Length )
{
  DWORD i;
 
  for ( i = 0; i < Length; i++ )
  {
	/* As long as Receive FIFO is not empty, I can always receive. */
	/* since it's a loopback test, clock is shared for both TX and RX,
	no need to write dummy byte to get clock to get the data */
	/* if it's a peer-to-peer communication, SSPDR needs to be written
	before a read can take place. */
//	SSP0DR = 0xFF;
	while ( !(SSP0SR & SSPSR_RNE) );
	*buf = SSP0DR;
	buf++;
  }
  return; 
}

/******************************************************************************
**                            End Of File
******************************************************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷国产精品久久包臀| 日一区二区三区| 精品国产91久久久久久久妲己 | 久久午夜免费电影| 欧美一区二区三区视频免费播放| 精品婷婷伊人一区三区三| 精品婷婷伊人一区三区三| 欧美性videosxxxxx| 欧美日韩欧美一区二区| 欧美视频在线一区| 91精品综合久久久久久| 日韩一区二区免费电影| 久久在线免费观看| 日本一区免费视频| 亚洲精选视频免费看| 夜夜嗨av一区二区三区网页| 亚洲高清久久久| 激情亚洲综合在线| 成人v精品蜜桃久久一区| 91丨九色porny丨蝌蚪| 欧美日韩一区高清| 欧美精品一区二区三区久久久| 国产精品沙发午睡系列990531| 亚洲视频一区在线| 美国十次综合导航| 91在线小视频| 精品精品欲导航| 日韩理论片一区二区| 视频在线观看一区| 成人高清视频在线| 日韩视频免费观看高清完整版在线观看| 日韩三级在线观看| 日韩理论在线观看| 久久99精品久久久久久国产越南 | 久久99久久99| 91香蕉视频黄| 日韩一级二级三级精品视频| 国产精品久久久久久久裸模| 天天影视涩香欲综合网| 成人精品视频一区| 欧美精品日韩精品| 中文字幕在线不卡| 美女爽到高潮91| 色欧美片视频在线观看| 日韩欧美一卡二卡| 亚洲国产一区在线观看| 成人激情免费网站| 日韩三级电影网址| 亚洲精品第1页| 成人午夜电影久久影院| 日韩欧美高清dvd碟片| 亚洲网友自拍偷拍| 91女厕偷拍女厕偷拍高清| 久久精品视频在线看| 五月天一区二区三区| 99国产精品久久久久| 久久精品男人天堂av| 看国产成人h片视频| 欧美日韩在线播放三区四区| 国产精品国产三级国产三级人妇| 国产久卡久卡久卡久卡视频精品| 91精品久久久久久久91蜜桃 | 欧美一卡二卡三卡四卡| 洋洋成人永久网站入口| 色婷婷国产精品| 一色屋精品亚洲香蕉网站| 国产乱人伦偷精品视频不卡 | 日韩午夜在线影院| 亚洲国产精品久久人人爱蜜臀| 99v久久综合狠狠综合久久| 国产三级一区二区| 国产馆精品极品| 国产视频在线观看一区二区三区| 精品在线播放免费| 日韩精品中午字幕| 精久久久久久久久久久| 精品久久人人做人人爽| 国产原创一区二区| 久久精品男人天堂av| 不卡视频在线看| 亚洲欧洲日本在线| 欧美亚洲综合在线| 日韩高清不卡一区二区三区| 日韩一区二区视频在线观看| 麻豆一区二区三| 欧美精品一区二区三区蜜桃| 国产成人三级在线观看| 亚洲人成亚洲人成在线观看图片 | 精品播放一区二区| 国产白丝网站精品污在线入口| 欧美激情一区二区三区| 97国产一区二区| 亚洲福利视频导航| 日韩一区二区在线观看视频播放| 国产米奇在线777精品观看| 亚洲私人黄色宅男| 欧美日韩国产精品自在自线| 精品一区二区av| 亚洲视频香蕉人妖| 日韩欧美国产三级| av一区二区久久| 视频一区视频二区中文| 精品成人免费观看| 欧美一区二区三区公司| 91精品国产丝袜白色高跟鞋| 亚洲国产毛片aaaaa无费看| 91精品国产乱码| 丁香婷婷综合网| 亚洲综合视频在线| 欧美精品一区二区三区四区| 91美女在线看| 韩国女主播成人在线| 一区二区三区高清不卡| 亚洲精品一区二区三区影院| 91丨九色丨国产丨porny| 久热成人在线视频| 亚洲一区二区三区自拍| 久久精品人人做| 欧美精品亚洲二区| 色婷婷激情一区二区三区| 狠狠色丁香九九婷婷综合五月| 亚洲免费高清视频在线| 久久网站最新地址| 91精品免费观看| 欧美日韩一区不卡| 成年人午夜久久久| 国内国产精品久久| 偷偷要91色婷婷| 亚洲一区二区精品3399| 中文字幕欧美日韩一区| 久久综合av免费| 日韩一区二区三区四区 | 91在线无精精品入口| 国产一区二区三区在线观看免费视频 | 精品日韩一区二区三区免费视频| jvid福利写真一区二区三区| 精品一区二区三区在线观看国产| 一级女性全黄久久生活片免费| 国产精品美女久久久久久久久 | 亚洲国产成人高清精品| 亚洲欧美色综合| 亚洲品质自拍视频网站| 国产精品视频第一区| 中文字幕av资源一区| 国产亚洲视频系列| 精品欧美久久久| 欧美电影免费观看高清完整版在线 | 国产精品色婷婷久久58| 久久久久久99久久久精品网站| 日韩欧美国产不卡| 欧美电影免费观看高清完整版 | 国产.欧美.日韩| 国产精品伊人色| 国产精品1区2区3区在线观看| 美腿丝袜亚洲三区| 激情久久五月天| 国产精品综合二区| 丁香亚洲综合激情啪啪综合| 国产丶欧美丶日本不卡视频| 国产九九视频一区二区三区| 国产一区二区网址| 不卡欧美aaaaa| 91香蕉视频污在线| 欧美视频一二三区| 日韩一二三区不卡| 国产香蕉久久精品综合网| 国产午夜一区二区三区| 亚洲日穴在线视频| 视频一区国产视频| 国产一区二区三区国产| 国产成人av影院| 欧美午夜电影网| 欧美va天堂va视频va在线| 国产精品色一区二区三区| 一区二区三区在线免费播放 | 亚洲欧美日本在线| 午夜国产精品影院在线观看| 麻豆国产精品777777在线| 成人高清在线视频| 欧美日韩国产片| 国产女主播一区| 亚洲成人在线观看视频| 国产在线播放一区三区四| 在线亚洲+欧美+日本专区| 精品成人一区二区三区四区| 亚洲美女精品一区| 黄色资源网久久资源365| 91蜜桃网址入口| 精品国产乱码久久久久久1区2区| 国产精品女主播在线观看| 偷拍日韩校园综合在线| 成人成人成人在线视频| 日韩一区二区三| 亚洲综合另类小说| 国产成人h网站| 欧美一区在线视频| 亚洲欧美另类小说| 国产成人午夜视频| 日韩精品最新网址| 亚洲第一二三四区|