网站如何实现多语言,做国外网站做什么内容,东莞网站建设设计,做网页的工具导言 如上图所示#xff0c;进入SimpleFOC官网#xff0c;点击Github下载源代码。 如上图所示#xff0c;找到仓库。 comom代码的移植后#xff0c;simpleFOC的移植算是完成一大半。simpleFOC源码分为如下5个部分#xff0c;其中communication是跟simpleFOC上位机通讯进入SimpleFOC官网点击Github下载源代码。 如上图所示找到仓库。 comom代码的移植后simpleFOC的移植算是完成一大半。simpleFOC源码分为如下5个部分其中communication是跟simpleFOC上位机通讯暂时不打算使用忽略它
common(数学工具、关键类)communicationsimpleFOC上位机simpleFOC上位机通讯暂时不打算使用没必要移植。current_sensor电流传感器simpleFOC官方使用过的开发板一般我们都要根据自己的开发板重新写重新调。drivers驱动器三相逆变电路simpleFOC官方使用过的开发板一般我们都要根据自己的开发板重新写重新调。sensors位置编码器simpleFOC官方使用过的编码器驱动程序一般我们都要根据自己的项目重新写重新调。BLDCMotor.cpp与BLDCMotor.h核心的FOC算法如帕克变换、SVPWM算法等
项目源码:https://github.com/q164129345/MCU_Develop/tree/main/simplefoc01_stm32f103
一、移植 1.1、Arduino-FOC/src/common 如上所示simpleFOC源码一共包含上述这些模块。 如上所示将simplefoc源码的src/common的代码移植到stm32f103项目上。
1.2、SEGGER_RTT
参考博文SEGGER | 基于STM32F405 Keil - RTT组件01 - 移植SEGGER RTT 用于调试log打印也可以用于替代Arduino库的print()。
1.3、DWT计时器 如上图所示dwt_timer.c是我自己编写的DWT定时器驱动代码目的
提供us级的延时替代Arduino提供的delayMicroseconds()提供us级的时间戳完成time_utils.cpp里的_micro()
1.4、C环境 simpleFOC使用C语言编写然后.c代码不能调用.cpp代码里的函数。创建user_main.cpp与user_main.h的目的是实现C环境的跳转。 有空的小伙伴可以试试在main.c里调用time_tuils.cpp的_micros()函数试试会出现编译错误。其原因就是.c代码不能调用.cpp的代码。
二、Keil 三、代码 3.1、main.h 3.2、main.c 3.3、user_main.cpp 代替main.c的while(1)死循环。
3.4、user_main.h 3.5、foc_utils.h 3.6、foc_utils.cpp 3.7、FOCMotor.h 3.8、FOCMotor.cpp 3.9、BLDCDriver.h 3.10、Sensor.h 3.11、time_utils.cpp 四、调试代码 到目前为止暂时只能调试time_utils.cpp的功能time_utils.cpp为simpleFOC提供精确的时间戳与时间延时非常重要。
4.1、编译 通过第三章节的处理解决所有代码的报错最终编译成功。
4.2、使用RTT Viwer调试