Exemplo n.º 1
0
/*=====================================================================================================*/
int main( void )
{
  SystemInit();
  GPIO_Config();

  LED_R = 0;
  if(KEY_WU == 1) {
    Flash_ErasePage(FLASH_PAGE_ADDR(60));
    Delay_10ms(100);
  }
  LED_R = 1;

  while(1) {
    LED_R = ~LED_R;
    Delay_10ms(10);
    if(KEY_BO == 1) { // Write Flash
      Flash_WritePageU8(FLASH_PAGE_ADDR(60), WriteData, 1024);
      if(CmpArr_U8(WriteData, ReadData, 1024) == SUCCESS)
        LED_G = 0;
    }
    if(KEY_WU == 1) { // Read Flash
      Flash_ReadPageU8(FLASH_PAGE_ADDR(60), ReadData, 1024);
      if(CmpArr_U8(WriteData, ReadData, 1024) == SUCCESS)
        LED_B = 0;
    }
  }
}
/*=====================================================================================================*/
int main( void )
{
  HAL_Init();
  GPIO_Config();

#if FLASH_RW_U8
  Flash_ErasePages(FLASH_PAGE_ADDR(WRITE_PAGE), 1);
  Flash_WritePageU8(FLASH_PAGE_ADDR(WRITE_PAGE), WriteDataU8, 1024);
  Flash_ReadPageU8(FLASH_PAGE_ADDR(WRITE_PAGE), ReadDataU8, 1024);
  if(Cmp_ArrU8(WriteDataU8, ReadDataU8, 1024) != SUCCESS)
    LED_0_Reset;
#endif

#if FLASH_RW_U16
  Flash_ErasePages(FLASH_PAGE_ADDR(WRITE_PAGE), 1);
  Flash_WritePageU16(FLASH_PAGE_ADDR(WRITE_PAGE), WriteDataU16, 512);
  Flash_ReadPageU16(FLASH_PAGE_ADDR(WRITE_PAGE), ReadDataU16, 512);
  if(Cmp_ArrU16(WriteDataU16, ReadDataU16, 512) != SUCCESS)
    LED_1_Reset;
#endif

#if FLASH_RW_U32
  Flash_ErasePages(FLASH_PAGE_ADDR(WRITE_PAGE), 1);
  Flash_WritePageU32(FLASH_PAGE_ADDR(WRITE_PAGE), WriteDataU32, 256);
  Flash_ReadPageU32(FLASH_PAGE_ADDR(WRITE_PAGE), ReadDataU32, 256);
  if(Cmp_ArrU32(WriteDataU32, ReadDataU32, 256) != SUCCESS)
    LED_2_Reset;
#endif

  while (1) {
    GPIO_A_Toggle;
    Delay_100ms(1);
  }
}
Exemplo n.º 3
0
/*====================================================================================================*/
int main( void )
{
  GPIO_Config();

#if FLASH_RW_U8
  Flash_ErasePage(FLASH_PAGE_ADDR(60));
  Flash_WritePageU8(FLASH_PAGE_ADDR(60), WriteDataU8, 1024);
  Flash_ReadPageU8(FLASH_PAGE_ADDR(60), ReadDataU8, 1024);
  LED_R = (Cmp_ArrU8(WriteDataU8, ReadDataU8, 1024) == SUCCESS) ? 0 : 1;
#endif

#if FLASH_RW_U16
  Flash_ErasePage(FLASH_PAGE_ADDR(60));
  Flash_WritePageU16(FLASH_PAGE_ADDR(60), WriteDataU16, 512);
  Flash_ReadPageU16(FLASH_PAGE_ADDR(60), ReadDataU16, 512);
  LED_G = (Cmp_ArrU16(WriteDataU16, ReadDataU16, 512) == SUCCESS) ? 0 : 1;
#endif

#if FLASH_RW_U32
  Flash_ErasePage(FLASH_PAGE_ADDR(60));
  Flash_WritePageU32(FLASH_PAGE_ADDR(60), WriteDataU32, 256);
  Flash_ReadPageU32(FLASH_PAGE_ADDR(60), ReadDataU32, 256);
  LED_B = (Cmp_ArrU32(WriteDataU32, ReadDataU32, 256) == SUCCESS) ? 0 : 1;
#endif

  Delay_100ms(10);
  while(1) {
    LED_R = !LED_R;
    LED_G = !LED_G;
    LED_B = !LED_B;
    Delay_100ms(1);
  }
}
Exemplo n.º 4
0
Arquivo: flash.c Projeto: Abioy/orp
void flash_read_page(size_t bank, size_t page)
{
    uint8_t* ptr = FLASH_CTRL_ADDR;
    size_t i;

    /* Return cached result if applicable */
    if(flash_current_bank == bank && flash_current_page == page)
        return;

    /* Drop cache */
    flash_current_bank = -1;
    flash_current_page = -1;
    
    /* wait for pending to complete */
    while(FLASH_IS_BUSY);    

    /* Initiate read of page */
    *FLASH_REG_READ_PAGE = (uint32_t)FLASH_PAGE_ADDR(bank, page);

    /* wait for read to complete */
    while(FLASH_IS_BUSY);

    /* Copy to buffer */ 
    for(i=0; i<sizeof(flash_scratch_page); i+=4)
        *((uint32_t*)(flash_scratch_page+i)) = *((uint32_t*)(ptr+i));

    /* Update cache info */
    flash_current_bank = bank;
    flash_current_page = page;
}
Exemplo n.º 5
0
Arquivo: flash.c Projeto: Abioy/orp
void flash_flush_page(size_t bank, size_t page)
{
    uint8_t* ptr = FLASH_CTRL_ADDR;
    size_t i;

    /* wait for pending to complete */
    while(FLASH_IS_BUSY);    

    /* no caching on writes */

    for(i=0; i<sizeof(flash_scratch_page); i+=4)
        *((uint32_t*)(ptr+i)) = *((uint32_t*)(flash_scratch_page+i));

    *FLASH_REG_WRITE_PAGE = (uint32_t)FLASH_PAGE_ADDR(bank, page);

    /* wait for read to complete */
    while(FLASH_IS_BUSY);    
}
Exemplo n.º 6
0
/*====================================================================================================*/
int main( void )
{
  GPIO_Config();

#if FLASH_RW_U8
  Flash_ErasePage(FLASH_PAGE_ADDR(FLASH_RW_PAGE));
  Flash_WritePageU8(FLASH_PAGE_ADDR(FLASH_RW_PAGE), WriteDataU8, FLASH_RW_SIZE);
  Flash_ReadPageU8(FLASH_PAGE_ADDR(FLASH_RW_PAGE), ReadDataU8, FLASH_RW_SIZE);
  if(Cmp_ArrU8(WriteDataU8, ReadDataU8, FLASH_RW_SIZE) == SUCCESS)
    LED_R_Reset;
  else
    LED_R_Set;
#endif

#if FLASH_RW_U16
  Flash_ErasePage(FLASH_PAGE_ADDR(FLASH_RW_PAGE));
  Flash_WritePageU16(FLASH_PAGE_ADDR(FLASH_RW_PAGE), WriteDataU16, FLASH_RW_SIZE >> 1);
  Flash_ReadPageU16(FLASH_PAGE_ADDR(FLASH_RW_PAGE), ReadDataU16, FLASH_RW_SIZE >> 1);
  if(Cmp_ArrU16(WriteDataU16, ReadDataU16, FLASH_RW_SIZE >> 1) == SUCCESS)
    LED_G_Reset;
  else
Exemplo n.º 7
0
    LED_R_Set;
#endif

#if FLASH_RW_U16
  Flash_ErasePage(FLASH_PAGE_ADDR(FLASH_RW_PAGE));
  Flash_WritePageU16(FLASH_PAGE_ADDR(FLASH_RW_PAGE), WriteDataU16, FLASH_RW_SIZE >> 1);
  Flash_ReadPageU16(FLASH_PAGE_ADDR(FLASH_RW_PAGE), ReadDataU16, FLASH_RW_SIZE >> 1);
  if(Cmp_ArrU16(WriteDataU16, ReadDataU16, FLASH_RW_SIZE >> 1) == SUCCESS)
    LED_G_Reset;
  else
    LED_G_Set;
#endif

#if FLASH_RW_U32
  Flash_ErasePage(FLASH_PAGE_ADDR(FLASH_RW_PAGE));
  Flash_WritePageU32(FLASH_PAGE_ADDR(FLASH_RW_PAGE), WriteDataU32, FLASH_RW_SIZE >> 2);
  Flash_ReadPageU32(FLASH_PAGE_ADDR(FLASH_RW_PAGE), ReadDataU32, FLASH_RW_SIZE >> 2);
  if(Cmp_ArrU32(WriteDataU32, ReadDataU32, FLASH_RW_SIZE >> 2) == SUCCESS)
    LED_B_Reset;
  else
    LED_B_Set;
#endif

  Delay_100ms(10);
  while(1) {
    LED_R_Toggle;
    LED_G_Toggle;
    LED_B_Toggle;
    Delay_100ms(1);
  }
}