用富斯i6遥控器控制船

本文介绍了使用富斯i6遥控器通过接收器FS-iA6控制STM32驱动电机的过程。首先,详细阐述了整体思路,包括遥控器发送指令,STM32解析PWM并调整后传递给L298N驱动电机。接着,讲解了富斯i6遥控器的刷机到十通道操作和模拟器使用。在CubeMX配置部分,涉及了时钟、串口、输入捕获、PWM输出等配置。在程序设计中,重点讨论了printf重映射、脉冲捕获和PWM输出的实现,并提供了相关代码和遥控器配置的调整。最后,展示了实操视频和代码下载链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一.整体思路

富斯i6遥控器发送指令

接收器接收->stm32解析接收器接受的pwm波形->stm32调整pwm并传给L298N->驱动电机
(这里使用的接收器是FS-iA6,没有PPM输出只有PWM输出)

二.富斯i6遥控器

1.富斯i6刷十通道

参考资料: https://www.moz8.com/forum.php?mod=viewthread&tid=63118

软件及固件下载

链接:https://pan.baidu.com/s/1mYgsdUY5MKstdEMBARQfIw 
提取码:6666 
复制这段内容后打开百度网盘手机App,操作更方便哦

2.富斯i6玩模拟器

需要买一个加密狗。
穿越机模拟器适用于windows(我只试过win10)
在这里插入图片描述
下载地址:链接:https://pan.baidu.com/s/14yvS_LbgzKS6NVhknLtkxw 提取码:6666 复制这段内容后打开百度网盘手机App,操作更方便哦

三.cubemx配置

这里使用的是正点原子的精英板(stm32f103ZET6)
硬件连线:
在这里插入图片描述

1.时钟和sys配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.串口配置

在这里插入图片描述

3.输入捕获的配置

在这里插入图片描述
在这里插入图片描述

4.PWM输出配置

在这里插入图片描述
在这里插入图片描述

5.中断配置

在这里插入图片描述

6.IO口配置

因为要用L298N除了两个pwm信号线之外还需要四根线。
在这里插入图片描述

7.生成代码

在这里插入图片描述
在这里插入图片描述

四.程序

1.printf重映射

打开生成好的代码,在usart.c程序中的/* USER CODE BEGIN 0 *//* USER CODE END 0 */之间加入以下代码就可以使用printf了

#include "stdio.h"
#if 1
//#pragma import(__use_no_semihosting)             
//标准库需要的支持函数                 
struct __FILE 
{
    
	int handle; 
}; 

FILE __stdout;       
//定义_sys_exit()以避免使用半主机模式    
void _sys_exit(int x) 
{
    
	x = x; 
} 
//重定义fputc函数 
int fputc(int ch, FILE *f)
{
    	
	while((USART1->SR&0X40)==0);//循环发送,直到发送完毕   
	USART1->DR=(uint8_t)ch;      
	return ch;
}
#endif 

2. 脉冲捕获和pwm输出

输入捕获程序参考:https://www.pianshen.com/article/367541452/
pwm程序参考:http://news.eeworld.com.cn/mcu/ic464736.html

在main.c中添加头文件

/* USER CODE BEGIN Includes */
#include "stdio.h"
/* USER CODE END Includes */

在main.c中进行通道使能

 HAL_TIM_IC_Start_IT(&htim2, TIM_CHANNEL_1);
	HAL_TIM_IC_Start_IT(&htim2, TIM_CHANNEL_2);
	HAL_TIM_IC_Start_IT(&htim2, TIM_CHANNEL_3);
	HAL_TIM_IC_Start_IT(&htim2, TIM_CHANNEL_4);
  __HAL_TIM_ENABLE_IT(&htim2,TIM_IT_UPDATE);
	
	HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_2);//启动。置1  CCER的输出使能位bit4
  HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);//CCER的bit0
	
	HAL_GPIO_WritePin(GPIOD,GPIO_PIN_3,GPIO_PIN_SET);
	HAL_GPIO_WritePin(GPIOD,GPIO_PIN_4,GPIO_PIN_SET);
	HAL_GPIO_WritePin(GPIOD,GPIO_PIN_5,GPIO_PIN_SET);
	HAL_GPIO_WritePin(GPIOD,GPIO_PIN_6,GPIO_PIN_SET);

/* USER CODE BEGIN 4 */中填写捕获处理以及调整pwm的代码
这里只用到了遥控器的通道一和通道二,通过串口可以看出遥控器最大量程为50。

输入捕获:49(低)-74(中)-99(高)

电机pwm范围是:0(低)-999(中)-0(高)

通过一系列的计算得到了下面的程序

/* USER CODE BEGIN 4 */
uint16_t 	Channel1HighTime, Channel2HighTime, Channel3HighTime, Channel4HighTime;
uint16_t 	Channel1Period, Channel2Period, Channel3Period, Channel4Period;
uint8_t  	Channel1Edge = 0, Channel2Edge = 0, Channel3Edge = 0, Channel4Edge = 0;
uint16_t 	Channel1Percent, Channel2Percent, Channel3Percent, Channel4Percent;
uint16_t	Channel1PercentTemp[3] = {
   0, 0,<
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值