⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 基于MDK的LPC1100处理器开发应用例程
💻 C
字号:
/***  (C) COPYRIGHT 2010 UP Team, Wuhan University of Technology ************
* 文件名: main.c
* 作者  : UP Team, Wuhan University of Technology
* 日期  : 01/18/2010
* 描述  : 主程序源文件.
*******************************************************************************
*******************************************************************************
* 历史:
* 01/18/2010		 : V1.0		   初始版本
*******************************************************************************/
/* Includes ------------------------------------------------------------------*/
#include <stdio.h>
#include "LPC11xx.h"                        
#include "gpio.h"
#include "ssp.h"
#if SSP_DEBUG
#include "uart.h"
#endif

/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
#define SSP_NUM			0

/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
uint8_t src_addr[SSP_BUFSIZE]; 
uint8_t dest_addr[SSP_BUFSIZE];

/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/ 	

/**
  * @函数名:SSP_LoopbackTest
  * @描述:SSP Loopback 模式测试 
  * @参数: port #
  * @返回值:无
  */ 
void SSP_LoopbackTest( uint8_t portNum )
{
  uint32_t i;

  if ( portNum == 0 )
  {
#if !USE_CS
	/* 设置SSEL引脚输出低电平. */
	GPIOSetValue( PORT0, 2, 0 );
#endif
	i = 0;
	while ( i <= SSP_BUFSIZE )
	{
	  /* 检测RXIM、TXIM中断,基于FIFOSIZE(8)的大小一次发送一块数据 */
	  SSP_Send( portNum, (uint8_t *)&src_addr[i], FIFOSIZE );
	  /*  SSP接收数据 */
	  SSP_Receive( portNum, (uint8_t *)&dest_addr[i], FIFOSIZE );
	  i += FIFOSIZE;
	}
#if !USE_CS
	/* 设置SSEL引脚输出高电平. */
	GPIOSetValue( PORT0, 2, 1 );
#endif
  }
  else
  {
#if !USE_CS
	/* 设置SSEL引脚输出低电平. */
	GPIOSetValue( PORT2, 0, 0 );
#endif
	i = 0;
	while ( i <= SSP_BUFSIZE )
	{
	  /* 检测RXIM、TXIM中断,基于FIFOSIZE(8)的大小一次发送一块数据 */
	  SSP_Send( portNum, (uint8_t *)&src_addr[i], FIFOSIZE );
	  /*  SSP接收数据 */
	  SSP_Receive( portNum, (uint8_t *)&dest_addr[i], FIFOSIZE );
	  i += FIFOSIZE;
	}
#if !USE_CS
	/* 设置SSEL引脚输出高电平. */
	GPIOSetValue( PORT2, 0, 1 );
#endif
  }
  return;
}

/**
  * @函数名:main
  * @描述:主函数 
  * @参数: 无
  * @返回值:无
  */ 
int main (void)
{
  uint32_t i;
#if SSP_DEBUG
  int8_t temp[2];
#endif
  
  SystemInit();

#if SSP_DEBUG
  UARTInit(115200);
#endif

  printf("\n\r-- Basic SSP Project V1.0 --\n\r");
  printf("\n\r-- EM-LPC1100 --\n\r");
  printf("\n\r-- Synchronous Serial Communication test --\n\r");

  /* 初始化SSP I/O 引脚(p2.0-3) */
  SSP_IOConfig( SSP_NUM );	

  SSP_Init( SSP_NUM );			
						
  for ( i = 0; i < SSP_BUFSIZE; i++ )
  {
	src_addr[i] = (uint8_t)i;
	dest_addr[i] = 0;
  }

#if TX_RX_ONLY
  /* 板间通信测试,一块板充当主发送,另一块充当从接收 */
#if SSP_SLAVE
  /* 从接收 */
  SSP_Receive( SSP_NUM, (uint8_t *)dest_addr, SSP_BUFSIZE );
  for ( i = 0; i < SSP_BUFSIZE; i++ )
  {
	if ( src_addr[i] != dest_addr[i] )
	{
	  printf("\n\r SSP Receive failed!\n\r");
	  /* 验证失败 */
	  while ( 1 );				
	} 
  }
  printf("\n\r SSP Receive success!\n\r");
#else
  /* 主发送 */
  SSP_Send( SSP_NUM, (uint8_t *)src_addr, SSP_BUFSIZE);
#endif
#else
  /* TX_RX_ONLY=0,SSP内部回环测试 */
#if LOOPBACK_MODE
  SSP_LoopbackTest( SSP_NUM );
  for ( i = 0; i < SSP_BUFSIZE; i++ )
  {
	if ( src_addr[i] != dest_addr[i] )
	{
#if SSP_DEBUG
	  temp[0] = (dest_addr[i] & 0xF0) >> 4;
	  if ( (temp[0] >= 0) && (temp[0] <= 9) )
	  {
		temp[0] += 0x30;
	  }
	  else
	  {
		temp[0] -= 0x0A;
		temp[0] += 0x41;
	  }
	  temp[1] = dest_addr[i] & 0x0F;
	  if ( (temp[1] >= 0) && (temp[1] <= 9) )
	  {
		temp[1] += 0x30;
	  }
	  else
	  {
		temp[1] -= 0x0A;
		temp[1] += 0x41;
	  }
	  UARTSend((uint8_t *)&temp[0], 2);
	  UARTSend("\n\r", 2);
#endif
      /* 验证失败 */
	  printf("\n\r SSP Loopback Test failed!\n\r");
	  while( 1 );			
	}
  }
#endif
#if SSP_DEBUG
   
  /* 测试成功 */
  printf("\n\r SSP Loopback Test success!\n\r");
#endif
#endif			
  while (1);
}



/**
  * @}
  */ 

/**
  * @}
  */ 
/**  (C) COPYRIGHT 2010 UP Team, Wuhan University of Technology *****文件结束*******/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -