我为 EEPROM 制作了一个小驱动程序作为驱动程序在 GitHub 上不工作它给了我3错误未定义的符号 SysctlDelay ,,, 未定义的符号 Sysctlperipheralreset ,,,,,,,, 未定义的符号 main 
因此、我制作了自己的驱动程序、但在 Keil 上运行代码时出现了问题。EEPROM 基址寄存器和偏移寄存器始终指向同一存储器部分、这意味着、当我在寄存器 EEDRW 上写入时、它会改变并存储在存储器中 位置,但是当我在递增偏移和阻塞后重写它时,它不会更改内存部分,然后它会重写旧数据。这里是一份 mt 测试代码的副本。注意,有许多硬编码部分,因为 iam 测试注意:aslo i 在 Keil 中从模拟器中打开 systejm 查看器存储器1中的存储器
#include "tm4c123gh6p.h"
#包含
#define EE 0x00000
volatile uint32_t * hwreg_ptr;
空延迟(uint32_t n){
while (n>0){
N--;
}
}
void eeprom_wait_for_write (void){
while (EEPROM_EEDONE_R!=0x00);
}
void eeprom_wait_for_done (void){
while (EEPROM_EEDONE_R!=0x0);
}
uint32_t EEPROM_Init (){
延迟(6);
SYSCTL_RCGCEEPROM_R |= 0x01;
eeprom_wait_for_done();
while ((EEPROM_EESUPP_R 和0x0C)!= 0)
{
返回(-1);
}
SYSCTL_SREEPROM_R |= 0x01 ;
延迟(6);
while ((EEPROM_EESUPP_R 和0x0C)!= 0)
{
返回(-1);
}
eeprom_wait_for_done();
while ((EEPROM_EESUPP_R 和0x0C)!= 0)
{
返回(-1);
}
返回0;
}
void EEPROM_Write (char *数据、uint32_t 地址、uint32_t 字节)
{
uint32_t block= 0;
uint32_t offset =地址% 4;
uint32_t i;
uint32_t k = 0;
uint32_t 字=字节/4;
uint32_t Byte_Num = 4;
EEPROM_EEOFFSET_R =8;
EEPROM_EEBLOCK_R = 8;
EEPROM_EERDWR_R = EE;
for (i = 0;i <单词;i++){
if (offset =16)
{block ++;
偏移= 0;
}
for (k=0;k <= 3;k++)
{
EEPROM_EERDWR_R |= data[k];
延迟(10);
eeprom_wait_for_write ();
if (k!=(Byte_Num - 1)){
EEPROM_EERDWR_R = EEPROM_EERDWR_R<< 8;
}
}
eeprom_wait_for_write ();
偏移++;
EEPROM_EEOFFSET_R =偏移;
// 0x400A0000、0x400FFFFF
}
eeprom_wait_for_done();
延迟(10);
}
int main ()
{
uint32_t x = 0x400AFA12;
char myString[]="ABF";
EEPROM_Init();
EEPROM_Write (myString、x、8);
EEPROM_EERDWR_R = EE;
while (1){}
}
那么、您能帮我解决我使用 tm4c123gh6pm 时遇到的两个问题中的一个吗?