打印
[STM32L0]

STM32 L0 的EEPROM 的读写函数为什么写不进去啊?

[复制链接]
537|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
supernan|  楼主 | 2022-12-3 11:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#define EEPROM_BASE_ADDR        0x08000000        
#define EEPROM_BYTE_SIZE        0x0800  //¶¨ÒåEEPROMµÄÆðʼλÖúʹóС
#define PEKEY1        0x89ABCDEF                //FLASH_PEKEYR
#define PEKEY2        0x02030405                //FLASH_PEKEYR ½âËøÃüÁî
#define EN_INT              __enable_irq();         //ϵͳ¿ª¾ÖÖжÏ
#define DIS_INT             __disable_irq();        //ϵͳ¹Ø±ÕÈ«¾Ö

void EEPROM_ReadBytes(unsigned int Addr,char *Buffer, short Length)//°´ÕÕ×Ö½Ú¶Á³öEEPROMµÄÊý¾Ý
{
        char *wAddr;
        wAddr=(char *)(EEPROM_BASE_ADDR+Addr);
        while(Length--)
        {
                 *Buffer++=*wAddr++;
        }        
}

void EEPROM_WriteBytes(unsigned int Addr,char *Buffer,short Length)//°´ÕÕ×Ö½ÚÊý¾Ýдµ½EEPROM
{
        char *wAddr;
        wAddr=(char *)(EEPROM_BASE_ADDR+Addr);
        DIS_INT
        FLASH->PEKEYR=PEKEY1;                    //unlock
        FLASH->PEKEYR=PEKEY2;
        while(Length--)
        {
                *wAddr++=*Buffer++;
                while(FLASH->SR&FLASH_SR_BSY);
        }
        FLASH->PECR|=FLASH_PECR_PELOCK;
        EN_INT
}
为什么写不进去啊?

使用特权

评论回复
沙发
xxrs| | 2022-12-3 11:36 | 只看该作者
EEPROM的基地址好像不对,你查下datasheet看看吧

使用特权

评论回复
板凳
renyaq| | 2022-12-3 11:44 | 只看该作者
/*------------------------------------------------------------
Func: EEPROM  Read
Note:
-------------------------------------------------------------*/  
void EEPROM_Read(uint16_t Addr,uint8_t *Buffer,uint16_t Length)  
{  
    uint8_t *wAddr;  
                HAL_FLASHEx_DATAEEPROM_Unlock();
    wAddr=(uint8_t *)(DATA_EEPROM_BASE+Addr);  
    while(Length--){  
        *Buffer++=*wAddr++;  
                HAL_FLASHEx_DATAEEPROM_Lock();
    }     
}



/*------------------------------------------------------------
Func: EEPROM Write
Note:
-------------------------------------------------------------*/  
void EEPROM_Write(uint16_t WriteAddr,uint8_t *pBuffer,uint16_t NumToWrite)  
{  
    uint16_t t;  
    HAL_FLASHEx_DATAEEPROM_Unlock();      
    for(t = 0;t < NumToWrite;t++)  
    {  
        HAL_FLASHEx_DATAEEPROM_Program(FLASH_TYPEPROGRAMDATA_BYTE,DATA_EEPROM_BASE + WriteAddr + t,*(pBuffer + t));  
    }  
    HAL_FLASHEx_DATAEEPROM_Unlock();  
}  

使用特权

评论回复
地板
huangchui| | 2022-12-3 11:46 | 只看该作者
有用,谢谢

使用特权

评论回复
5
zwll| | 2022-12-3 11:47 | 只看该作者
EEPROM的基地址不对是吗?

使用特权

评论回复
6
llljh| | 2022-12-3 11:49 | 只看该作者
所以是什么错误啊 我没看出来哪里有问题

使用特权

评论回复
7
supernan|  楼主 | 2022-12-3 11:52 | 只看该作者
搞定了,呵呵,犯了低级错误……

使用特权

评论回复
8
Clyde011| | 2024-11-8 07:32 | 只看该作者

首先是进行按比例和具体的施胶量进行混合操作

使用特权

评论回复
9
公羊子丹| | 2024-11-8 08:25 | 只看该作者

将在原边形成电压尖峰,

使用特权

评论回复
10
Uriah| | 2024-11-8 10:31 | 只看该作者

该电容可以存储高达8KV的电位

使用特权

评论回复
11
Bblythe| | 2024-11-8 13:30 | 只看该作者

环氧树脂、聚胺脂、有机硅灌封胶

使用特权

评论回复
12
周半梅| | 2024-11-8 15:26 | 只看该作者

保护被保护IC或线路

使用特权

评论回复
13
Pulitzer| | 2024-11-8 16:29 | 只看该作者

电源模块的灌封用的胶是可以根据需求而调制的

使用特权

评论回复
14
童雨竹| | 2024-11-8 18:25 | 只看该作者

所以不会通过地损耗

使用特权

评论回复
15
Wordsworth| | 2024-11-8 19:28 | 只看该作者

相当于积分,用于滤波

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

730

主题

10412

帖子

6

粉丝