zoukankan      html  css  js  c++  java
  • GD32移植记录

    1、首先我们拿到一份中继器的程序(基于GD32107rc)

    2、烧录到GD32芯片的中继器板,确认程序可以运行

    3、开始看Main函数,第一句话

    rcu_osci_on(RCU_IRC40K);//启动用于给看门狗的内部40KHz的时钟

    没有发现时钟配置函数,当前程序配置成多少主频率?

    4、查看启动函数;

    ;/* reset Handler */
    Reset_Handler PROC
    EXPORT Reset_Handler [WEAK]
    IMPORT __main
    IMPORT SystemInit
    LDR R0, =SystemInit
    BLX R0
    LDR R0, =__main
    BX R0
    ENDP

    从重置中断开始,

    这里一共就执行了两个函数,SystemInit和__main。所以SystemInit在重启中断中执行了。

    #elif defined (__SYSTEM_CLOCK_108M_PLL_HXTAL)
        system_clock_108m_hxtal();

    时钟是108M。

    5、修改这个工程为实现通用命令码的工程。主要工作:更新COMMCMD.c文件,配置CAN接口以及收发缓冲,达到可以收发命令;引入CAN2.c文件,实现通用命令码的回调函数;引入EEPROM.c文件,实现IIC读写;读芯片的UID(107rc的参考手册上有地址),并采用前6位(共有12位)作为模块序列号。

    6、从GD32库文件 的参考例程(\GD32F10x_Demo_Suites_V2.1.0\GD32107C_EVAL_Demo_Suites\Projects\12_SPI_SPI_Flash),拷贝gd25qxx.c和gd25qxx.h文件到工程里面,改为SPI.c,实现SPI1_Send_5Bytes(uint64_t data),和SPI2_Send_5Bytes(uint64_t data)函数,在主程序引用,测试TMC4671\TMC6200.

            SPITEST3 = SPI1_Send_5Bytes(0x0000000000);//读回来应该是"0x34363731"
            TMC6200_Reg.GCONF = SPI2_Send_5Bytes(0x0000000000);//读取TMC6200所有寄存器的值,应该不为0,也不全是FF
            TMC6200_Reg.GSTAT = SPI2_Send_5Bytes(0x0100000000);
            TMC6200_Reg.IOIN =SPI2_Send_5Bytes(0x0400000000);
            TMC6200_Reg.OTP_PROG =SPI2_Send_5Bytes(0x0600000000);
            TMC6200_Reg.OTP_READ =SPI2_Send_5Bytes(0x0700000000);
            TMC6200_Reg.FACTORY_CONF =SPI2_Send_5Bytes(0x0800000000);
            TMC6200_Reg.SHORT_CONF =SPI2_Send_5Bytes(0x0900000000);
            TMC6200_Reg.DRV_CONF =SPI2_Send_5Bytes(0x0a00000000);
  • 相关阅读:
    flask+Gunicorn+nginx部署
    配置Django实现数据库读写分离
    mysql分库分表
    python的反射
    flask-restful的使用
    spring源码(4)
    spring源码(3)
    spring源码(2)
    spring源码(1)
    tomcat8.5 配置数据源
  • 原文地址:https://www.cnblogs.com/heywei/p/15664067.html
Copyright © 2011-2022 走看看