ldc521 发表于 2024-6-7 18:40:20

新人求助!!STC8H8K64U,写入EEPROM失败

先贴代码

#define EEPROM_MOTOR_PAGE_BASE   (126 * EEPROM_PAGE_SIZE)//EEPROM扇区大小
#define EEPROM_PAGE_SIZE (0x200)



unsigned char buff;
unsigned char i = 0;
void debug(void)
{
        Memory_Read(EEPROM_MOTOR_PAGE_BASE,buff,200);
        for(i = 0 ; i < 200 ; i ++)
        {
                buff = i;
        }
        //擦出扇区
        Sector_Erase(EEPROM_MOTOR_PAGE_BASE);         //擦除扇区
        Memory_Write(EEPROM_MOTOR_PAGE_BASE,buff,200);
        Memory_Read(EEPROM_MOTOR_PAGE_BASE,buff,200);
        for(i = 0 ; i < 200 ; i ++)
        {
                Uart1_SendData(buff);
        }
}



串口打印结果如下:

接收←00 01 02 03 08 05 06 0F 08 11 0A 0B 1C 19 1E 1F
                  20 31 22 33 2C 25 2E 27 30 31 3A 33 3C 3D 3E 3F
                  40 41 42 43 44 45 46 4F 58 51 5A 57 5C 4D 5E 4F
                  60 71 62 63 6C 65 6E 67 70 79 7A 73 7C 7D 7E 7F
                  80 81 82 83 84 85 8E 87 90 99 92 9B 9C 9D 9E 8F
                  A0 B1 A2 A3 AC A5 AE AF B8 B1 BA B3 BC BD BE BF
                  C0 C1 C2 C3 C8 C5 C6 C7 D0 D9 D2 DB D8 DD DE DF
                  F0 E1 E2 E3 E4 ED EE F7 F0 F9 F2 FB FC FD FE FF
                  00 01 02 03 0C 05 06 07 10 19 0A 13 0C 1D 0E 1F
                  20 21 22 23 24 29 26 37 30 39 36 3B 3C 3D 3E 3F
                  40 41 46 43 44 4D 46 4F 48 51 5A 53 5C 59 5E 4F
                  60 71 62 63 6C 65 76 6F 78 71 7A 7B 7C 7D 7E 7F
                  80 81 82 83 84 8D 8E 87
接收←00 01 02 03 04 0D 06 0F 18 11 1A 13 1C 19 0E 1F
                  30 31 22 33 24 35 26 37 30 39 32 3B 3C 3D 3E 3F
                  40 41 42 43 44 49 46 4F 48 51 5A 53 5C 5D 5E 5F
                  60 61 62 73 64 75 66 77 70 79 72 7B 7C 7D 7E 7F
                  80 81 82 83 84 85 86 87 88 91 8A 93 8C 9D 9E 9F
                  A0 A1 A2 A3 AC A5 A6 AF B8 B1 BA B3 BC BD BE BF
                  C0 C1 C2 C3 C8 C5 CE C7 D0 D9 D2 DB DC DD DE DF
                  E0 E1 F2 E3 F4 F5 E6 F7 F0 F9 FA F3 FC F9 FE FF
                  00 01 02 03 04 0D 06 0F 10 09 12 0B 1C 1D 1E 1F
                  20 21 22 23 28 25 36 27 38 31 3A 3B 3C 3D 3E 3F
                  40 41 42 43 44 49 46 47 50 49 52 4B 5C 5D 5E 5F
                  60 61 72 63 74 69 66 6F 70 79 7A 73 7C 79 7E 7F
                  80 81 82 83 8C 8D 86 8F


逻辑代码还没写,只写了部分外设初始化的代码,操作时也关闭中断了,EA=0;实在找不到原因了,我怀疑是我写的东西太多了
Program Size: data=9.0 xdata=3014 code=55908

麻烦大佬们帮忙看下是什么原因导致的;
用官方例程写是没问题的

神农鼎 发表于 2024-6-7 19:34:12

126个扇区可以修改 ?
===63K 可以修改 ? 前 1K 不能修改


烧录时要设置 EEPROM 大小

ldc521 发表于 2024-6-8 14:09:31

神农鼎 发表于 2024-6-7 19:34
126个扇区可以修改 ?
===63K 可以修改 ? 前 1K 不能修改



可以改鼎哥,我设置的64K,第126个扇区是63K的起始地址;我今天调试的时候发现问题了;我在读取之前启动了我的一个串口定时发送,是在定时器里的,我把这个放在后面就可以了,我没想到是什么原因;

神农鼎 发表于 2024-6-8 14:38:48



STC8H8K64U, 64K全开放给 IAP修改,要特别注意
IAP 指向的地址 0000H, 就是实际的程序区 0000H了
===程序 0000H 就会被擦除/修改了

ldc521 发表于 2024-6-8 14:46:14

神农鼎 发表于 2024-6-8 14:38
STC8H8K64U, 64K全开放给 IAP修改,要特别注意
IAP 指向的地址 0000H, 就是实际的程序区 0000H了
===程序 ...

地址没问题的,我这边是从后往前操作的,126页是最后一K地址
页: [1]
查看完整版本: 新人求助!!STC8H8K64U,写入EEPROM失败