【AT-START-F403A测评】四、“EEPROM”测试
<p>怎么十一过迷糊了????翻遍AT32F403的手册根本就找不到EEPROM的字样!!!</p><p> </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<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> </p>
<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]