野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10369|回复: 1

SPI_Flash存储小数程序求助

[复制链接]
发表于 2015-6-8 17:28:11 | 显示全部楼层 |阅读模式
请问一下下列程序中的cal_flag==0xcc是什么意思??怎么得到的??


/**
  ******************************************************************************
  * @file    main.c
  * @author  fire
  * @version V1.0
  * @date    2013-xx-xx
  * @brief   »a°î 2M′®DDflash2aêÔ£¬2¢½«2aêÔDÅÏ¢í¨1y′®¿ú1ÔúμçÄÔμÄ3¬¼¶ÖÕ¶ËÖD′òó¡3öà′
  ******************************************************************************
  * @attention
  *
  * êμÑéƽì¨:ò°»e iSO-MINI STM32 ¿a·¢°å
  * ÂÛì3    :http://www.firebbs.cn
  * ìÔ±|    :http://firestm32.taobao.com
  *
  ******************************************************************************
  */
#include "stm32f10x.h"
#include "bsp_usart1.h"
#include "bsp_spi_flash.h"


typedef enum { FAILED = 0, PASSED = !FAILED} TestStatus;

/* »ñè¡»o3åÇøμÄ3¤¶è */
#define TxBufferSize1   (countof(TxBuffer1) - 1)
#define RxBufferSize1   (countof(TxBuffer1) - 1)
#define countof(a)      (sizeof(a) / sizeof(*(a)))
#define  BufferSize (countof(Tx_Buffer)-1)

#define  FLASH_WriteAddress     0x00000
#define  FLASH_ReadAddress      FLASH_WriteAddress
#define  FLASH_SectorToErase    FLASH_WriteAddress
//#define  sFLASH_ID              0xEF3015     //W25X16
//#define  sFLASH_ID              0xEF4015         //W25Q16
#define  sFLASH_ID                0xEF4017         //W25Q64     

/* ·¢Ëí»o3åÇø3õê¼»ˉ */
//uint8_t Tx_Buffer[] = " ¸DD»ÄúÑ¡óÃò°»estm32¿a·¢°å\r\n                http://firestm32.taobao.com";
//uint8_t Rx_Buffer[BufferSize];
long double Tx_Buffer[7] = {0};
long double Rx_Buffer[7] = {0};

uint8_t cal_flag = 0;
uint8_t cal_f = 0;

__IO uint32_t DeviceID = 0;
__IO uint32_t FlashID = 0;
__IO TestStatus TransferStatus1 = FAILED;

// oˉêyÔ-DíéùÃ÷
void Delay(__IO uint32_t nCount);
TestStatus Buffercmp(uint8_t* pBuffer1, uint8_t* pBuffer2, uint16_t BufferLength);

/*
* oˉêyÃû£omain
* Ãèêö  £oÖ÷oˉêy
* êäèë  £oÎT
* êä3ö  £oÎT
*/
int main(void)
{        
        uint8_t k;

  /* ÅäÖÃ′®¿ú1Îa£o115200 8-N-1 */
        USART1_Config();
        printf("\r\n ÕaêÇò»¸ö8M′®DDflash(W25Q64)êμÑé \r\n");
       
        /* 8M′®DDflash W25X643õê¼»ˉ */
        SPI_FLASH_Init();
       
        /* 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  0xEF4017 */
        {       
                printf("\r\n ¼ì2aμ½»a°î′®DDflash W25Q64 !\r\n");   
               
    #if 0
                /* ½«·¢Ëí»o3åÇøμÄêy¾YD′μ½flashÖD */
                SPI_FLASH_BufferWrite((void*)Tx_Buffer, FLASH_WriteAddress, sizeof(Tx_Buffer));
    for( k=0; k<7; k++ )
      printf("\r\n D′è&#235;μ&#196;êy&#190;Y&#206;a£o%LF \r\n", Tx_Buffer[k]);
               
                /* &#189;&#171;&#184;&#213;&#184;&#213;D′è&#235;μ&#196;êy&#190;Y&#182;á3&#246;à′·&#197;μ&#189;&#189;óê&#213;&#187;o3&#229;&#199;&#248;&#214;D */
                SPI_FLASH_BufferRead((void*)Rx_Buffer, FLASH_ReadAddress, sizeof(Rx_Buffer));
    for( k=0; k<7; k++ )
      printf("\r\n &#182;á3&#246;μ&#196;êy&#190;Y&#206;a£o%LF \r\n", Rx_Buffer[k]);
          #elif 1
    SPI_FLASH_BufferRead(&cal_flag, 0, 1);
    if( cal_flag == 0xCC )
    {
//      SPI_FLASH_BufferRead((void*)Rx_Buffer, 1, sizeof(Rx_Buffer));
//        for( k=0; k<7; k++ )
//          printf("\r\n rx = %LF \r\n",Rx_Buffer[k]);

            SPI_FLASH_BufferRead((void*)Tx_Buffer, 1, sizeof(Tx_Buffer));
        for( k=0; k<7; k++ )
          printf("\r\n rx = %LF \r\n",Tx_Buffer[k]);
    }   
    else
    {
      cal_flag = 0xCC;
      SPI_FLASH_SectorErase(0);
      SPI_FLASH_BufferWrite(&cal_flag, 0, 1);

      for( k=0; k<7; k++ )
          Tx_Buffer[k] = k +0.1;

      SPI_FLASH_BufferWrite((void*)Tx_Buffer, 1, sizeof(Tx_Buffer));

      for( k=0; k<7; k++ )
        printf("\r\n tx = %LF \r\n",Tx_Buffer[k]);
    }   

    #endif
                #if 0
    /* &#188;ì2éD′è&#235;μ&#196;êy&#190;Yó&#235;&#182;á3&#246;μ&#196;êy&#190;Yê&#199;·&#241;&#207;àμè */
                TransferStatus1 = Buffercmp((void*)Tx_Buffer, (void*)Rx_Buffer, BufferSize);
               
                if( PASSED == TransferStatus1 )
                {   
                        printf("\r\n 8M′&#174;DDflash(W25Q64)2aê&#212;3é1|!\n\r");
                }
                else
                {        
                        printf("\r\n 8M′&#174;DDflash(W25Q64)2aê&#212;꧰ü!\n\r");
                }
    #endif
        }// if (FlashID == sFLASH_ID)
        else
        {   
                printf("\r\n &#187;&#241;è&#161;2&#187;μ&#189; W25Q64 ID!\n\r");
        }
       
        SPI_Flash_PowerDown();  
        while(1);  
}

/*
* oˉêy&#195;&#251;£oBuffercmp
* &#195;èê&#246;  £o±è&#189;&#207;á&#189;&#184;&#246;&#187;o3&#229;&#199;&#248;&#214;Dμ&#196;êy&#190;Yê&#199;·&#241;&#207;àμè
* ê&#228;è&#235;  £o-pBuffer1     src&#187;o3&#229;&#199;&#248;&#214;&#184;&#213;&#235;
*         -pBuffer2     dst&#187;o3&#229;&#199;&#248;&#214;&#184;&#213;&#235;
*         -BufferLength &#187;o3&#229;&#199;&#248;3¤&#182;è
* ê&#228;3&#246;  £o&#206;T
* ·μ&#187;&#216;  £o-PASSED pBuffer1 μèóú   pBuffer2
*         -FAILED pBuffer1 2&#187;í&#172;óú pBuffer2
*/
TestStatus Buffercmp(uint8_t* pBuffer1, uint8_t* pBuffer2, uint16_t BufferLength)
{
  while(BufferLength--)
  {
    if(*pBuffer1 != *pBuffer2)
    {
      return FAILED;
    }

    pBuffer1++;
    pBuffer2++;
  }
  return PASSED;
}

void Delay(__IO uint32_t nCount)
{
  for(; nCount != 0; nCount--);
}
/*********************************************END OF FILE**********************/


回复

使用道具 举报

发表于 2015-6-9 08:54:46 | 显示全部楼层
就是个标志位而已,没有实际意义的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-9-21 17:48 , Processed in 0.038198 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表