打印

LCD显示数组的数值最后一个老出错

[复制链接]
636|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小小的人呀|  楼主 | 2018-6-7 11:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
还是SPI FLASH 读写程序 加LCD显示 LCD终于不白屏了

先将数组里的值写入FLASH 并显示在LCD上

后读出FLASH 若和写入的相等

则将读出FLASH的数组里的值显示在LCD上 

只是最后一个数据老显示不正确 写入显示最后一个有时正确,有时错误

而读出显示最后一个总是088

如最后一个是199,写入显示199 读出后显示088

将其换成39,则写入显示399   读出后显示088 都错

我也不能仿真,找不出问题出在什么地方,请知道的朋友多多指教

uint8_t Tx_Buffer[]={12,13,14,15,16,185,186,187,188,199};

uint8_t Rx_Buffer[BufferSize];

uint8_t n;

__IO uint32_t DeviceID = 0;

__IO uint32_t FlashID = 0;

__IO TestStatus TransferStatus1 = FAILED;

// 函数原型声明

void Delay(__IO uint32_t nCount);

TestStatus Buffercmp(uint8_t* pBuffer1, uint8_t* pBuffer2, uint16_t BufferLength);



int main(void)

{  

/* 配置串口1为:115200 8-N-1 */

LCD_Init();

USART1_Config();

SPI_FLASH_Init();

   printf("\r\n 这是一个2M串行flash(W25Q16)实验 \r\n");



// 2M串行flash W25Q16初始化 */



LCD_Clear(0, 0, 240, 320, BACKGROUND);

LCD_DispStr(10, 10, (uint8_t *)"This is a flash test program", RED);

/* Get SPI Flash Device ID */

DeviceID = SPI_FLASH_ReadDeviceID();



Delay( 200 );



/* Get SPI Flash ID */

FlashID = SPI_FLASH_ReadID();



printf("\r\n FlashID is 0x%X,  Manufacturer Device ID is 0x%X\r\n", FlashID, DeviceID);



/* Check the SPI Flash ID */

if (FlashID == sFLASH_ID)  /* #define  sFLASH_ID  0xEF3015 */

{

  printf("\r\n 检测到华邦串行flash W25Q16 !\r\n");

  

  /* Erase SPI FLASH Sector to write on */

  SPI_FLASH_SectorErase(FLASH_SectorToErase);   

  for( n=0; n<10; n++ )

   {

    LCD_DispStr(10, 40, (uint8_t *)"WRITE ", RED);

    LCD_DisNum(100, 60, n, WHITE);//显示序号

    LCD_DisNum(100, 80, Tx_Buffer[n], RED);//显示写入FLASH的 数值10个

    Lcd_Delay(0x6FFF00);

   }

  /* 将发送缓冲区的数据写到flash中 */

  SPI_FLASH_BufferWrite(Tx_Buffer, FLASH_WriteAddress, BufferSize);

  //printf("\r\n 写入的数据为:%s \r\t", Tx_Buffer);

  

  /* 将刚刚写入的数据读出来放到接收缓冲区中 */

  SPI_FLASH_BufferRead(Rx_Buffer, FLASH_ReadAddress, BufferSize);

  //printf("\r\n 读出的数据为:%s \r\n", Tx_Buffer);

  

  /* 检查写入的数据与读出的数据是否相等 */

  TransferStatus1 = Buffercmp(Tx_Buffer, Rx_Buffer, BufferSize);

  

  if( PASSED == TransferStatus1 )

  {   

  printf("\r\n 2M串行flash(W25Q16)测试成功!\n\r");

   for( n=0; n<10; n++ )

   {

    LCD_DisNum(100, 100, Rx_Buffer[n], RED);//显示读出的 数值10个

     Lcd_Delay(0xAFFF00);

   }

  }

  else

  {        

  printf("\r\n 2M串行flash(W25Q16)测试失败!\n\r");

  }

}// if (FlashID == sFLASH_ID)

else

{   

  printf("\r\n 获取不到 W25Q16 ID!\n\r");

}



SPI_Flash_PowerDown();  

while(1);  

}

[/td][/tr][/table]

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

399

主题

399

帖子

0

粉丝