打印

GD32E230C8T6 代码移植中发现的问题

[复制链接]
3962|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
seanwu|  楼主 | 2021-1-19 17:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 seanwu 于 2021-1-19 17:02 编辑

我将STM32F030C8T6的代码(用STM32CubeMX生成的Keil 5.27 Project),编译的目标文件直接烧录到GD32E230C8T6不能运行。
查到几个问题:
1)        usart2 rs485初始化,一直不成功,问题在这里    if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_TEACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK),没有深入函数内。

2)进一步查发现systick在bootloader中工作正常,跳转到APP后,HAL_GetTick()总是返回值0;

3)去掉bootloader直接跑APP,systick工作正常,但是usart2 rs485初始化仍然不成功,没有深入查了

4)HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, (uint32_t)paddr, (uint64_t)prog_data) 不成功
,从资料上看到GD32E230不支持16位写,需要改为32位写,没有修改测试。

5)直接跑APP,usart2不用,Flash不写,其他代码工作正常,主要用到USART1( GD32E230的USART0)、IWDG、SysTick、DMA

大家有发现类似问题吗?我停几天再深入查

使用特权

评论回复
沙发
liangshuang95| | 2021-1-19 23:09 | 只看该作者
肯定是不能直接运行的

使用特权

评论回复
板凳
edyd| | 2021-1-20 10:27 | 只看该作者
不要想着这么用了,老老实实看参考手册,对比例程一点点移植吧。

使用特权

评论回复
地板
fuqinyyy| | 2021-1-20 12:32 | 只看该作者
直接拿来用肯定是不行的,得做一些更改。

使用特权

评论回复
5
seanwu|  楼主 | 2021-1-20 16:25 | 只看该作者
移植进展:
      HAL_FLASH_Program 改好了: HALFWORD 改为 WORD,STM32底层program基于HALFWORD;
      USART改好了:简单的去掉 UART_WaitOnFlagUntilTimeout( USART_ISR_TEACK ),没深入分析原因。STM32F030 RM0360文档中没有USART_ISR_TEACK 位的定义(Res)

      就剩下bootloader跳APP时systick问题了,也就是HAL_GetTick()问题
      还请大咖们支招!

使用特权

评论回复
6
seanwu|  楼主 | 2021-1-20 16:44 | 只看该作者
本帖最后由 seanwu 于 2021-1-20 16:52 编辑

移植进展:
        BootLoader跳转APP用SCB->VTOR方式,systick工作正常;
       原STM32F030代码用Remap SRAM方式。
       移植完后的稳定性,心里没底。

使用特权

评论回复
7
daichaodai| | 2021-1-20 18:57 | 只看该作者
感谢楼主分享经验

使用特权

评论回复
8
seanwu|  楼主 | 2021-1-21 09:18 | 只看该作者
本帖最后由 seanwu 于 2021-1-21 09:24 编辑

移植进展:
      进一步定位串口初始化问题,UART_WaitOnFlagUntilTimeout()在USART1初始化中调用没发生超时,在USART2初始化时USART_ISR_TEACK标识没问题,仅仅USART_ISR_REACK标识存在超时。     USART1工作模式为2线串口,USART2工作模式为RS485(硬件DE)。
     简单地忽略这个超时,USART2照样能工作。
     会是芯片的bug吗?没看到GD32E230的errata sheet。
            

使用特权

评论回复
9
seanwu|  楼主 | 2021-1-21 12:39 | 只看该作者
查看用户手册GD32E23x User Manual,USART0和USART1确实是有差异的,但不是在USART_ISR_REACK这个标识位上。
While USART0 is fully implemented, USART1 is only partially implemented with the following
features not supported.

使用特权

评论回复
10
CosOxygen| | 2021-10-1 19:35 | 只看该作者
你好,楼主。你那个boot跳转问题解决了吗?
因为某些原因,我用的是IAR做boot跳转调试时总是到跳转那一步总是回到原点重新开始。
我不调试,烧进去直接运行,又进不去jump_app函数

使用特权

评论回复
评论
CosOxygen 2021-10-1 19:37 回复TA
我的裸机所有功能都是ok的。 而且我移植STM32的boot,faultmask用不了。 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

33

帖子

1

粉丝