Mark5 穿越机电调深度解析:设计、选型、控制与实战(下)

TIM_SetCompare3 (TIM1, T0 + T1 + T2); // W+​

break;​

case 3:​

// U - 导通,V - 导通,W + 导通​

TIM_SetCompare1 (TIM1, T0); // U-​

TIM_SetCompare2 (TIM1, T0); // V-​

TIM_SetCompare3 (TIM1, T0 + T1 + T2); // W+​

break;​

case 4:​

// U - 导通,V + 导通,W - 导通​

TIM_SetCompare1 (TIM1, T0); // U-​

TIM_SetCompare2 (TIM1, T0 + T1 + T2); // V+​

TIM_SetCompare3 (TIM1, T0); // W-​

break;​

case 5:​

// U + 导通,V - 导通,W - 导通​

TIM_SetCompare1 (TIM1, T0 + T1 + T2); // U+​

TIM_SetCompare2 (TIM1, T0); // V-​

TIM_SetCompare3 (TIM1, T0); // W-​

break;​

case 6:​

// U - 导通,V + 导通,W + 导通​

TIM_SetCompare1 (TIM1, T0); // U-​

TIM_SetCompare2 (TIM1, T0 + T1 + T2); // V+​

TIM_SetCompare3 (TIM1, T0 + T1); // W+​

break;​

default:​

// 异常情况:关闭所有 PWM 输出​

TIM_SetCompare1 (TIM1, 0);​

TIM_SetCompare2 (TIM1, 0);​

TIM_SetCompare3 (TIM1, 0);​

break;​

}​

// 配置互补通道(下桥臂 PWM,与上桥臂互补,避免上下桥臂直通)​

TIM_SetCompare1N (TIM1, Ts - TIM_GetCompare1 (TIM1)); // U-(互补于 U+)​

TIM_SetCompare2N (TIM1, Ts - TIM_GetCompare2 (TIM1)); // V-(互补于 V+)​

TIM_SetCompare3N (TIM1, Ts - TIM_GetCompare3 (TIM1)); // W-(互补于 W+)​

}​

​### 6.3 DShot完整代码(接收+解析)​

DShot接收需通过定时器输入捕获解析飞控发送的脉冲信号,需处理同步位识别、CRC校验与油门值提取,代码如下:​

```c​

// DShot接收全局变量​

uint8_t dshot_rx_buf[20] = {0}; // 存储20bit帧数据​

uint8_t dshot_rx_cnt = 0; // 接收bit计数​

uint16_t dshot_throttle = 0; // 解析后的油门值​

uint8_t dshot_rx_flag = 0; // 接收完成标志(1=完成)​

/**​

* @brief TIM2初始化(DShot接收:输入捕获模式)​

*/​

void DShot_RX_TIM_Init(void) {​

// 1. GPIO初始化(PA15=TIM2_CH1,输入模式)​

GPIO_InitTypeDef GPIO_InitStruct;​

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);​

GPIO_InitStruct.GPIO_Pin = GPIO_Pin_15;​

GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;​

GPIO_InitStruct.GPIO_PuPd = GPIO_Pu

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值