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);
  • 相关阅读:
    OnClose()和 OnDestroy()
    非计算机专业人员如何成为专业人员的学习之路
    【轉】白话文、简化字白化了文化,简化了思想
    【轉】研制汉字计算机的意义和可能性
    【轉】智慧的辨思:最优秀的语种 汉语
    安卓命令行操作备忘
    virtualbox 安装 android 经验总结
    【转】HTML5 LocalStorage 本地存储
    iOS开发之 获取手机的网络的ip地址
    iOS开发之 Xcode 6 创建一个Empty Application
  • 原文地址:https://www.cnblogs.com/heywei/p/15664067.html
Copyright © 2011-2022 走看看