- 博客(35)
- 收藏
- 关注
原创 PY32F030x8
选择时钟--设置IO模式--设置IO输出类型--设置速度--设置上拉下拉--设置IO口输出状态,读取IO口状态GPIO_MODE GPIO_TYPE GPIO_SPEED GPIO_PUP mode设置输入输出模拟复用模式,type设置推挽和开漏模式,speed设置速度,pup设置上拉和下拉模式。GPIO_IDR GPIO_ODR 数据输入输出寄存器16位GPIO_BSRR 数据置位清除寄存器32位,相当于两个ODR。GPIO_LOCK。
2024-11-26 09:48:12
883
原创 睡眠、停止、待机模式;看门狗;上下拉电阻
IO口内部电路是一个三极管,阻抗很大,与下拉电阻串联,IO处的电平保持为低电平。其实接地也可以实现低电平,加下拉电阻的目的就是:当外部输入高电平时,由于直接接地,io口还是低电平。当让IO口输出高电平时,由于单片机IO口内部的电路原因,IO口处的电平不确定。由于单片机IO口内部的电源电路也有电阻,这个电阻无穷大,上拉电阻与内部电阻并联,根据并联会降低阻抗,IO口的电压变为高电平。当程序死机的时候就会复位。停止:所有外设时钟都停止,唤醒时,会在之前停止的位置继续执行程序,因为内核的寄存器保留了相应的信息。
2024-11-25 19:28:55
255
原创 PX4学习 笔记一
modules/position_estimator文件夹下,有params.cpp,CMakeLists.txt,position_estimator_inav_main.cpp,inertial_filter。commander进行传感器的校准,飞行前的检查,解锁状态的切换,飞行模式切换。2.inertial_filter是加速度的一次积分得到速度,二次积分得到位置的过程中,对动态误差的处理进行校准。vehicle_status.msg 解锁的状态,飞行模式,飞行状态,定义的是全局变量。
2024-05-14 11:45:26
957
原创 嵌入式Linux
开发板上运行的内核和你自己编译的内核不一致的话,会导致一些问题,所以,在编译驱动程序之前,要把自己编译的内核放到开发板上。(在整个过程中,在unbuntu上对代码进行编译,对文件进行处理之后,在mabaxterm上使用串口与开发板进行通信,发送指令给开发板,然后开发板接收指令并执行,最后从ubuntu上读取资源,安装内核和驱动。这便是设置双网卡模式的意义。在已经有net网络情况下,还设置一个桥接网络,这是让ubuntu在可以上网的同时,保证windows,ubuntu,开发板之间的联通,这样做的意义在于?
2024-05-11 15:16:50
681
原创 PX4 路径规划 航点规划 轨迹跟踪 Matlab/Simulink
查了很多资料。无人机二次开发设计的目标是实现喷涂路径程序设计。决定使用simulink在ubuntu系统上结合jmavsim进行算法设计和仿真。1.如果安装在ubuntu系统上面,MATLAB占用的内存较大,我试过一次,ubuntu直接黑屏,进不去;把下载的matlab删掉之后才进去。不使用ubuntu下载matlab的方法。2.我使用2022a的版本。3. PX4的工具包需要另外下载,网上找教程。然后进行硬件配置:PX4与Simulink联合仿真环境配置_哔哩哔哩_bilibili。
2024-05-11 15:15:10
1275
原创 PX4 激光测距传感器
先看下面这面博客,了解清楚msg消息结构体,发布和订阅的步骤过程。在上面这个博客里面,主要是使用μORB进行数据订阅和发布,其实就是在应用层上实现了一个应用程序。在命令行中可以调用。但是我现在需要的是新的传感器,这意味着我需要完成驱动层的程序,然后在使用μORB来完成应用层的程序。
2024-04-08 20:37:31
1030
原创 从SPI协议学习PX4源码
SPI类的参数:设备名称,devname设备节点名称,总线,device片选信号线,SPI模式,时钟频率,中断。SPI类继承VDev类。SPI协议在spi.cpp文件中,涉及到了cdev和device的操作。cdev字符设备是linux系统设备之一。还有块设备,网络设备。cdev是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据。字符设备是面向流的设备,包括键盘,显示屏,串口。linux用户程序通过设备文件来使用驱动程序操作字符设备。
2024-03-11 23:05:22
1069
原创 ESP8266 WIFI
发送AT,返回OK,表示连接正常。指令为AT+UART_DEF=9600,8,1,0,0,表示8位数据,1位停止位,无校验位,不使能流控。单片机通过串口发送AT指令,esp8266执行AT指令,设置为STA模式,AP模式或混合模式,生成WIFI和服务器IP,完成组网。无论是STA模式,还是AP模式,手机APP都可以与单片机通讯,ESP扮演了中转站的角色。由于ESP本身不需要编程,主要是单片机需要完成ESP初始化,UART设置,UART_SEND封装各种AT命令,以及UART_RECE接收手机发送的命令。
2023-11-30 22:34:50
717
原创 计算机网络基础概念 TCP/IP
计算机网络体系传输方式分为数据交换分为网络协议三要素:语法,语义,时序OSI参考模型(7个层次),下层为上层服务。
2023-10-04 21:19:21
162
原创 μC/OS-II 内存的动态分配
μC/OS-II 改进了ANSIC用来动态分配和释放内存的函数malloc()和free(),使它们可以对大小固定的内存块进行操作,从而使函数malloc()和free()的执行时间成为可确定的,满足了实时操作系统的要求。
2023-08-29 10:45:07
209
原创 μC/OS-II 信号量集
任务常常需要与多个事件同步,即要根据来决定任务的运行方式。μC/OS-II为了实现多个信号量组合的功能定义了一种特殊的数据结构---信号量集。信号量集所能管理的信号量都是一些二值信号。信号量集实质上就是一种可以对多个输入的逻辑信号进行基本逻辑运算的组合逻辑。在μC/OS-II中,请求信号量集的任务得以继续运行的条件与所请求的信号量之间有两种逻辑关系;
2023-08-28 20:31:04
153
原创 嵌入式实时操作系统(二)
挂起任务就是停止任务的运行。通过函数OSTaskSuspend()来挂起自身或者除空闲任务之外的其他任务。用这个函数挂起的任务只能在其他任务中通过调用恢复函数OSTaskResume()恢复为就绪状态。
2023-08-23 23:35:54
181
原创 嵌入式实时操作系统(一)
是对对象进行自动控制而使其具有智能化并可嵌入对象体系中的专用计算机系统。嵌入式系统硬件大体上。MCU(Micro Controller Uint)的发展方向是不断在一个芯片上扩展满足宿主对象系统所要求的的各种外围电路与接口电路,以增强其对宿主对象的智能化控制能力。典型产品就是51单片机。SoC(System on Chip)的发展动因是人不断寻找应用系统在芯片上的最大化解决方案。在USB,DSP,TCP/IP通信模块,GPRS通信模块。
2023-08-23 17:26:31
823
原创 数据结构与算法基础(一)
每条语句执行一次的时间是随机器而异的,取决于机器的指令性能,速度和编译的代码质量,由机器本身的软硬件环境决定,与算法无关。链式存储结构:用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示。算法设计的要求:正确性,可读性,健壮性(错误的输入或者输出要提示错误,不能输出错误的结果),高效性(少时间,低存储)。顺序存储结构:用一组连续的存储单元一次存储数据元素,数据元素的逻辑关系由元素的存储位置来表示。对于复杂的算法,可以把它分为几个较为容易估算的部分,使用加法和乘法法则来计算整体的复杂度。
2023-08-21 10:47:57
98
1
原创 openmv巡线小车
机器学习之线性回归(Linear Regression)算法_线性回归算法_落难Coder的博客-优快云博客2021-07-29 Openmv与stm32 的串口通信(HAL库)_openmv与stm32串口通信_️零柒️的博客-优快云博客获取对象信息 - 廖雪峰的官方网站 (liaoxuefeng.com)视觉识别数字、十字路口和T字路口,巡线于一体的基于openmv的解决方案(2021年电赛f题)_openmv 巡线_Meat_buns_dogs的博客-优快云博客。
2023-07-10 18:44:27
1785
2
原创 Openmv
一.openmv适合做一些小项目,比如追踪小球的小车,云台。还有对成本要求较高的嵌入式工业方案,比如流水线物品分拣。不适合复杂的算法,比如车牌识别,猫狗分类,深度学习,ocr识别等。
2023-06-06 16:34:17
3878
1
原创 电机(电赛篇)
什么是电机?电机是实现电能和机械能转换的装置。包括一部分由机械能转化为电能的发电机,将电能转换为机械能的电动机(马达)。本篇文章的电机,指的是将电能转换为机械能的电动机。
2023-05-10 16:39:50
968
原创 蓝牙HC05
HCO5是蓝牙串口模块,采用蓝牙2.0协议,可以与任何版本的蓝牙兼容通讯,与具有蓝牙的电脑,蓝牙主机,手机,PDA(掌上电脑),PSP(Personal Satfware Process)等终端配对。如何驱动?只需要使用TTL电平标准的串口即可(5V或者3.3V电压)。
2023-05-06 22:22:58
12701
原创 锂电池如何选择?
电池的C数是普通锂电池和动力锂电池的重要区别。40c表示原本2200mAh的电池可以以40倍放大的电流输出,这样原本可以续航1小时,现在只能续航1/40小时。先求出电路中全部用电设备用电1小时所需消耗的功率W,然后除以电池的电压,那么我们就可以得到此电路1小时的耗电量Q。其实,更简单的算法是,求出总路上的电流值,电池毫安数除以电流大小得到的数值是可使用时间。mA其实是电容量的单位,完整的写法是mAh。我们需要考虑到电路中的设备的过电流的大小是多少,计算出一个电流范围。如何通过电池的毫安数计算供电的时间呢?
2023-05-06 20:24:53
1349
1
原创 MPU6050
如果使用传感器内部的DMP单元进行解算,它可以直接对采样得到的加速度及角速度进行姿态解算,解算得到的结果再输出给STM32,STM32不需要自己解算。常应用于手机,智能手环,四轴飞行器等的姿态检测。加速度传感器的缺点:无法区分重力加速度和外力加速度,在震动情况下,传感器数据会有非常大的变化,难以反映重力实际值。在这个阶段,没有DMP解算,获得的数据只是MPU6050的原始数据,想要获得欧拉角,必须要使用DMP模块。同理,在检测偏航角时,在静止状态下增大磁场检测的权重,运动状态下增大陀螺仪和GPS的权重。
2023-05-02 22:26:12
3645
原创 PID算法
Proportional(比例)IIntegral(积分算法)Derivative(微分算法)PID算法是闭环控制算法的一种。设定的目标值与当前值的差是误差。通过对误差进行乘Kp,对误差积分后乘Ki,对误差微分后乘Kd,将信息送给执行器(电机)。P算法有一个比例系数Kp,I算法有一个积分系数Ki,D算法有一个微分系数Kd。我们常说的PID调参就是调这三个系数。通过调整这三个参数使系统的整个响应过程和执行结果符合任务要求。设定的目标值与传感器返回的当前值的差是误差。
2023-05-01 15:53:02
372
原创 STM32---CAN
CAN是Controller Area Network的缩写。它具有高可靠性和错误检查能力,广泛应用在汽车计算机控制系统和环境恶劣,电磁辐射强及振动大的工业环境。
2023-04-25 22:37:56
8170
1
原创 STM32F10x---SPI
串行外围设备接口,是高速全双工(同时接受和发送)的通信总线。广泛应用在ADC,LCD等与MCU之间要求通讯速率较高的场合。
2023-04-19 18:03:23
1654
原创 通讯协议USART , I2C , SPI对比总结
为了增强代码可读性和可移植性,在写代码时,经常使用宏定义,把实现某一种功能的代码段封装成函数。在写函数时,需要考虑函数是否需要返回值,返回值的类型是什么;函数的参数有几个,有哪些;复用推挽输出是由内部外设控制,推挽输出由数据寄存器ODR控制。SCK,MOSI,TX使用复用推挽输出,高低电平由内部外设控制;在STM32F10x系列中,USART有5套,I2C有2套,SPI有3套端口分配。USART有TX和RX两个通讯端口,I2C有SCL和SDA两条总线,SPI有CS,SCK,MISO,MOSI四个条线。
2023-04-16 21:30:33
1343
原创 STM32---I2C
各个IC之间需要进行数据交流,为了使它们互联互通,I2C出现了。I2C是通用的简单的双向两线制总线协议。在硬件方面,需要的管脚少,连接线和面积小。在软件开发时,可以使用同一个I2C驱动库来驱动不同的器件。
2023-04-15 17:53:17
6921
原创 STM32(5)---USART练习
宏定义每组USART相关的参数,使用条件语句,需要的USART写1,其余写0;相关的参数包括GPIO和USART的时钟,GPIO的port和pin,中断源,中断函数名,USARTx等。4.想要使用Printf,scanf,getchar,putchar函数,需要重新定义它们各自的C库函数,将原本函数体改成USART的发送或者接收函数。在硬件上,需要拔掉串口1连接USB转串口的跳帽,使用杜邦线连接USB转串口和其他的串口,注意,TX连RX,RX连TX。使用循环语句,但是需要知道有多少个数组成员,循环多少次。
2023-04-02 22:26:36
174
原创 STM32(3)--USART
中断配置:void USART_ITConfig(USART_TypeDef*USARTx,uint16_t USART_IT,FunctionalState NewState)每个USART都包括常用引脚TX,RX,(SCLK,nCTS,nRTS)。串口初始化:void USART_Init(USART_TypeDef*USARTx,USART_InitTypeDef* USART_InitStruct)使用USART初始化结构体,配置波特率,字长,停止位,校验,串口模式,硬件流控制。
2023-04-02 21:08:30
1571
原创 STM32F10x(2)--使用固件库进行时钟配置
在RCC.h文件中有许多的函数,通过配置函数的参数就可以达到配置时钟的目的,方便快捷。配置PLL的时钟来源和倍频因子。如果需要重新设置时钟频率,就需要对原来已有的时钟进行恢复到初始值,再重新配置。配置大容量产品的RCC,如STM32F103系列,主要是配置CFGR,CR两个寄存器。软件使能后,要查询对应的RDY位是否被硬件置1,时钟就绪后才能进行配置。SW:配置系统时钟,常取10,PLL作为输出系统时钟。
2023-03-26 09:55:14
527
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人