C板移植自研板过程中遇到的一些问题和解决方案

发布于 2023-09-13  375 次阅读


内容纲要

不定期更新

Dr16接收问题

问题:

C板Dr16正常接收数据,能驱动电机运动。移植(原代码换芯片型号,没有用CubeMX重新生成)自研板后,DMA能接收到数据,Dr寄存器能接收数据,但是Dr16结构体数据全空,经检测,Dr16接收数据函数内的接收数据长度每次都不同。

尝试方法:

  1. 不换芯片,直接用C板芯片烧录
    结果:接收数据长度有时会跳,但是都不够18

  2. 用CubeMx重新配置并移植工程

    结果:接收数据长度稳定在11

  1. 用CubeMX更改为能运行代码的时钟树

    原时钟树:

更改后时钟树(还可优化)

结果:

问题解决,可以运行。

用CubeMx重新配置后出现移植后出现arm.math.h报错

问题:

报错显示:

#error "Define according the used Cortex core ARM_MATH_CM7,
ARM_MATH_CM4, ARM_MATH_CM3, ARM_MATH_CM0PLUS or ARM_MATH_CM0"

D:\MDK515\ARM\PACK\ARM\CMSIS\4.3.0\CMSIS\Include\arm_math.h(306): error:  
#35: #error directive: "Define according the used Cortex core 
ARM_MATH_CM7, ARM_MATH_CM4, ARM_MATH_CM3, ARM_MATH_CM0PLUS or 
ARM_MATH_CM0"

尝试方法:

1、在Options for target(魔术棒)——$C/C++$——define加入ARM_MATH_CM4

结果:

变为9error,7warning

2、在Include Paths里添加路径

结果:

换成了另外两个error

3、在Options for target(魔术棒)——$C/C++$——define加入__CC_ARM, TARGET_FPU_VFP,FPU_PRESENT

结果:3error,45warning

4、回退为第二步,在Options for target(魔术棒)——$C/C++$——define加入__FPU_PRESENT=1U

结果:变为3error,4warning

简单处理代码本身BUG后变为

5、在主面板左边随便找个文件夹加入这个:

路径一般在\Drivers\CMSIS\Lib\ARM里


结果:0error,0warning

世界のネズミは彼らが望むものに依存し、彼らは彼ら自身から誰も求めません
最后更新于 2023-11-25