四轴无人机
文章平均质量分 67
dengqiangjiayou
这个作者很懒,什么都没留下…
展开
-
stm32F103c8 keil移植FreeRTOS时内存不够
stm32F103c8 (flash 64k、ram 20k)keil移植FreeRTOS时内存不够linking....\Objects\Template.axf: Error: L6406E: No space in execution regions with .ANY selector matching led.o(.data)..\Objects\Template.axf: Error: L6406E: No space in execution regions with .ANY sele原创 2021-06-07 00:51:09 · 878 阅读 · 1 评论 -
小马哥四轴代码解读-I2C-mpu6050篇
小马哥四轴代码解读-I2C-mup6050篇I2C通信I2C通信可以一主多从也可以多主多重(这个还不是很了解),一主多从,首先你得知道从机的地址,然后主机带着从机的地址在总线上广播,who is 这个地址,这个地址的从机就会响应小马哥的四轴代码中用的是IO模拟的I2C通信,但是芯片中是有硬件方式的I2C通信,但是据说有bug。通信的大致过程如下:先拿到mpu6050的地址0x68,先发地址找到主机之后在发mpu6050的寄存器地址进行数据的读获写操作 。初始化SCL SDA引脚,SCL原创 2021-04-01 15:15:43 · 1432 阅读 · 0 评论 -
小马哥四轴代码解读-SPI-flash篇
小马哥四轴代码解读-SPI-flash篇SPI通信SPI是一种高速的、全双工、同步的通信总线,主要应用于EEPROM、FLASH、实时时钟、AD转换器和etcSPI内部结构图:SPI接口总共有4条线:MISO、MOSI、SCL、CS要根据stm32的芯片引脚进行定义,如下图:小马哥实验中用的是SPI2,要用到PB13、PB14、PB15SPI 主要特点有: 可以同时发出和接收串行数据; 可以当作主机或从机工作; 提供频率可编程时钟; 发送结束中断标志; 写冲突保护; 总线竞争保护等。下原创 2021-04-01 10:52:20 · 1524 阅读 · 0 评论 -
小马哥robofly四轴无人机代码解读:NRF24无线通信一对多通信-无线传参
首先献上NRF24L01的中文开发手册:https://pan.baidu.com/s/1exzhUFWcM6Q4R9JpYWnaYwNRF24无线通信最多可以发32个字节,因为它是无线的所以感觉很便捷。无线传参传输完rol、pit、yaw、thr、alt等值之后还有剩余的空间,可以利用起来。比如,无线调参,通过串口发送最先调的内环PID值给遥控器,然后遥控器通过NRF24传输给无人机进而改变无人机的PID值,方便调参。但是我在进行操作的时候写入flash里面,写一次经常不回成功,要写入2次或以上,有时还原创 2021-03-07 03:11:39 · 4082 阅读 · 0 评论 -
小马哥robofly四轴代码解读:PWM电机输出
代码主要在这个文件里:C:\Users\DQ_SZU\Desktop\RoboFlyDEMO\Drive\src\motor.c我们要利用mos管的特性,定义4个引脚复用推挽输出,同时要注意每一个引脚对应的时钟,接下来就是定义TIM3作为PWM波输出的计数器,通过其4个通道进行输出:TIM_OC1Init(TIM3,&TIM_OCInitStruct); TIM_OC2Init(TIM3,&TIM_OCInitStruct); TIM_OC3Init(TIM3,&TIM_OCIn原创 2021-03-06 03:10:12 · 1151 阅读 · 0 评论 -
小马哥robofly四轴无人机代码解读:定时器初始化
Stm32F1定时器的基本知识:看一下常用的控制寄存器1:TIMx_CR1(16位)其实我们主要用库函数来实现,不会去太关注寄存器怎么操作,就行HAL库一样,不过要想深入还是得有所了解,特别是在debug的时候,debug窗口几乎都是寄存器里面的值* 函 数:void TIM_Init(void)* 功 能:TIM4初始化为1ms计数一次*备 注:更新中断时间 Tout = (ARR-1)*(PSC-1)/CK_INTvoid TIM_Init(void){ TIM_TimeB原创 2021-03-06 02:54:40 · 774 阅读 · 0 评论 -
小马哥四轴robofly气压计定高解读(1)-气压计获取数据
FBMTYPE FBM; //首先定义一个结构体用来结合FBM返回的数据计算高度uint8_t ALTIUDE_OK = 0,ALT_Updated = 0;float RPFilter;下面是一些函数**uint8_t FBM320_WriteByte(uint8_t reg,uint8_t data):写一个字节到FBM320寄存器uint8_t FBM320_WriteMultBytes(uint8_t reg,uint8_t len,uint8_t *buf):从指定寄存器写入指定长原创 2021-03-05 00:42:06 · 3003 阅读 · 6 评论