STM32移植到GD32的问题---20170923

1、GD32采用ADC同步注入方式时,需要同时配置ADC1和ADC2;

但是只有当ADC时钟分频为6时,才可以执行;大于分频6时,程序会卡死在ADC_GetBitState(ADC1,ADC_FLAG_EOIC)中;

2、ADC1和ADC2同步注入时,出现ADC2通道的采样值一直为零。 

需要同时对ADC1和ADC2同时都配置,才能够采样的。(再对硬件板子重新焊接之后就好了)

2.1 利用TIM1的TRGO触犯ADC的采样,TIMER_RepetitionCounter参数设置为1,但是实际触发频率是3个PWM触发一次ADC采样

实际测试条件:内部时钟64MHZ,ADC时钟6分频(对应的ADC的时钟频率不为整数),TIM1不分频;

       问题解决:改变ADC的时钟频率,使得其为整数,即可实现一次PWM周期触发ADC采样一次;

2.2 关于利用TIM1的TRGO和CH4通道触发ADC的同步采样,有时候会出现不能触发采样的问题(ADC->STR = 0X0012)

1)利用TRGO触发ADC采样

TIM1分频为8、1和0,ADC分频为4;------仍然会出现有时候不能触发ADC采样的问题

2)利用CH4通道触发

TIM1分频为0,ADC分频为4;------仍然会出现有时候不能触发ADC采样的问题

TIM1分频为8和1,ADC分频为4;------不会出现该问题

3、GPIO_DeInit(GPIOB);函数初始化,只能在第一次使用,如果在初始化相关的IO口,再次使用GPIO_DeInit(GPIOB)该函数,会导致之前配置的IO出现问题。

4、GD32的串口配置加上ADC配置之后的函数,容易出现ORE过载错误,导致无法进入中断。

USART_DataSend(USART3, *Data++);
while(USART_GetBitState(USART3, USART_FLAG_TC)==ERROR){};顺序改为这个就可以正常发送数据了。

5、注意bool类型的定义,否则会导致定义的变量数值不对。

6、读取Hall信号的IO口时,发现输入IO口的信号存在中间阶梯的情况,导致读取信号不对

芯片引脚虚焊导致的该问题。

 

7、同样的简单测试程序GD32和ST32完全兼容的芯片移植时,需要重新选择芯片配置(在主菜单中打开Flash->Configure Falsh Tools配置窗口,切换到“Utilities"页。按“Setting"按钮进入“Flash download setup"配置窗口,然后一路按“OK”按钮退出配置窗口在“Flash download setup"配置窗口点击“Add”按钮进入“Add Flash Programming Algorlthm"窗口在“Add Flash Programming Algorlthm"窗口),否则会出现“”Error: Flash Download Failed-"Cortex-M3" “”下载烧录错误。

8、GD32F130C8T6和GD32F103C8T6的区别---20171013

1)二者开发时,所用的固件开发库是不一样的()。

        2)芯片的时钟频率(48MHZ和108MHZ)也不一样,Flash和SRAM大小也不一样;

3)芯片的引脚35、36不一样(F130:PF6、PF7【I2C2_SCL、I2C2_SDA】;F103:VSS2、VDD2)

4)芯片的引脚2、10复用的功能不一样的

5)F130中含有1个ADC,最多只能采样4路;F103中含有2个ADC,最多只能采样8路;

9、采用ST的V3.50的库开发时,一定要勾选Use MicroLIB,否则会出现无法进入Main函数

  • 5
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
STM32F4 和 GD32F4 都是基于ARM Cortex-M4内核的微控制器系列,因此在移植这两个系列之间不会涉及到太多的硬件和指令集方面的差异。所以可以通过以下步骤将STM32F4移植GD32F4上: 1. 开发环境的准备:首先,需要下载并安装GD32的开发工具链和开发板的驱动程序,可在官方网站上获取。然后,将原来为STM32F4编写的代码和工程文件导入到GD32的开发环境中。 2. 底层驱动的替换:由于GD32F4和STM32F4在外设控制器的寄存器映射和配置上可能有一些差异,需要修改底层驱动层的相关代码。替换原来的STM32外设驱动代码为GD32外设驱动代码,并根据GD32的数据手册调整相关寄存器的配置。 3. 系统时钟的配置:STM32GD32的系统时钟配置方式可能有所不同,需要根据GD32的数据手册重新配置系统时钟。通常情况下,GD32的时钟配置方式与STM32相似,可以通过修改相关寄存器的值来实现。 4. 中断和中断向量表的处理:GD32的中断向量表可能与STM32不同,需要根据GD32的数据手册进行相应的修改。另外,如果在工程中使用了中断,需要将原来的中断服务函数与新的中断向量表进行对应。 5. 硬件资源的适配:GD32开发板上的引脚配置和STM32开发板上的可能有一些差异,需要根据实际情况进行适配。可以通过修改引脚映射和配置文件来实现。 6. 编译、调试和测试:进行移植后,需要重新编译和链接工程,并通过调试工具对代码进行调试。同时,还需要进行严格的测试来确保软硬件的兼容性和正常运行。 需要注意的是,尽管STM32F4和GD32F4在硬件和指令集上非常相似,但仍然存在一些差异和不兼容性。因此,在移植过程中需要仔细检查和调试代码,确保系统的稳定性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值