ddllxxrr 发表于 2020-10-6 09:16

【AT-START-F403A测评】四、“EEPROM”测试

<p>怎么十一过迷糊了????翻遍AT32F403的手册根本就找不到EEPROM的字样!!!</p>

<p>&nbsp;</p>

<p>EEPROM只有在51单片机上,特别是STC上有,且十分方便,其实质也是在FLASH里边虚拟一个EEPROM。那么这种技术用在STM32,也可以用在AT32F430上。</p>

<p>实际工作中可以省一片宝贵的EEPROM AT89C256。当然不适用于总是改写的程序,改写频的用这个也行,就是麻烦点。</p>

<p>下边分析一下例程:</p>

<p>每一种单片机对FLASH操作都是特别小心的。本例程对522扇区进行了跨两个扇区的操作,从1写到0x7FF。</p>

<p>写要费很多事,包括解锁完后写写完加锁。</p>

<p>读就用一个指针指到地址完后赋给变量就完事了。</p>

<p>以下是程序运行的结果:</p>

<p></p>

<p>为了实用我改了一下代码,只写前两个16位。程序如下:</p>

<pre>
<code>int main(void)
{

Delay_init();
UART_Print_Init(115200);       
AT32_LEDn_Init(LED2);                               
AT32_LEDn_Init(LED3);                                       

//Fill BufferWrite data to test
//for(Index=0;Index&lt;TEST_BUFEER_SIZE;Index++)
//{
//    BufferWrite=Index;
//}
#if 1      
          BufferWrite = 0x5555;
          BufferWrite = 0x6666;
          FLASH_Write(TEST_FLASH_ADDRESS_START,BufferWrite,2);                //Write data to flash
    FLASH_Read(TEST_FLASH_ADDRESS_START,BufferRead,2);           //read data from flash

if(Buffercmp(BufferWrite,BufferRead,2)==PASSED)      //Compare the buffer
{
    AT32_LEDn_ON(LED2);
    AT32_LEDn_OFF(LED3);   
                printf("%s","PASS");
}
else
{
    AT32_LEDn_OFF(LED2);
    AT32_LEDn_ON(LED3);
    printf("%s","NO PASS");               
}
#else
    FLASH_Read(TEST_FLASH_ADDRESS_START,BufferRead,2);           //read data from flash
#endif       

while(1)
{

}
}</code></pre>

<p>就是说写完后我再直接读一下看看是不是我写的0x5555,0x6666</p>

<p></p>

<p>可以看到不用指示灯用仿真可以看到写入的数据。</p>

<p>&nbsp;</p>

okhxyyo 发表于 2020-10-9 15:05

<p>雅特力AT-START-F403A测评汇总</p>

<p><a href="https://bbs.eeworld.com.cn/thread-1143018-1-1.html" target="_blank">https://bbs.eeworld.com.cn/thread-1143018-1-1.html</a></p>
页: [1]
查看完整版本: 【AT-START-F403A测评】四、“EEPROM”测试