本文采用 8MHz 的晶振时钟,系统上电后默认为 8MHz,但 STM32 的系统时
钟最高为 72MHz,为提高系统的工作效率,经内部 PLL 锁相环模块把系统时钟提
高到 72MHz。其中系统初始化采用库函数 RCC_config()对时钟进行设置,初始化
电机主要初始化 GPIO 口,包括普通的 GPIO 口和 PWM 输出的 GPIO 口,首先对
电机使用到的外设时钟进行使能,接着配置 GPIO 端口的输入输出、速度等属性,
采用上拉电阻输入的输入模式和复用功能输出的模式,之后使用定时器初始化电
机的 PWM,通过控制 THB6128 芯片的 GPIO 引脚电平实现电机的驱动细分,最
后根据 S 型曲线初始化电机的运行参数对 XYZ 轴电机进行控制。
为提高指令接收的正确率,本文制定相关指令中包含 7 个字节,基本格式如:
{0xAA,0x55,0x01,0x01,0x0*,0x0*,0x00}。其中前两个字节为电机运行控制命令的起
始标志,第 3、4 个字节为有效命令位,第 5 个字节为电机运动的方向,第 6 个字
节为电机的圈数,第 7 个字节为结束标志位。当下位机接收到命令后,首先检查
获取到的前 2 个字节是否为 0xAA 和 0x55,判断接收到的是否为有效的指令,若
接收到的是有效的指令会根据第 3、4 位有效命令位解析出指令的意图;若接收到
的不是有效的指令,将该组数据丢弃。
|