打印

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

[复制链接]
3264|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

粉丝