stm32
文章平均质量分 78
Xiao |
May the Force be with you
|| 一定存在只有你才能做到的事情
展开
-
stm32串口发送数据包进行解析,实现人机交互
之前在正点原子的官方历程中我们就可以看到,在串口中断服务函数里面,对接受的数据用一个十六位的数据来判断是否接受完成(即是否在数据包的末尾接收到0x0D,0x0A,他们分别对应的是\r \n),利用高位处理状态,低位则将数据包。你可能会有一个疑问就是,为什么HEX的包头包尾设置为0xFF与0xFE,这是因为,如果在数据包中存在一样的数值,可能会导致接受混乱的时候,这两个数据是影响比较小的,毕竟接受的。1,串口的中断处理函数,在接受到数据中断以后,根据之前提到的状态机的知识判断数据的有效性;原创 2022-10-05 21:06:30 · 8107 阅读 · 5 评论 -
stm32中I2Cx的简单配置以及源码
首先我们看到F1系列单片机引脚的截图,可以看到PB7,PB8可以复用为I2C1接口。PB10,PB11可以复用为I2C2接口。在后面i2c产生起始位,以及使能的时候,会填入参数:i2cX,这时候要和复用的GPIO口对应的通讯线路一致从51单片机学习的时候可以知道,I2C接口需要配置上拉电阻。保证通讯,在这里上拉电阻配置在外面,所以说GPIO口复用的时候配置为开漏输出模式。I2C通讯的软件架构和之前的51单片机也略微有些不同:总体而言就是增加了官方的固件库:stm32f10x_i2c 用于配置底层原创 2022-04-16 10:13:49 · 1948 阅读 · 0 评论 -
51或stm32单片机OLED显示屏驱动及代码演示
OLED显示基本参数:•OLED(Organic Light Emitting Diode):有机发光二极管•OLED显示屏:性能优异的新型显示屏,具有功耗低、相应速度快、宽视角、轻薄柔韧等特点•0.96寸OLED模块:小巧玲珑、占用接口少、简单易用,是电子设计中非常常见的显示屏模块•供电:3~5.5V,通信协议:I2C/SPI,分辨率:128*64常见的硬件连接方式:电亮方式:将分辨率为128*64的屏幕分为多个8x8像素块来显示:那么以8x8像素块为基本单位而言,行就有8个像素块,原创 2022-04-12 21:29:46 · 8018 阅读 · 0 评论 -
stm32单片机控制28BYJ48步进电机原理及代码
stm32单片机控制28BYJ48步进电机原理及代码原创 2022-04-01 21:57:52 · 6924 阅读 · 34 评论 -
stm32的陀螺仪芯片MPU6050的初始化寄存器配置
MPU6050读取数据步骤:1,检查MCU(主机)与MPU6050(姿态传感器)是否通信成功2,设置MPU6050为复位状态,并且100ms延时,确保复位完成3,唤醒MPU6050,选择PLL为时钟源4,配置6轴数据全部输出(3轴加速度与3轴陀螺仪)5,禁止所有中断(避免传感器读取到一个数据就中断,而耽误系统进程)6,设置MPU6050的内部采样频率以及低通滤波器(小的飞行器一一般设施在20~30Hz即可)7,设置陀螺仪与加速度计的满量程范围8,主处理芯片可以直接访问MPU6原创 2022-03-26 15:43:33 · 10350 阅读 · 1 评论 -
四轴飞行器偏航角不同飞控的C语言实现方法
偏航角的控制与俯仰角以及翻滚角不同。俯仰角以及翻滚角都是要随着遥控器改变,特别是遥控器归中的时候,就俯仰角以及翻滚角也要归0。但是偏航角最大的区别就是遥控器归中后不需要恢复。蓝鸟飞行器:对于Z轴偏航角的控制:是对接受来的遥控器数据进行分段处理,当大于某一值的时候,对期望的偏航角度值进行累加。由于是分段控制,所以遥控器摇杆归位以后,期望的偏航角度值并不归0。所以不会出现摇杆归位后,飞机又转回去的现象。特点:偏航角数据分段处理不同担心在打油门的时候误触偏航角Z轴有角度环PID控制,所原创 2022-03-21 18:14:23 · 1686 阅读 · 0 评论 -
用一个生活的小实例讲讲PID控制
如果还是不理解这里的PID控制的话,我们来举一个简单的烧水的例子:基本场景: 烧水的时候,我们设定在温度达到100摄氏度的时候就停止加热,由于水温是有时间滞后性的。所以停止加热以后,水温并不会立即停止在100摄氏度,而是要达到100摄氏度以上,随后又降温到100摄氏度以下。然后系统检测温度低于100摄氏度,然后就又开始加热。然后进入一个这样的加热放热的循环。我们可以发现问题就是系统一直是在100摄氏度上下进行浮动。 这里说明一下什么是时间滞后性,例如变量水温就具有时间滞后性,就是打开加热器以后原创 2022-03-11 19:48:44 · 11603 阅读 · 1 评论 -
stm32单片机GPIO
在我们应用的库函数中也确实可以看到有一个结构体定义了这些模式的寄存器该如何配置(这里库函数的版本为v3.50)下面是GPIO的不同模式对应的电路图:代码演示:主函数()(这里出现乱码在keil5中的修改中将editor更改为ANSI即可)在GPIO的输入中主要掌握这4个库函数的运用(具体的方法要在库函数stm32xxx_gpio_c的文件中查看)GPIO_Init()GPIO_ResetBits()GPIO_SetBits()GPIO_Writ...原创 2022-02-26 20:05:15 · 951 阅读 · 0 评论 -
四轴飞行器Mahony姿态结算
首先我们要搞明白姿态结算在飞控中的位置:简而言之就是将采集的数据通过算法转换为可以供姿态控制使用的欧拉角,较为精准的数据转换思路:在计算的时候我们一般将欧拉角(当然也可以叫做方向角)转换成四元数来计算:飞行的姿态可以用欧拉角描述的方向余弦矩阵来表示,因为欧拉角存在万向节“死锁”的问题,所以不适合全姿态飞行器,飞行的姿态也可以用四元数描述的方向余弦矩阵来表示。两者的方向余弦矩阵数据一一对应。所以我们将四元数作为中间量进行运算,最后的结果转换为欧拉角,这样就可以解决“死锁......原创 2022-03-06 20:46:11 · 1432 阅读 · 0 评论 -
PID原理以及C语言的代码实现
PID控制系统的基本构架实际就是我们耳熟能详的反馈控制,这里将PID与之进行类比:PID控制思想: 我们在单片机中不可能实现连续的控制(不可能说都去进行PID控制,否则就进入了死循环,不能进行其他的操作),所以说这里在使用的是PID控制器离散型分析,顾名思义就是说我们获取的数据不是连续的,而是每隔相同的时间进行获取(这个和我们单片机的中断相吻合)注意这里是定义的一个PID_TYPE的一个结构体变量方便了我们管理数据还有一个巧妙的地方是代码运用了积分分离...原创 2022-02-25 18:58:11 · 2589 阅读 · 1 评论 -
stm32单片机在keil中如何建立工程模板
1,建立工程文件夹,Keil中新建工程,选择型号2,工程文件夹里建立Start、Library、User等文件夹,复制固件库里面的文件到工程文件夹3,工程里对应建立Start、Library、User等同名称的分组,然后将文件夹内的文件添加到工程分组里4,工程选项,C/C++,Include Paths内声明所有包含头文件的文件夹5,工程选项,C/C++,Define内定义USE_STDPERIPH_DRIVER6,工程选项,Debug,下拉列表选择对应调试器,Settings,Flas原创 2022-02-23 21:49:03 · 795 阅读 · 0 评论