打印

STM32改写GD32

[复制链接]
194|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
STM103替换为GD103

\Eclipse产生的程序与原有程序的区别,下面直接切入正题,怎么修改程序。


图中黄色的为需要修改的文件。


使用特权

评论回复
沙发
发给她更好fh|  楼主 | 2024-1-31 20:23 | 只看该作者
先说基础文件:main函数,103库函数,stm32xx文件。这几个不用多说,直接替换成需要芯片的文件。

使用特权

评论回复
板凳
发给她更好fh|  楼主 | 2024-1-31 20:24 | 只看该作者
怎么替换,一个一个的删除,一个一个的复制粘贴进去就行。至于里面的报错的,修改成对应的文件就行,比如需要stm32f10x的h文件,已经删掉了,那就换成gd32f10x的h文件就行,一步一步来,一个一个的改。

使用特权

评论回复
地板
发给她更好fh|  楼主 | 2024-1-31 20:24 | 只看该作者
  再说下men启动文件。

里面重要的参数就2个,一个RAM,另一个是FLASH,这两个根据芯片的datasheet直接就能获取,比较简单。一个2000开头,一个800开头,其他的不用管。

使用特权

评论回复
5
发给她更好fh|  楼主 | 2024-1-31 20:24 | 只看该作者
    最后说下vector文件。也就是中断相量文件。
void __attribute__ ((weak, alias ("Default_Handler")))
WWDG_IRQHandler(void);
void __attribute__ ((weak, alias ("Default_Handler")))
PVD_IRQHandler(void);
void __attribute__ ((weak, alias ("Default_Handler")))
TAMPER_IRQHandler(void);
void __attribute__ ((weak, alias ("Default_Handler")))
RTC_IRQHandler(void);
void __attribute__ ((weak, alias ("Default_Handler")))
FLASH_IRQHandler(void);

extern unsigned int _estack;

typedef void
(* const pHandler)(void);

__attribute__ ((section(".isr_vector"),used))
pHandler __isr_vectors[] =
  {
      (pHandler) &_estack, // The initial stack pointer
      Reset_Handler, // The reset handler

      NMI_Handler, // The NMI handler
      HardFault_Handler, // The hard fault handler
      MemManage_Handler,                        // The MPU fault handler
      BusFault_Handler,                        // The bus fault handler
      UsageFault_Handler,                        // The usage fault handler
      0,                                        // Reserved
      0,                                        // Reserved
      0,                                        // Reserved
      0,                                        // Reserved
      SVC_Handler,                              // SVCall handler
      DebugMon_Handler,                         // Debug monitor handler
      0, // Reserved
      PendSV_Handler, // The PendSV handler
      SysTick_Handler, // The SysTick handler

      WWDG_IRQHandler, // Window WatchDog
      PVD_IRQHandler, // PVD through EXTI Line detection
      TAMPER_IRQHandler, // Tamper through the EXTI line
      RTC_IRQHandler, // RTC Wakeup through the EXTI line
      FLASH_IRQHandler, // FLASH
其实也是替换。前面是弱定义,后面是中断入口。这个是原来的文件。




使用特权

评论回复
6
发给她更好fh|  楼主 | 2024-1-31 20:24 | 只看该作者
将原有的启动文件,也就是startup.s文件打开。
__Vectors       DCD     __initial_sp               ; Top of Stack
                DCD     Reset_Handler              ; Reset Handler
                DCD     NMI_Handler                ; NMI Handler
                DCD     HardFault_Handler          ; Hard Fault Handler
                DCD     MemManage_Handler          ; MPU Fault Handler
                DCD     BusFault_Handler           ; Bus Fault Handler
                DCD     UsageFault_Handler         ; Usage Fault Handler
                DCD     0                          ; Reserved
                DCD     0                          ; Reserved
                DCD     0                          ; Reserved
                DCD     0                          ; Reserved
                DCD     SVC_Handler                ; SVCall Handler
                DCD     DebugMon_Handler           ; Debug Monitor Handler
                DCD     0                          ; Reserved
                DCD     PendSV_Handler             ; PendSV Handler
                DCD     SysTick_Handler            ; SysTick Handler

                ; External Interrupts
                DCD     WWDG_IRQHandler                   ; Window WatchDog                                       
                DCD     PVD_IRQHandler                                    
                DCD     TAMP_STAMP_IRQHandler            
                DCD     RTC_WKUP_IRQHandler               
                DCD     FLASH_IRQHandler                  ; FLASH                                          
                DCD     RCC_IRQHandler                    ; RCC
    里面的中断入口一个一个的复制过来,格式一样就行了。该有的就有,该是0的就是0,这个千万别移植错了。

    这样三个部分就一直成功了,编译下载就行了。下一篇文章我就专门用一个文件给大家一步一步的演示怎么修改,会出现什么错误,怎么解决。

    现在心理先有个谱,怎么改,改哪里。

使用特权

评论回复
7
发给她更好fh|  楼主 | 2024-1-31 20:25 | 只看该作者
2. STM32F407替换为STM32H750
    先看Eclipse产生的407程序结构,上篇文章已经详细介绍过103的了。

使用特权

评论回复
8
发给她更好fh|  楼主 | 2024-1-31 20:25 | 只看该作者
    代码结构和产生的103的差不多,只不过这个是基于HAL库的。再来看下需要修改的文件:

  其中黄色的为需要修改的文件。

    也分为两部分。

    第一部分:直接替换文件,main函数,407相关文件,HAL库文件。

    第二部分:修改文件,vector,和men的ld文件。

使用特权

评论回复
9
发给她更好fh|  楼主 | 2024-1-31 20:25 | 只看该作者
   怎么修改什么的,和上节一样,给小伙伴看看修改完之后是什么样子。


     上图的文件系统就是Eclipse里面的对应的文件,将407产生的直接替换成750的就好。改好之后就可以编译下载了。修改的地方也还是那两个,一个是中断向量表,从原有的工程的s文件一个一个弄过来就行,另一个就是mem.ld文件,直接修改下ram和flash的大小就好,起始地址不用修改,都是2000和800。

使用特权

评论回复
10
发给她更好fh|  楼主 | 2024-1-31 20:26 | 只看该作者
第三章:总结和展望
    整体来说,修改过程最后是比较简单,就是说的那几个地方,但是在自己修改过程中会遇到很多问题,不知道怎么处理,也不知道问题出在哪里。慢慢的会一点点的看,就知道哪里出问题,一点点的试着解决。还是那句话:一点一点的来,心平气和的,别害怕!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

416

帖子

1

粉丝