inav向STM32F401CCU开发板定制的过程(二)

本文详细介绍了如何在STM32上配置iNav飞控系统,涉及PPM接收机输入、无刷电调PWM输出、定时器分配以及I2C接口的传感器连接。作者强调了引脚选择的注意事项,如避免使用同一定时器的不同通道,并展示了target.c和target.h文件的修改过程。此外,还提及了针对不同硬件资源限制的固件调整,如STM32F401的内存限制,并讨论了后续的固件链接布局和功能选择。

首先是MCU用于iNav的各种功能的引脚的分配计划:

一、PPM接收机输入引脚,需要使用一个复用有定时器的引脚,我这里选择了PA0,对应选择的是TIM2_CH1。

修改target/FLYESF401/target.c文件,里面定义了MCU要使用什么引脚上的哪一个定时器的哪一个道道。

里面有一个静态的数组,这里我已经把所有的定时器都清掉了,(当然也可以改):

const timerHardware_t timerHardware[] = {}

在里面加入PPM接收机决定使用的引脚和时钟通道等

const timerHardware_t timerHardware[] = {

    DEF_TIM(TIM2,  CH1, PA0,  TIM_USE_PPM , 0,0), //S1_IN

}

就完成了在PPM引脚的定义分配了。对应的还要有:

二、固定翼模式下的无刷电调的PWM输出通道的定时器和引脚,要留意,固定翼模式下,无刷电调的输出定时器不能和舵机PWM输出用同一个定时器的不同通道,所以我选择使用PB7, PB6这两个引脚,分别对应TIM4_CH2, TIM4_CH1,作为电调的PWM输出。而相应的,使用PA6、PA7、PB0、PB1及对应的TIM3_CH1、TIM3_CH2、TIM3_CH3、TIM4_CH4来作为4个舵机PWM输出。

于是修改过的timerHardware[] 像下面:

const timerHardware_t timerHardware[] = {

    DEF_TIM(TIM2,  CH1, PA0,  TIM

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值