原创 新唐的M058固件库里居然有这种低级bug...

2015-5-2 23:16 1270 4 5 分类: MCU/ 嵌入式 文集: 单片机

劳动节闲在家,翻腾出不久前买的新唐M058SSAN评估板,用固件库写了个demon,居然百试不得运行,进仿真,发现卡在 SYS_UnlockReg(); 这个函数里,函数内容如下:    while(SYS->REGWRPROT != SYS_REGWRPROT_REGPROTDIS_Msk)

    {
        SYS->REGWRPROT = 0x59;
        SYS->REGWRPROT = 0x16;
        SYS->REGWRPROT = 0x88;
    }
之后进一步发现,官方居然把SYS->REGWRPROT这个寄存器偏移地址弄错了,难怪不行。找到原因之后修改这个函数的内容如下:
        register uint32_t reg_addr, nmb1, nmb2, nmb3;
        
        reg_addr = 0x50000100;
        nmb1 = 0x59;
        nmb2 = 0x16;
        nmb3 = 0x88;
                
        __ASM("STR nmb1, [reg_addr]");
        __ASM("STR nmb2, [reg_addr]");
        __ASM("STR nmb3, [reg_addr]");
 
流水灯欢快的跑了起来,哈哈,哈哈哈~

PS:鄙视下新唐。
PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户377235 2015-5-29 13:15

请问下这个函数SYS_UnlockReg(),是定义在哪里了呢?我找半天没找到,是定义在基础库里面了么?
相关推荐阅读
我要评论
1
4
关闭 站长推荐上一条 /3 下一条