关于使用STM32的ECC如何纠正的问题,官方提供例程吗

[复制链接]
4572|3
 楼主| lixiaoxu2meng 发表于 2012-6-8 13:51 | 显示全部楼层 |阅读模式
本帖最后由 lixiaoxu2meng 于 2012-6-8 15:59 编辑

大家好,我最近想要使用STM32的ECC功能,看了数据手册也看了论坛里一些网友发的关于ECC的帖子,怎么配置STM32的ECC及获取ECC也有所了解,但是我想问下,如果发现ECC有一个位出错,如果实行矫正呢。ST有提供相应的例子与函数吗?在论坛上看见个网友发了
U8 STM32_ECC512Check(U32 ECCMem,U32 ECCNew,U8* Data)
{
        U32 ECCXOR,ERRBitPostion,i,CountOf1,ERRBytePostion;

        ECCXOR=(ECCMem^ECCNew)&0x00FFFFFF;
        //检验没有错误
        if(ECCXOR==0x00)                return 0x0;

        CountOf1=0;

        for(i=0;i<24;i++)
        {
                if((ECCXOR&(0x01<<i))!=0) CountOf1+=1;
        }

        ERRBytePostion=0;
        ERRBitPostion=0;
        //为可以校正的错误,进行错误校正
        if(CountOf1==12)
        {
                ERRBitPostion=((ECCXOR>>1)&0x01)|((ECCXOR>>2)&0x02)|((ECCXOR>>3)&0x04);
                ERRBytePostion=((ECCXOR>>7)&0x01)|((ECCXOR>>8)&0x02)|((ECCXOR>>9)&0x04)|((ECCXOR>>10)&0x08)|((ECCXOR>>11)&0x10)\
                        |((ECCXOR>>12)&0x20)|((ECCXOR>>13)&0x40)|((ECCXOR>>14)&0x80)|((ECCXOR>>15)&0x100);

                Data[ERRBytePostion]=Data[ERRBytePostion]^(1<<ERRBitPostion);
                return 0x01;
        }
        else return 0x03;                                
}
不知道这个是官网提供的吗 在哪里可以获得相关的函数?还是需要自己编写
 楼主| lixiaoxu2meng 发表于 2012-6-8 16:38 | 显示全部楼层
自己顶
 楼主| lixiaoxu2meng 发表于 2012-6-11 07:53 | 显示全部楼层
wenlibin 发表于 2012-6-13 08:34 | 显示全部楼层
项起来,围观。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:淡定,不以物喜,不以己悲。

0

主题

1679

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部