内容纲要
不定期更新
Dr16接收问题
问题:
C板Dr16正常接收数据,能驱动电机运动。移植(原代码换芯片型号,没有用CubeMX重新生成)自研板后,DMA能接收到数据,Dr寄存器能接收数据,但是Dr16结构体数据全空,经检测,Dr16接收数据函数内的接收数据长度每次都不同。
尝试方法:
-
不换芯片,直接用C板芯片烧录
结果:接收数据长度有时会跳,但是都不够18 -
用CubeMx重新配置并移植工程
结果:接收数据长度稳定在11
-
用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
Comments NOTHING