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

来源:互联网 发布:药智网数据库vip 编辑:程序博客网 时间:2024/05/31 19:26

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路;