- 博客(27)
- 问答 (1)
- 收藏
- 关注
原创 秋招笔试回顾1
1、系统复位:STM32 在上电复位后,根据启动引脚及启动配置确定启动存储区域。。堆栈指针初始化后,处理器会跳转到复位向量地址指向的 启动代码(2、启动代码执行:启动代码 Reset_Handler 是系统初始化的关键部分,通常包括以下操作:将全局变量的初始化数据从 Flash 复制到 RAM(.data 段),清零未初始化的全局变量(.bss 段),配置初始堆栈指针 (MSP),并调用厂商提供的 SystemInit 函数以初始化系统时钟(如 PLL)、外设时钟树和必要的硬件资源。
2026-07-26 15:10:13
194
原创 匿名拓空者源码pid环路分析笔记
本文摘要主要分析了无人机基于光流的飞行控制系统结构,重点阐述了位置速度环、角度环和高度环的三级PID控制逻辑。系统通过1000Hz任务处理遥控器输入信号,采用死区处理和低通滤波后生成归一化速度指令;位置环(50Hz)融合光流速度反馈和IMU加速度数据进行双PID控制;角度环(200Hz/500Hz)将位置输出转为姿态角指令,采用微分先行策略处理突变;高度环(100Hz)通过速度积分生成高度指令,并引入重力补偿机制。最终控制量经电机混控算法分配至各电机,实现稳定飞行。系统特别设计了过180°角度处理、起飞怠速
2026-07-10 10:22:20
214
原创 mahony算法解算姿态角笔记
陀螺仪:得到机体系下的角速度加速度计:得到机体系下的加速度坐标系:机体系b和地球系e四元数:用于描述地球系物体的姿态,四元数更新,离散化后为旋转矩阵:进行坐标系变换该矩阵为机体系到地球系的转换某向量在机体系下为,在地球系下,地球系到机体系的转换为。若令,则R的第三行即为重力在机体坐标系下的投影。
2026-07-09 09:37:41
197
原创 STM32的ADC学习笔记
所有通道接入同一个转换核心轮流使用。同一时刻只能转换一个通道。切换通道后,必须给内部采样电容足够的充电时间(Sampling Time),否则读数不准。CubeMX 中配置的决定了 MUX的切换顺序,而不是 GPIO 编号。IN5 可以是 Rank1,IN0 可以是 Rank2。
2026-06-17 10:44:12
218
原创 串口的收发流程详解
接收移位寄存器接收高低电平将其转化为字节数据发送给接收数据寄存器(RDR),轮询模式下,CPU一直查询RDR是否有数据。:中断接收的启动函数,表明接收参数,使能硬件中断:硬件中断入口当接收数据寄存器接收到数据时会触发接收数据寄存器非空中断(前提是中断已使能),函数跳转至如下中断处理函数,以串口1为例HAL_UART_IRQHandler:HAL 库中断分发器,根据标志位判断串口1的中断类型——接收中断,内部调用UART_Receive_IT进行数据接收,接收足够字节后关闭接收中断。
2026-05-27 10:44:29
33
原创 利用cubemx和HAL库重写江科协的oled驱动程序
然后在main.c的MX_I2C1_Init()后面添加OLED_Init(),后续即可正常使用代码中显示数字字符等的函数。删除OLED_Init中的I2C初始化代码,I2C和GPIO的初始化已经在cubemx完成。将PB6、PB7设置为SCL和SDA引脚(硬件I2C)完整的测试main如下(有一些不相关的代码,不用管)将原有的这三个函数替换为上面这些。
2025-12-11 23:02:09
324
原创 stm32定时器
左边时钟源,通过PSC进行分频,来一个脉冲,CNT+1,直到CNT达到ARR的预设值(向上计数),重新开始计数,RCR为重复计数次数。具体值都为设置值+1。
2025-12-05 19:41:27
187
原创 江科协DMA自用学习笔记
DMA1有7个通道,DMA2有5个通道,stm32f103c8t6只有DMA1,不同通道的触发源不一样。数据宽度,uint8、16、32_t。stm32存储器映像。
2025-11-25 18:54:16
95
原创 P1706 全排列问题
│ │ │ │ │ │ dfs(4)→触发终止条件 → 输出[1 2 3]│ │ │ │ │ │ 固定第三位为3 → arr[3]=3。│ │ │ │ │ │ 固定第三位为2 → arr[3]=2。│ │ │ │ │ │ dfs(4) → 输出[1 3 2]│ │ │ │ │ │ state[3]重置为false。│ │ │ │ 固定第二位为2 → arr[2]=2。│ │ │ │ 固定第二位为3 → arr[2]=3。
2025-03-08 16:33:40
919
原创 MPU6050的DMP库使用记录
在学习完江协stm32软件读取I2C后,利用DMP库来获取MPU6050的角度值。此为主要代码,在OLED驱动中添加了显示浮点数的函数OLED_ShowFNum,这是加速度的的对应表,fsd=0时加速度最大量程为±2g。这是陀螺仪的对应表,fsr=3时量程为±2000。在OLED模板的基础上,在工程文件中添加。注意Delay.h中延迟函数的大小写。在MPU6050.c中有这两个函数。在MPU_Init函数中修改。
2025-02-17 11:28:49
592
1
原创 I2C协议
SCL:时钟SDA:数据主机拥有SCL和SDA的绝对控制,从机不能控制SCL,只能被动读取,不能主动控制SDA,只能在在主机发送读取命令和应答时可控制SDA。
2025-02-16 21:25:36
256
原创 解决MATLAB中使用BaseZoom进行局部放大绘图的Unrecognized method, property, or field ‘plot‘ for class ‘BaseZoom‘.报错问题
在使用ZoomPlot进行图片局部放大时,网上提供的算法多为如上的代码,但在运行过程中却出现了BaseZoom类中没有plot的报错,查看了安装包中的manual发现,里面提供的实例使用的是。
2025-02-14 16:57:48
924
原创 STM32TIM定时中断
预分频器:16位,接收到n的方波输出一个方波,最多接收65536个方波输出一个方波。最高的计时时间:65536*65536/72000000=59.65s。16位计数器:可记2的16次方为65536个数。72MHz晶振:1s输出72000000个方波。自动重装寄存器:存储目标计数值。
2024-09-06 16:09:32
326
原创 word封面
先创建2*4的表格,在表格中填写信息,选中左侧除冒号以外的文字,在开始-段落中选择分散对齐。然后全选表格,调整为无框线,然后选择右列表格分别选择下框线和内部框线。
2024-09-05 09:45:43
324
原创 word大括号公式
在光标放在每行公式左边输入&(shift+7)每行都来一次。先复制到simpletex中然后选择复制MathML。在word打出这样的公式。到word中直接粘贴。
2024-09-05 09:15:42
523
原创 STM32C8T6的EXIT中断
相应优先级:触发后在当前任务执行后执行抢占优先级:直接中断当前任务执行优先级寄存器有四位,两类优先级分配这四位优先级,共有五种分法数字越小优先级越高。
2024-09-04 15:05:53
394
原创 PCBDoc中部分元件变黑变绿
1、变绿,规则问题,部分焊盘距离过近导致规则错误。将Minimum Clearance修改为6mil。修改规则即可-Design-Rules。暂时还不知道怎么解决。
2024-08-27 18:49:46
1145
原创 has no driving source
原因:元件管脚类型为错误设置为输入类型,而没有具体输入。解决办法:修改管脚类型为正确类型,一般为power。
2024-08-27 09:20:24
769
原创 AD 原理图转PCB常见错误:Unknown Pin
以PCB封装中的管脚号为准修改原理图库中的管脚号,然后更新到原理图中。原理图中的管教号和PCB封装中的管脚号不对应。在原理图中找到元件添加封装。1、原理图没有对应的封装。
2024-08-23 16:07:29
4123
原创 MATLAB APP中绘制动态图像
然后不停的将toc(运行时间,x轴)和changingValue(滑块数值,y轴)给到addpoints中,就会不断生成动态的图像。animatedline创建一条动态曲线,addpoints实时向其中添加点来实现动态效果。使用MATLAB推荐的animatedline和addpoints函数绘图。唯一的问题就是,该函数只在滑动条改变时调用,所有滑动条不动时,图像也不动。首先创建一个animatedline的线条h,指定app中的坐标轴。首先在开始函数中使用tic来开启计时,然后设置坐标轴基本参数。
2024-08-23 15:13:22
950
1
原创 python—openCV实时追踪乒乓球
"""张耀2021年08月20日"""import cv2import numpy as npcap = cv2.VideoCapture(0)while cap.isOpened(): # 获取摄像头图像 r, img = cap.read() # 截获乒乓球颜色 hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) miny = np.array([5, 100, 250]) maxy = np.arra.
2021-08-22 09:10:32
2311
原创 2021-08-22 炸金花
import randomnum = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']huase = ['方块', '黑桃', '梅花', '红桃']puke = []for x in range(4): for y in range(13): puke.append(huase[x]+num[y])puke.extend(['大王', '小王'])random.shuffle(puke)
2021-08-22 09:02:00
218
空空如也
Python 对象方法
2021-07-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅