对初学者来说可以参考一下编程的风格。主要用于通过单片机的SPI口读写U盘上的文件。
//============================================================================================================
//
//
// 本单元的功能描述:
//
// 实现 通过UART1 传输数据的功能。
//
//
// 输出函数列表:
//
// UART1_Init 初始化
// UART1_Send 发送数据
//===========================================================================================================
// 日期 | 动作 | 单位 | 描述 |联系方式
//===========================================================================================================
//2008-07-28| 创建 | 西安达泰电子 | 创建文件 |029-85272421 http://www.dataie.com
//============================================================================================================
//============================================================================================================
// 引入头文件
//============================================================================================================
//#include /* LPC23xx definitions */
#include "Config.h"
#include "IRQ_Unit.h"
#include "SPI_unit.h"
//============================================================================================================
//定义一些常量
BYTE* vSPI_RD_pData;
WORD vSPI_ReadLength;
WORD vSPI_ReadCounter;
DWORD vSPI_FirstData;
//============================================================================================================
//============================================================================================================
//************************************************************************************************************
//*
//*
//* 开始定义 处理UART中断、实施数据传输的 函数。
//*
//*
//************************************************************************************************************
//============================================================================================================
//函数名: SPI_Handler
//
//调用关系: 被 硬件中断 调用。
//
//功能描述: SPI1的中断处理程序。
//
//入口参数: 无。
//
//返回值: 无。
//============================================================================================================
void SPI_Handler (void) __irq
{
WORD IntCond;
volatile BYTE Dummy;
IntCond = SSPMIS;
if ( IntCond & SSPMIS_RORMIS ) /* Receive overrun interrupt */
{
SSPICR = SSPICR_RORIC; /* clear interrupt */
}
if ( IntCond & SSPMIS_RTMIS ) /* Receive timeout interrupt */
{
SSPICR = SSPICR_RTIC; /* clear interrupt */
}
VICVectAddr = 0; // Acknowledge Interrupt
}
//============================================================================================================
//************************************************************************************************************
//*
//*
//* 开始定义 本单元的外部接口函数 函数。
//*
//*
//************************************************************************************************************
//============================================================================================================
//函数名: SPI_Init
//
//调用关系: 被 外部函数 函数调用。
//
//功能描述: SPI1的初始化程序。
//
//入口参数: 无
//
//返回值: 无。
//============================================================================================================
BOOL SPI_Init( void )
{
PINSEL0 |= 0x20000000; /* SCK1 */
PINSEL1 |= 0x00000540; /* SSEL1,MOSI1,MOSI1 */
vSPI_ReadCounter = 0;
// enable clock to SSP1 for security reason. By default, it's enabled already
PCONP |= (1