• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

ST的程序移植到GD无法运行

一笔之名也 2017-09-09 浏览量:3502
是按GD的说明进行了移植,但是程序无法运行,只是个LED的程序,LED没有反应啊。
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案

其他答案 数量:10
  • 除了103的可以通用外,其他的都不行,寄存器,io,串口的配置都不一样的
    • 发布于2017-09-10
    • 举报
    • 评论 0
    • 1
    • 0

  • 主要就是时钟的配置,其他的应该是通用的。
    • 发布于2017-09-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 楼主,你是代码移植还是工程移植的?代码移植应该没得问题的,只移植LED部分;工程移植需要注意系统的初始化代码,始终、中断源等问题;简易楼主这么做:使用你原来可以使用的GD的工程,然后再加入应用。
    • 发布于2017-09-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 你怎么移植的,移植过程中报什么错?
    • 发布于2017-09-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 检查外设时钟是否开启,系统时钟设置正确吗。
    • 发布于2017-09-10
    • 举报
    • 评论 0
    • 0
    • 0

  • io号是不是串了?至少应该能点亮的啊。

    我不小心连点了,这段话是后来编辑加上的

    • 发布于2017-09-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 基本上一定沒有完全兼容

    底層函數應該有所差異

    您可以把應用層的Code移植

    底層用GD的創建,在修改其對應的函數

    這樣最保險


    • 发布于2017-09-10
    • 举报
    • 评论 0
    • 0
    • 0

  • GD32与STM32只是引脚封装完全兼容,程序是需要修改的

    GD32 与STM32 启动时间都是2ms,实际上GD 的执行效率快,所以ST 的HSE_STARTUP_TIMEOUT ((uint16_t)0x0500)是2ms,但是这个宏定义值在GD 上时间就更加短了,所以要加大这个值的设置。

        解决方法:将宏定义:

    #define HSE_STARTUP_TIMEOUT ((uint16_t)0x0500)

    修改为:

    #define HSE_STARTUP_TIMEOUT ((uint16_t)0xFFFF)


    • 发布于2017-09-10
    • 举报
    • 评论 0
    • -1
    • 0

  • 使用STM32的芯片的朋友,可以很方便的将移植到GD32上面,下面就具体移植过程分享一下:
    整个移植过程可以分为硬件和软件两个方面。
    硬件方面:
    首先要确定先前所使用ST芯片的flash大小和管脚数量,然后替换成GD相同大小Flash和管脚数量的芯片。
    简单来说就是STM32F103xxxx替换成GD32F103xxxx。
    GD和ST的命名规则相同。
    软件方面:
    以Keil开发环境为例,打开头文件“stm32f10x.h”
    找到定义
    #define HSE_STARTUP_TIMEOUT ((uint16_t)0x0500)
    替换为
    #define HSE_STARTUP_TIMEOUT ((uint16_t)0xFFFF)
    重新编译一下即可。
    如果使用的是IAR开发环境,可以参考下面的文档说明中的方法修改

    需要注意的地方:
    硬件方面,硬件不需要做任何改动,ST的芯片对32.768K的晶振要求是6pF负载的,这个价格比较高,而且不太好买,GD的芯片则没有这个要求。可以方便采购而且能进一步降低成本。
    软件方面,由于GD独有的技术,是芯片执行速度提高,因此如果用软件上的for循环或while循环做精确定时的,定时时间会由于代码执行速度加快而使循环的时间变短。
    • 发布于2017-09-10
    • 举报
    • 评论 0
    • -1
    • 0

相关问题

问题达人换一批

ST的程序移植到GD无法运行