单片机学习记录
文章平均质量分 89
桃成蹊2.0
保持学习
展开
-
雅特力AT-START-F423开发板
首先这个板子性能很强,有stm32F4的水平了,这个没啥问题,然后生态也不错,这个是我觉得很好的地方,这决定了我在一些地方会用这个板子。但是这个图形化配置工具还是有点bug,比如上次选了勾选全部库,第二次打开就不是了,然后就是iic的bug,希望后续能继续优化,然后希望这个图形化配置工具能融合到ide里面。原创 2024-09-01 22:43:32 · 452 阅读 · 0 评论 -
平衡小车的一些常见问题总结
pid控制值对偏差进行比例,积分和微分的控制,分别是三个部分,对应为比例单元,积分单元和微分单元。三个单元的作用可以简单的称为:这里要注意一点就是串级pid有一般会有一个环起到比较重要的作用,而另一个环只是辅助这个环的,比如这个系统中的直立环就是这样的。用公式来表达就是:a=b1∗θ+b2∗θ'a=b1*\theta +b2*\theta \text{'}a=b1∗θ+b2∗θ'上面这个是使用到了比例微分控制,在这个系统中误差是角度,角度的变化量正好是角速度,所以这里甚至可以直接将角速度作为输入参数来进原创 2022-06-30 23:45:00 · 4442 阅读 · 2 评论 -
K210使用记录
文章目录1、基本资料来源2、基本视觉功能3、训练K210环境搭建1、CUDA和CUDNN的安装配置2、开始安装3、anaconda环境配置3、训练神经网络模型4、K210运行神经网络模型本文算是对K210使用的一个记录吧,这样以后方便后面的学弟学妹快速学习了解K210的基本知识和入门使用1、基本资料来源2、基本视觉功能3、训练K210环境搭建1、CUDA和CUDNN的安装配置需要配置这两个才能成功调用电脑的GPU来训练,不然这个训练速度简直就不是一个速度级别的,差距有很大,所以电脑有GPU还原创 2022-05-20 17:25:34 · 7030 阅读 · 19 评论 -
在STM32单片机上使用傅里叶解析信号
文章目录1、导入分析工具2、信号生成与查看3、使用STM32读取数据1、使用第一种库2、使用第二种库关于傅里叶变换的知识,可以看我之前的文章:傅里叶变换记录,里面记录了一些参数的含义还有使用python和matlab进行傅里叶分析,提取信号的一些过程,希望能对读者产生一点帮助。下面记录使用stm32来对信号进行分析,这里一般是指一些adc采样的信号,对信号进行分析一方面是获取信号的一些成分,另一方面是对有可能信号中含有很多造成,通过分析可以对噪声进行处理。注:本文采用单片机为stm32f103RC原创 2022-05-19 21:52:18 · 15433 阅读 · 42 评论 -
卡尔曼滤波记录
文章目录1、卡尔曼滤波理论推导2、使用matlab进行卡尔曼滤波测试3、在STM32上进行卡尔曼滤波测试1、卡尔曼滤波理论推导2、使用matlab进行卡尔曼滤波测试3、在STM32上进行卡尔曼滤波测试原创 2022-04-28 21:31:15 · 2237 阅读 · 0 评论 -
编码电机PID调试(速度环|位置环|跟随)
文章目录1、编码电机认识2、上位机波形显示3、速度环调试验证4、位置环调试验证5、实现跟随效果1、编码电机认识2、上位机波形显示3、速度环调试验证4、位置环调试验证5、实现跟随效果......原创 2022-04-22 21:51:48 · 20834 阅读 · 19 评论 -
OLED多级菜单记录
文章目录原创 2022-04-22 15:57:02 · 17646 阅读 · 244 评论 -
stm32-USB使用记录(三)
文章目录1、USB鼠标2、USB键盘在前面的文章中介绍了USB作为虚拟串口,大容量存储功能的使用,并介绍了通过USB对单片机内部FLASH,外挂的FLASH以及SD卡的访问,但是USB其实还有很多其他的功能,因此这里就来介绍下关于HID设备,也就是人体交互的使用:1、USB鼠标首先还是线补充说下电脑插入USB后的过程,USB主机(一般是电脑)在检测到USB设备插入以后,就要对设备进行枚举。枚举就是枚举就是从设备读取各种描述符信息,主机知道设备是什么样的设备,如何通信,通过这些信息来加载合适的驱动程序。原创 2022-04-17 21:37:08 · 2294 阅读 · 0 评论 -
stm32-USB使用记录(二)
文章目录1、使用外挂FLASH芯片模拟U盘2、使用sd卡模拟U盘前面的笔记中已经提到了就是可以通过STM32的USB外设来完成虚拟串口(CDC)还有大容量储存设备(MSB)的功能,但是对于单片机而言,内部的flsh总是不够的,使用内部flsh来作为一种存储性的用途是在是有点浪费了,因此本文就来介绍使用外部flsh芯片还有外挂的SD卡来实现类似USB内存卡的功能!上一篇文章的链接如下:stm32-USB使用记录(一)1、使用外挂FLASH芯片模拟U盘这里我们选用比较常见的W25Q64,其实这个也就是做原创 2022-04-14 23:45:00 · 1023 阅读 · 0 评论 -
stm32-USB使用记录(一)
文章目录1、USB设备介绍2、虚拟串口进行数据收发1、USB设备介绍USB,即为通用串行总线,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。是应用在PC领域的接口技术。USB接口支持设备的即插即用和热插拔功能。USB是在1994年底由英特尔、康柏、IBM、Microsoft等多家公司联合提出的。2、虚拟串口进行数据收发...原创 2022-04-13 10:29:01 · 20386 阅读 · 16 评论 -
水比赛系列-HMI串口屏的使用
文章目录1、HMI串口屏介绍2、HMI串口屏常用控件3、串口屏数据交互4、源码1、HMI串口屏介绍2、HMI串口屏常用控件3、串口屏数据交互4、源码原创 2022-04-12 19:00:00 · 6556 阅读 · 2 评论 -
stm32上云实战篇
文章目录1、使用官方提供的库连接1、获取官方例程2、移植文件3、配置数据上传还有数据下发4、最终配置2、使用CJSON解析1、使用官方提供的库连接相信最开始用onenet的应该都是用的这个官方的库吧,特别熟悉的代码,目前网上也是非常的广为流传,之前也是用的这个办法,不过有段时间没摸过了,手又生疏了,因此这里就重新来做个记录试试:1、获取官方例程打开我们的控制台可以看到这是这里有这个文档中心,在文档中心我们可以获取到我们需要的东西!进入这个社区,然后论坛里面就是我们想要的的了官方例程这里提到的原创 2022-04-10 23:45:00 · 2550 阅读 · 14 评论 -
stm32看门狗定时器记录
文章目录1、看门狗介绍2、独立看门狗3、窗口看门狗1、看门狗介绍STM32 有两个看门狗,一个是独立看门狗另外一个是窗口看门狗。独立看门狗简单来说就是一个 12 位的递减计数器,当计数器的值从某个值一直减到 0 的时候,系统就会产生一个复位信号,即IWDG_RESET。如果在计数没减到 0 之前,刷新了计数器的值的话,那么就不会产生复位信号,这个动作就是我们经常说的喂狗。 看门狗功能由 VDD 电压域供电,在停止模式和待机模式下仍能工作。因此我们就可以在程序死机的时候使用这个独立看门狗来复位程序,原创 2022-04-09 23:45:00 · 1568 阅读 · 0 评论 -
stm32内核定时器的使用
文章目录1、内核定时器介绍2、使用内核定时器3、源码1、内核定时器介绍在 Cortex-M 里面有一个外设叫 DWT(Data Watchpoint and Trace),是用于系统调试及跟踪, 它有一个 32 位的寄存器叫 CYCCNT,它是一个向上的计数器,记录的是内核时钟运行的个数,内核时钟跳动一次,该计数器就加 1。2、使用内核定时器3、源码...原创 2022-04-08 23:45:00 · 1504 阅读 · 0 评论 -
STM32使用CJSON获取心知天气
文章目录1、cJSON库的使用1、程序配置2、新建json数据3、读取json数据2、onenet实战3、腾讯云实战4、阿里云实战本文是接着上一篇文章的后续来写,上一篇写的太长了后面太累了就没写完,决定就是新开一篇来继续把他写完。上一篇文章为: STM32使用esp01s上云,MQTT.fx调试1、cJSON库的使用1、程序配置建议可以看这篇博主讲的,我觉得讲的很好,这里我把他的内容变成我自己的来用下,链接如下:https://blog.csdn.net/weixin_45488643/a原创 2022-04-07 23:45:00 · 2750 阅读 · 12 评论 -
解析GPS数据(长字符串解析示例)
文章目录1、ATGM336H模块介绍2、驱动编写3、源码这里GPS一般返回的都是大量的数据,而且是一行行的那种,大部分数据也不太用的到,所以这个时候用串口DMA空闲中断其实就意义不大,这样我们就可以用一种新的思路来进行数据解析,专门针对这样的数据!!!1、ATGM336H模块介绍这里我用的大概长这样,还有很多其他版本的,不过区别不大,都差不多,可对照学习参数说明:参数详情说明波特率:9600(默认),可用软件设置可用卫星:GPS和北斗双模输出协议:NMEA-原创 2022-04-04 23:45:00 · 5665 阅读 · 64 评论 -
水比赛专用-蓝牙调试器
文章目录1、蓝牙调试器介绍2、功能体验3、程序移植4、实现效果5、源码做比赛的时候免不了要做一些页面方面的展示,亦或者一些遥控什么的方面的远程启动,常见的无线通信方式如蓝牙,wifi等是很多大学生竞赛中的常客,因此这里我就把我之前用的很熟的一款蓝牙调试器给分享下,同时也算是做个记录吧!该调试器是某大佬做的,我只是应用,这里特别感谢这位大佬,提供了这么好用的工具,yyds!,原文链接如下:https://www.jianshu.com/p/1a82624926191、蓝牙调试器介绍此蓝牙调试器为上原创 2022-04-05 19:00:00 · 19317 阅读 · 203 评论 -
使用IIC驱动MPU6050获取六轴数据
文章目录1、MPU6050设备1、MPU6050介绍2、MPU6050的特点3、MPU6050陀螺仪的工作原理2、获取传感器数据3、读取设备1、查看设备是否存在2、读取加速度,角速度和温度3、源代码本文用到的资料手册,详见: data-manual/ 常见IC1、MPU6050设备1、MPU6050介绍MPU6050是InvenSense公司推出的全球首款整合性6轴运动处理组件,内带3轴陀螺仪和3轴加速度传感器,并且含有一个第二IIC接口,可用于连接外部磁力传感器,利用自带数字运动处理器(DMP原创 2022-03-28 19:54:11 · 5847 阅读 · 13 评论 -
使用stm32解析富斯i6接收机(IBUS)
文章目录1、通信协议解析说明2、驱动程序设计3、实测4、源码1、通信协议解析说明常见的官方遥控器大概如下所示:然后官方也公开了通信协议这里我也用逻辑分析仪,抓了一段数据,可以看到基本上和上面说的没什么区别2、驱动程序设计首先是配置时钟,这里是时钟一定要拉到最高,不然通信的时候波特率会出问题(起因是我第一次忘了配然后一直通信失败,读不出准确的数据)3、实测4、源码......原创 2022-04-03 14:00:00 · 13729 阅读 · 24 评论 -
st7735屏幕移植-高清图片显示
文章目录from PIL import Imageimport sysimport osif len(sys.argv) != 4: print("Usage: {} <image-file> <width> <height>".format(sys.argv[0])) sys.exit(1)fname = sys.argv[1]W = sys.argv[2]print("\r\n")print("<width&原创 2022-04-02 23:45:00 · 6904 阅读 · 2 评论 -
stm32内部Flash读写
文章目录1、stm32内部flash介绍2、读写驱动编写3、源码1、stm32内部flash介绍2、读写驱动编写3、源码原创 2022-04-01 23:45:00 · 9692 阅读 · 8 评论 -
RC522(RFID)读写驱动
文章目录1、RC522驱动原理2、手机APP查看卡信息3、驱动移植4、读写卡1、RC522驱动原理2、手机APP查看卡信息这里我参考的这篇博主的文章,讲的还是蛮详细的:https://blog.csdn.net/Ikaros_521/article/details/115958888使用的APP如下所示:可以按照软件操作读取一个卡的信息如下所示,可以看到他是16个扇区,每个扇区有四个块,所以就一共是64块,储存的信息数量是1024byte,计算方式为16416=1024。下面的几页信息如原创 2022-03-27 17:07:25 · 31344 阅读 · 29 评论 -
SPI读写串行FLASH(W25Q64)
文章目录1、SPI协议1、硬件连接2、通讯时序2、W25Q64介绍3、SPI读写驱动编写4、源码1、SPI协议SPI 协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,是一种高速全双工的通信总线。它被广泛地使用在 ADC、 LCD 等设备与 MCU 间,==要求通讯速率较高的场合。==这里就可以对比下iic,iic的速率较低,一般是低速设备之间通讯。1、硬件连接常见的SPI硬件连接图如下所示:相关引脚说明如下:SS(Slave原创 2022-03-31 19:00:00 · 7772 阅读 · 0 评论 -
MPU6050使用卡尔曼滤波来获取数据
文章目录1、使用滤波来获取姿态角2、程序设计3、源码关于滤波的方法来获取数据我们在第一篇文章其实就讲到了,但是没有讲怎么去使用他,因此这里就挑选一个用起来比较好的卡尔曼滤波来说明下,关于其他的比较好的滤波方式,可以见:https://zhuanlan.zhihu.com/p/2288055691、使用滤波来获取姿态角前面提到MPU6050 可以输出三轴的加速度和角速度。通过加速度和角速度都可以得到 Pitch 和 Roll 角(加速度不能得到 Yaw 角),就是说有两组 Pitch、Roll 角。M原创 2022-03-30 16:45:00 · 10464 阅读 · 8 评论 -
移植DMP到MPU6050获取欧拉角
文章目录1、较浅显的姿态解算介绍2、DMP介绍3、DMP移植4、源码经过上一节的介绍,我们可以读出 MPU6050的加速度传感器和角速度传感器的原始数据。不过这些原始数据,对我们来说,用处不大,我们期望得到的是姿态数据,也就是欧拉角:航向角(yaw)、横滚角(roll)和俯仰角(pitch)。有了这三个角,我们就可以得到当前物体的姿态,这才是我们想要的结果。1、较浅显的姿态解算介绍在飞行器中,飞行姿态是非常重要的参数,以飞机自身的中心建立坐标系,当飞机绕坐标轴旋转的时候,会分别影响偏航角、横滚角及原创 2022-03-29 23:45:00 · 7431 阅读 · 6 评论 -
HAL库驱动NRF24L01实现数据传输
文章目录1、NRF24L01介绍2、驱动程序设计1、根据原理图进行封装2、cubemx配置3、收发测试4、源代码本次使用正点原子精英开发板和野火MINI开发板进行采用NRF24L01的数据收发测试,程序编写平台采用stm32cubeide1、NRF24L01介绍我们常见的NRF24L01模块如下所示,其实一般还有更精简一点的,然后还有贴片的,还有就是加上了屏蔽外壳以及还有加上了大功率天线的那种,但其实好像本质都是这个芯片!引脚说明:引脚序号引脚名称引脚方向引脚用途1原创 2022-03-26 23:45:00 · 3390 阅读 · 15 评论 -
串口通信中一些常用的小工具
空闲中断DMA接收不定长数据开启串口,并设置参数,一般情况默认即可配置中断和DMA配置DMA发送和接收函数模式初始化中开启串口空闲中断对中断函数进行处理空闲中断处理函数如下所示源代码如下:UART_DMA.c/* * UART_DMA.c * * Created on: Mar 18, 2022 * Author: LX */#include "UART_DMA.h"#include "string.h"#include "stdarg.h"原创 2022-03-25 23:45:00 · 5820 阅读 · 0 评论 -
步进电机驱动控制总结(一)
文章目录1、步进电机驱动原理2、步进电机驱动设计3、步进电机驱动编写4、源码1、步进电机驱动原理2、步进电机驱动设计3、步进电机驱动编写4、源码原创 2022-03-23 23:45:00 · 6821 阅读 · 6 评论 -
步进电机驱动控制总结(二)
文章目录1、驱动器介绍2、PWM方波直接驱动3、PWM+DMA精准控制4、补充说明本次驱动较常见的42步进电机,就是比较标准的那种电机,应该是有一定代表性的,基本可以应付一些大学生比赛什么的了这里用的两个电机如下所示1、驱动器介绍本次实验我用的如下,驱动模块是DRV8825,和淘宝上比较多见的A4988基本差不多,接口上基本可以混用的。这里店家其实只是做了一个转接板,转接板借口描述如下所示DRV8825模块的接口描述我也提供下,如下所示步进电机接口处我已经用红线圈出来了,因此根据步原创 2022-03-24 23:45:00 · 1998 阅读 · 5 评论 -
SPI写OLED(软硬件切换)
oled.c/* * oled.c * * Created on: Mar 17, 2022 * Author: LX */#include "oled.h"#include "oled_font.h"#define OLED_CMD 0 //写命令#define OLED_DATA 1 //写数据#define OLED_SCL_LOW HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET)#define OLED原创 2022-03-22 23:45:00 · 7486 阅读 · 20 评论 -
HC-SR04驱动记录
文章目录1、工作原理2、读取数据方式3、驱动记录1、工作原理常用的HC-SR04模块如下所示:引脚说明:引脚说明VCC电源,常用5vTrig控制端Echo接收端GND地使用说明:控制端发送一个10us的高电平脉冲,之后再接收口等待高电平输出,一有高电平输出就开始计时,直到低电平到来就可以结束计时,速度X时间,就是我们测量到的距离了。时序图说明其他说明:调节测距长短图中标志的电阻可以调节最大探测距离。R3电阻为392,探测距离最原创 2022-03-21 23:45:00 · 581 阅读 · 0 评论 -
TFT-LCD移植记录
1、TFT-LCD驱动方式及原理2、配置TFT-LCD驱动3、移植驱动函数4、玩转TFT-LCD屏幕原创 2022-03-20 23:45:00 · 1817 阅读 · 4 评论 -
sd卡读写移植记录
文章目录1、spi驱动移植2、sdio驱动移植最近移植了大佬的SD卡驱动,这里做下记录1、spi驱动移植需求来源:需要将数据发送出来,就是在掉电后还能对数据进行保存:使用eeprom的方案,但是这个东西他本身数据量就很小使用sd卡的方案,我感觉是不错的,或者我还想过使用串行flah的方案,但是flah不是掉电还能保存的本文用到的实验平台:野火MINI-stm32开发板STM32CUBE-IDE开发工具所以这里优先考虑sd卡的方案,野火开发板上的sd卡接口采用的是spi的驱动原创 2022-03-17 20:25:42 · 1443 阅读 · 8 评论 -
stm32外设笔记-LCD(二)
文章目录1、PCF8574介绍2、使用PCF8574驱动LCD1602本文用到的实验平台:野火MINI-stm32开发板STM32CUBE-IDE开发工具1、PCF8574介绍前面的文章中我介绍了stm32中iic的用法和LCD屏幕1602|12864的使用这两个方面,其中1602和12864都是可以用更少的线的方法来驱动的,但其实我们使用一些外部芯片也许能达到更好的效果呢。上面提到的两篇文章链接(本文是依赖于这两篇文章的基础而来的):stm32配置总结-iic的使用stm32外设笔原创 2022-03-15 23:45:00 · 2493 阅读 · 2 评论 -
stm32外设笔记-LCD(一)
文章目录1、LCD1602驱动原理2、LCD1602驱动实战3、LCD1602四线驱动4、LCD12864驱动原理5、LCD12864并行驱动6、LCD12864串行驱动本文用到的实验平台:野火MINI-stm32开发板STM32CUBE-IDE开发工具1、LCD1602驱动原理这个是属于之前用51单片机时候用的东西了,还是比较经典的,主要是这么大块屏幕然后价格也还可以,所以我觉得即使是在当今,如果追求极致性价比的话,还是有必要了解了解的!实物图如下所示:常见原理图如下所示2、L原创 2022-03-14 21:47:07 · 1843 阅读 · 2 评论 -
stm32外设总结-定时器使用
文章目录1、stm32定时器资源概述2、使用定时器基本定时1、stm32定时器资源概述2、使用定时器基本定时原创 2022-03-13 21:26:18 · 8004 阅读 · 2 评论 -
stm32外设笔记-单总线设备(DS18B20|DHT11)
文章目录原创 2022-03-12 23:45:00 · 4872 阅读 · 4 评论 -
stm32外设笔记-按键状态机
文章目录第一种方式回调函数代码如下Button btn_k1,btn_k2;#define BUTTON_KEY1_ID 1#define BUTTON_KEY2_ID 2//void button_pressing_callback(uint8_t button_id)//{// switch(button_id)// {// case BUTTON_KEY1_ID:// printf("KEY1被按下\r\n");// break;// case BUTT原创 2022-03-11 23:45:00 · 3112 阅读 · 6 评论 -
stm32使用数学库-基于stm32cubeide
dsp的库位置,以F1为例:打开如下所示使用如下几个文件复制到项目文件夹右击项目点击属性进行编辑,按照如下步骤添加路径和库这里注意这里是M3的核,所以选ARM+MATH_CM3这里库的名字编写规则为删去前面的lib还有后缀效果如下:需要使用串口,在cubemx中使能串口,然后添加串口重定向#include "stdio.h"#ifdef __GNUC__#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)#els原创 2022-03-11 02:45:00 · 3605 阅读 · 1 评论 -
stm32配置总结-iic的使用
使用软件来模拟iic#include "iic.h"#define fac_us 72 //时钟频率,单位MHZ/*微秒级延时函数*/void delay_us(uint32_t nus){ uint32_t ticks; uint32_t told,tnow,tcnt=0; uint32_t reload=SysTick->LOAD; //LOAD的值 ticks=nus*fac_us; //需要的节拍数 told=SysTick->VAL;原创 2022-03-09 23:30:00 · 11387 阅读 · 9 评论