问题描述:

使用GD103系列,使用GD的bootloader例程和IAP 的USB在线升级工具,对app程序进行升级,app程序使用ST的标准库进行编写,app不加偏移地址时可以正常运行,但是加载偏移地址后,由bootloader进行跳入后程序跑飞或串口打印信息不对
原因:
ST的RCC_CFGR寄存器和RCU_CFG0寄存器有差异,如图5-1,ST的1821位最大倍频系数为9,而且第28位为保留位。GD的1821位最大分频系数为32,而且和第27位有关,GD的从29位起才是保留位,所以配置时要注意其它位的配置。客户使用GD的bootloader例程中系统时钟是96MHZ,即倍频系数为24Mhz,此时会将第27位置1,所以当跳转到app时,app使用的是ST的库,初始化系统时钟的时钟不能将这个位进行清楚,导致了后面的时钟配置倍频系数不是想要的,出现串口打印乱码或程序跑飞的现象;而直接运行app可行,是因为第27位默认为0.
---GD32F103---使用ST库开发IAP运行在GD32上,APP无法正常运行---GD32F103---使用ST库开发IAP运行在GD32上,APP无法正常运行
---GD32F103---使用ST库开发IAP运行在GD32上,APP无法正常运行

解决方案:

首先在进入APP程序时先将第27位进行清0.
---GD32F103---使用ST库开发IAP运行在GD32上,APP无法正常运行
---GD32F103---使用ST库开发IAP运行在GD32上,APP无法正常运行

相关文章:

  • 2021-12-13
  • 2022-01-14
  • 2022-03-09
  • 2021-11-08
  • 2021-12-03
  • 2021-07-16
  • 2021-12-29
  • 2021-12-04
猜你喜欢
  • 2022-01-03
  • 2021-11-23
  • 2021-05-02
  • 2022-12-23
  • 2021-09-02
  • 2022-01-01
  • 2022-02-20
相关资源
相似解决方案