📄 main.c
字号:
/****************************************Copyright (c)****************************************************
** Guangzhou ZLGMCU Development Co., LTD
**
** http://www.zlgmcu.com
**
**--------------File Info---------------------------------------------------------------------------------
** File name: main.c
** Last modified Date: 2010-02-04
** Last Version: V1.0
** Descriptions: The main() function example template
**
**--------------------------------------------------------------------------------------------------------
** Created by: Li Baihua
** Created date: 2010-09-10
** Version: V1.00
** Descriptions: 整理模板,添加用户应用程序
**
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
** Rechecked by:
*********************************************************************************************************/
#include "LPC11xx.h" /* LPC11xx外设寄存器 */
#include "GPIO.h"
#include "UART.h"
#include "MX25L1602Drv.h"
/******************* 全局变量定义 *******************/
/*********************************************************************************************************
变量与宏定义
*********************************************************************************************************/
#define BEEP (1 << 8 ) /* 蜂鸣器P0.11 */
#define BEEPOFF() LPC_GPIO2->DIR |= BEEP;LPC_GPIO2->DATA |= BEEP /* 蜂鸣器关 */
#define BEEPON() LPC_GPIO2->DIR |= BEEP;LPC_GPIO2->DATA &= ~BEEP /* 蜂鸣器开 */
/*
* 读操作函数入口参数的宏
*/
#define RDADDR 50
#define NOBYTES 20
#define RCVBUFPT GucRdBuf
/*
* 写操作函数入口参数的宏
*/
#define WRADDR 50
#define SNDBUFPT GucWrBuf
#define WRNOBYTES 20
INT32U GulChipID = 0;
INT8U GucWrBuf[20] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19};
INT8U GucRdBuf[20];
uint8_t array_status[6];
/*********************************************************************************************************
** Function name: sysTimeDelay
** Descriptions: ulNum: 为n,BEEP就鸣叫n次
** input parameters: ulNum: 鸣叫次数
** output parameters: 无
** Returned value: 无
*********************************************************************************************************/
void sysTimeDelay (INT32U ulTime)
{
INT32U i = 0;
while(ulTime--) {
for(i=0; i < 5000; i++);
}
}
/*********************************************************************************************************
** Function name: beepNum
** Descriptions: ulNum: 为n,BEEP就鸣叫n次
** input parameters: ulNum: 鸣叫次数
** output parameters: 无
** Returned value: 无
*********************************************************************************************************/
void beepNum (INT32U ulNum)
{
INT32U i;
for (i = 0; i < ulNum; i++) {
BEEPON();
sysTimeDelay(100);
BEEPOFF();
sysTimeDelay(100);
}
}
void Inttochar(unsigned int num)
{
if (num<10)
{
array_status[0]=num+0x30;
array_status[1]=0x00;
return;
}
if (num<100)
{
array_status[0]=num/10+0x30;
array_status[1]=num%10+0x30;
array_status[2]=0x00;
return;
}
if (num<1000)
{
array_status[0]=num/100+0x30;
array_status[1]=num%100/10+0x30;
array_status[2]=num%10+0x30;
array_status[3]=0x00;
return;
}
if (num<10000)
{
array_status[0]=num/1000+0x30;
array_status[1]=num%1000/100+0x30;
array_status[2]=num%100/10+0x30;
array_status[3]=num%10+0x30;
array_status[4]=0x00;
return;
}
else
{
array_status[0]=num/10000+0x30;
array_status[1]=num%10000/1000+0x30;
array_status[2]=num%1000/100+0x30;
array_status[3]=num%100/10+0x30;
array_status[4]=num%10+0x30;
array_status[5]=0x00;
return;
}
}
/*********************************************************************************************************
** Function name: main
** Descriptions: SSP读写NorFlash例程。
** 跳线连接:分别将P0.2与SSEL、P0.6与SCK、P0.8与MISO、P0.9与MOSI短接;
** 操作方法:下载并运行程序;
** 现 象: 选择单步运行到102行,在TKStudio里查看GuiChipID为0x00c22015;然后全速运行,
** 若SPI读写NorFlash错误,则蜂鸣器响一声,否则不响。
** input parameters: 无
** output parameters: 无
** Returned value: 无
*********************************************************************************************************/
int main (void)
{
INT32U i = 0;
INT8U val=0;
SystemInit();
GPIOInit(); //GPIO初始化,使能GPIO模块时钟
UARTInit(115200); //初始化波特率为115200
GPIOSetDir(PORT2,8,1);
GPIOSetValue(PORT2,8,1);
SSP_Init();
MX25L1602_RdID(Jedec_ID, &GulChipID); //单步运行到此处时,在IAR里查看
if (GulChipID == 0x00C22014)
GPIOSetValue(PORT2,8,0);
val=GulChipID&0xff;
Inttochar(val);
UARTSend(array_status,6);
UARTSend(" ",2);
val=(GulChipID&0xff00)>>8;
Inttochar(val);
UARTSend(array_status,6);
UARTSend(" ",2);
val=(GulChipID&0xff0000)>>16;
Inttochar(val);
UARTSend(array_status,6);
UARTSend(" ",2);
val=(GulChipID&0xff000000)>>24;
Inttochar(val);
UARTSend(array_status,6);
UARTSend(" ",2);
/*
val=(GulChipID&0xff000000)>>32;
Inttochar(val);
UARTSend(array_status,6);
UARTSend(" ",2);
GulChipID &= ~0xff000000; //仅保留低24位数据
if (GulChipID != 0x002014C2) { // GuiChipID的值是否0x00c22015
while(1);
} */
MX25L1602_Erase(0, 255); // 擦除芯片
MX25L1602_WR(WRADDR, SNDBUFPT, WRNOBYTES); // 以0x2007为起始地址,将WrBuf
// 数组里的20个数据写入芯片
MX25L1602_RD(RDADDR, NOBYTES, RCVBUFPT); // 以0x2007为起始地址,读20个
/* // 数据到RdBuf中
for (i = 0;i < 19;i++) {
if (GucRdBuf[i] != GucWrBuf[i] ) { // 若SPI读写不正确则程序就一直
// 鸣叫,否则SPI读写正确
// BEEPON();
while (1);
}
}
// beepNum(3); */
UARTSend(GucRdBuf,20);
// GPIOSetValue(PORT2,8,0);
while (1);
}
/*********************************************************************************************************
End Of File
*********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -