打印

关于GD与ST兼容遇到的问题

[复制链接]
2856|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yonglianli|  楼主 | 2015-8-29 18:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在用GDF103替换同系列的ST的CPU,程序不用做任何更改运行非常正常,但是当我替换我一个带BOOT的项目时就出现了问题,BOOT不能切换到应用入口,代码如下。

void quit(void)
{
       
        //FlashParamWrite(0);  //存储CpuSerial参数
       
        //FlashWriteProtectedEnable(); //在每次运行前就要检查是否加密
       
        if (((*(__IO uint32_t*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000)
    {
                /* Jump to user application */
                JumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4);
                Jump_To_Application = (pFunction) JumpAddress;
                /* Initialize user application's Stack Pointer */
                __set_MSP(*(__IO uint32_t*) ApplicationAddress);
                Jump_To_Application();
    }
}
如果这个问题能得到解决就好了,我不知道问题出在那里,请指点。
沙发
niuyaliang| | 2015-8-29 19:15 | 只看该作者
我在用GDF103替换同系列的ST的CPU,程序不用做任何更改运行非常正常,这句话就是错误的,两者的区别还是很大的。

使用特权

评论回复
板凳
niuyaliang| | 2015-8-29 19:17 | 只看该作者
BOOT0及BOOT1管脚在芯片复位时的电平状态决定了复位后从哪个区域开始执行程序。典型情况下, BOOT0需外接10K下拉电阻,就可
以从Flash启动。如BOOT0悬空,则不能从Flash启动。这是两者boot的区别。

使用特权

评论回复
地板
niuyaliang| | 2015-8-29 19:18 | 只看该作者
还有,两者flash算法文件,启动文件的不同,都可能影响代码。所以,最后用GD的库重新修改,不要使用STM32的。

使用特权

评论回复
5
黑夜的风| | 2015-8-30 10:13 | 只看该作者
你可以单步跟踪调试看看,程序跳到哪里了

使用特权

评论回复
6
justperky| | 2015-8-30 23:05 | 只看该作者
涉及到boot的启动,肯定不是直接复制过去就可以的。

使用特权

评论回复
7
styleno1| | 2015-8-31 08:59 | 只看该作者
俩MCU还是有差别的,不要觉得跑起来就算正常,应该做完整的测试

使用特权

评论回复
8
哆来咪| | 2015-8-31 18:06 | 只看该作者
楼上说得对,尤其是涉及到底层的这些东西,区别更大。

使用特权

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

本版积分规则

2

主题

2

帖子

0

粉丝