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

📄 main.c

📁 SmartARM2400系列开发板全套资料
💻 C
字号:
/****************************************Copyright (c)****************************************************
**                               Guangzou ZLG-MCU Development Co.,LTD.
**                                      graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info---------------------------------------------------------------------------------
** File name:			main.c
** Last modified Date: 2004-09-16
** Last Version:		1.0
** Descriptions:		The main() function example template
**
**--------------------------------------------------------------------------------------------------------
** Created by:			Chenmingji
** Created date:		2004-09-16
** Version:				1.0
** Descriptions:		The original version
** 
**--------------------------------------------------------------------------------------------------------
** modified by:        wankai
** modified Date:      2008-7-4
** Descriptions:       修改了程序风格与注释的格式
*********************************************************************************************************/

#include  	"config.h" 

#define 	SPI_CS       	(1 << 16) 				                        /* P0.16口为片选脚          */
#define		CE_Low()		(IO0CLR |=  SPI_CS)		                        /* 选中从器件               */
#define     CE_High()		(IO0SET |=  SPI_CS)			

/*********************************************************************************************************
** 函数名称:  SPISndByte													
** 函数功能:  通过硬件SPI接口发送一个字节					
** 入口参数:  data															
** 出口参数:  无																
*********************************************************************************************************/
void SPISndByte(uint8 data)
{
   	uint32 temp = 0;
    CE_Low();
    S0SPDR = data;
    while (0 == (S0SPSR & 0x80));					                        /* 等待SPIF置位,           */
                                                                            /* 即等待数据发送完毕       */
	temp   = (uint32)S0SPSR;						                        /* 通过读S0SPSR,           */
	                                                                        /* 清除SPIF标志             */
	CE_High();
}

/*********************************************************************************************************
** 函数名称:  Delay
** 函数功能:  长软件延时
** 入口参数:  dly	延时参数,值越大,延时越久
** 出口参数:  无
*********************************************************************************************************/
void  Delay(uint32  dly)
{  
    uint32  i = 0;
    for (; dly > 0; dly--) {
        for (i = 0; i < 5000; i++);
    }
}

/*********************************************************************************************************
** 函数名称:  SPIInit															
** 功能说明:  初始化LPC2400系列ARM的SPI引脚及寄存器				
** 入口参数:  无																
** 出口参数:  无																
*********************************************************************************************************/
void  SPIInit(void)
{  
	/* 初始化SPI引脚 	*/
	PINSEL0  =	0;		
   	IO0DIR 	|=  SPI_CS;								                        /* 设置SPI的片选引脚	    */
   	PINSEL0	|= 	0xc0000000;							                        /* 设置P0.15脚为SCK脚	    */
   	PINSEL1	 =	(0x03 << 2) | (0x03 << 4);			                        /* 设置P0.17、P0.18         */
   	                                                                        /* 引脚为SPI引脚		    */
		
	/* 初始化SPI寄存器 	*/		               
   	S0SPCCR  =	0x48;								                        /* 设置SPI时钟分频		    */
 	S0SPCR   = 	(0 << 2) |							                        /* SPI控制器每次传输        */
 	                                                                        /* 发送和接收8位数据	    */
 				(0 << 3) |							                        /* CPHA = 0, 数据在SCK      */
 				                                                            /* 的第一个时钟沿采样       */
 				(0 << 4) |							                        /* CPOL = 0, SCK 为高有效   */
 				(1 << 5) |							                        /* MSTR = 1, SPI 处于主模式	*/
 				(0 << 6) |							                        /* LSBF = 0, SPI 数据       */
 				                                                            /* 传输MSB (位7)在先	    */
 				(0 << 7);							                        /* SPIE = 0, SPI 中断被禁止	*/
}

/* 流水灯花样,低电平点亮,注意调用时候用了取反操作 */
const uint8 LED_TBL[] = 
{
	0x00, 0xFF,										                        /* 全部熄灭后,再全部点亮    */
	0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,	                        /* 依次逐个点亮				*/
	0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF,	                        /* 依次逐个叠加				*/
	0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01,	                        /* 依次逐个递减			    */
	0x81, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81,	                        /* 两个靠拢后分开			*/
	0x81, 0xC3, 0xE7, 0xFF, 0xFF, 0xE7, 0xC3, 0x81	                        /* 从两边叠加后递减		    */
};

/*********************************************************************************************************
** 函数名称:  main
** 函数功能:  用SPI驱动流水灯显示
** 入口参数:  无																
** 出口参数:  返回0则表明程序出错		
** 调试说明:  需将P0.15~P0.18分别与SCLK、/CS、MISO、MOSI短接。
** 注    意: 由于片外Flash读写比较慢,凡涉及延时的地方,均需缩短延时,大约为片内的1/10														
*********************************************************************************************************/
int main(void)
{  	
    uint32 i = 0;
    
    SPIInit();
    			       
    while (1) { 
    	for (i = 0; i < 42; i++) {   
	  		Delay(100);			
	    	SPISndByte(LED_TBL[i]);      			                       /* 让74HC595显示数据的内容   */
	  	} 
    }
    return (0);

}

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

⌨️ 快捷键说明

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