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

📄 main.c

📁 arm7 lpc2103 的keil 程序开发包 非常有参考价值
💻 C
字号:
#define IN_MAIN
#include "config.h"
#include "I2C.h"					   			//硬件I2C软件包
#include "Legacy_GPIO.h"						//低速GPIO软件包
#pragma import(__use_no_semihosting_swi)        //don't delete this line

#define		BEEP		(1 << 7)	//P0.7引脚控制蜂鸣器,低电平蜂鸣器鸣叫

#define		I2Cn_n		0			//I2C0
#define		I2Cn_MODE	1			//I2C主模式
#define		I2Cn_Fi2c	100000		//I2C时钟速率为100K
#define		CSI24WC02 	0xb0		//定义器件地址 
#define		I2Cn_slot	0			//I2C使用中断通道0

#define		SUBA_TYPE	1			//单字节子地址形式

/*********************************************************************************************************
** 函数名称:DelayNS()
** 函数功能:长软件延时
** 入口参数:dly	延时参数,值越大,延时越久
** 出口参数:无
********************************************************************************************************/
void  DelayNS(uint32  dly)
{  uint32  i;

   for(; dly>0; dly--) 
      for(i=0; i<50000; i++);
}
/*********************************************************************************************************
** 函数名称:WrEepromErr()
** 函数功能:读写EEPRM出错报警,即蜂鸣器一直鸣叫。
** 入口参数:无
** 出口参数:无
********************************************************************************************************/
void  WrEepromErr(void)	
{  while(1)
   { 
   		P0_GPIOClr(BEEP);
   }
}
/*********************************************************************************************************
** Function name:			IRQ_Exception
**
** Descriptions:			interrupt exceptional handler , change it as needed
**                          don't delete this function 
********************************************************************************************************/
void  IRQ_Exception(void)
{
}
/*********************************************************************************************************
** 函数名称:main()
** 函数功能:使用硬件I2C向E2PROM写入10字节数据,然后读出判断是否正确写入。
**			 正确,蜂鸣器鸣叫1声,错误一直鸣叫。
** 说明:将跳线器JP5的SCL和SDA短接、JP9短接。
********************************************************************************************************/
void Main(void)
{
	uint8  i;
	uint8  data_buf[30];
    TargetInit(VPBDIV_DATA, PLLCFG_DATA, MAMTIM_DATA);      // don't delete
    while((PLLSTAT & (1 << 10)) == 0);                      // can delete
    
	P0_GPIOInit(BEEP,1);			//设置BEEP端口为GPIO输出模式
	P0_GPIOSet(BEEP);				

   	//I2C初始化
	I2C_Init(I2Cn_n,I2Cn_MODE,I2Cn_Fi2c,CSI24WC02,I2Cn_slot);
   
	for(i=0; i<10; i++) data_buf[i] = i+'0';
	// 在0x00地址处写入10字节数据
	I2C_WriteNByte(I2Cn_n,CSI24WC02,SUBA_TYPE,00,data_buf,10);
	DelayNS(10);				// 等待写周期结束
   
	for(i=0; i<10; i++) data_buf[i] = 0;
	// 在0x00地址处读出10字节数据
	I2C_ReadNByte(I2Cn_n,CSI24WC02,SUBA_TYPE,00,data_buf,10);
  
	 /* 校验读出的数据,若不正确则蜂鸣器一直鸣叫 */
	for(i=0; i<10; i++)
	{
		if(data_buf[i]!=(i+'0'))
		{
			WrEepromErr();
		} 
	}

	P0_GPIOClr(BEEP);				 //蜂鸣器鸣叫1声
	DelayNS(50);
	P0_GPIOSet(BEEP);
	while(1);
}
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

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