头头の嵌入式开发笔记
文章平均质量分 62
头头の嵌入式开发笔记
煜个头头
哈工深在读研究生,本科华南理工大学。2021RoboMaster机甲大师赛华南虎电控组成员,热衷于机器人相关知识,也是个热爱生活的人!
展开
-
ARM汇编常用指令汇总
文章目录ARM常见汇编指令的汇总1.EQU2.AREA3.DCD4. ENTRY5. START6. LDR7. STR8.BEQ9.MSR/MRS10.B/BL/BX11.PUSH/POP逻辑运算符ARM常见汇编指令的汇总1.EQU赋值;将0x40013800 赋值给变量USART1_BASE(寄存器地址)USART1_BASE EQU 0x40013800 2.AREA用法:AREA sectionname{,attr}{,attr}…sectionname:要原创 2021-10-25 20:18:01 · 2679 阅读 · 0 评论 -
分享一些在LCD/OLED上绘制图像的软件使用技巧
介绍LCD/OLED相信有过嵌入式开发经历的同学都有使用过,但是绝大多数人都是使用一些广为流传的驱动函数,在上面写写英文,写写汉字,画一些矩阵和圆这种简单的图案。作为一个超爱花里胡哨的选手,我当然不允许我的显示屏幕上只有这些东西,所以我总结出了一整套在LCD/OLED上绘制图案的方法,包括图片,图标和GIF。欢迎大家与我交流:2250017028@qq.com图标绘制使用软件:IconWorkshop + Img2LcdIconWorkshop首先打开软件,选择UNIX图标,再选择想要生成的原创 2021-10-10 21:34:33 · 4573 阅读 · 1 评论 -
关于蓝牙(HC05)主从机配对这件事
说明:蓝牙应该是最常见的无线通信方式了,本人最近在做项目中需要用到单片机的板间通信,在此用了蓝牙HC05实现,期间遇到了一些坑,分享出来,希望对大家有所帮助。1.关于蓝牙选型首先要注意一个点,不是所有的蓝牙模块都可以作为主机,可以作主机使用的,模块上会有两块芯片。尽管网上说主从机配对不限型号,用作通信的两个蓝牙型号最好一致。我一开始用的是一块HC05和一块BT05,结果即使各个参数配置相同,还是无法正常通信。然后我将BT05换成另一块HC05,配置一对上,就正常通信了。2.关于需要配置的AT参数.原创 2021-10-10 20:21:24 · 2353 阅读 · 0 评论 -
关于陀螺仪dmp初始化及驱动不正常这件事
只是列举一些典型的例子,之后再遇到其他的BUG会继续补充报错一:dmp_load_motion_driver_firmware()失败说明I2C通信不正常,检查SDA_IN()和SDA_OUT()是否正确,IO口速度配置是否拉高,I2C的延时是否足够大(对于F4系列的芯片,由于内部时钟频率高,I2C延时可以减短,而对于F1系列则需适量增长)报错二: run_self_test()失败首先检查是否自检函数有问题,因为流传的大多数自检函数都被修改过,可能会与当前使用的陀螺仪产生不适配的情况。推荐使用.原创 2021-10-10 02:38:34 · 2195 阅读 · 5 评论 -
关于使用STM32F4驱动PS2报错这件事
起因在做项目移植PS2代码的时候,本来以为简简单单的一件事,关了好几个小时的时间,读到的数据一直不正确(数据跳动不稳定),本来决定放弃,但还是决定将坑一踩到底!所以就有了这篇文章解决方向以之前排坑的经验,问题可能出在以下几个地方硬件问题IO口配置时钟树配置以及定时器配置底层驱动代码不适配(广泛流传的代码都是F103版本)问题探索硬件问题找了一块F103板子,正常驱动,排除了PS2损坏,线材断路问题。IO口配置按照官方例程配置的IO口,并测试了每个IO口输出正常,也试过修改IO口原创 2021-10-08 01:42:40 · 2902 阅读 · 3 评论 -
关于在LCD上写字的这件事(字库串口录入加调用)
如何在LCD上写字说明: 在LCD上显示ASCII码时,会先将ASCII码对应的图像数组录入到内部FLASH,再直接读取写入就好。但是由于字库过大,甚至比芯片内部FLASH的存储内存还大,所以需要将字库录入外部FLASH,由于字库中每个汉字的顺序也是固定的,所以可以定位到对应的FLASH存储区来读取汉字图像信息。思路:我采用的是最简单粗暴的方式,通过串口发送字库的二进制文件到单片机中,单片机接收到信息再转存到FLASH中。1.字库录入(1)芯片清除一般外部FLASH的封装库都会带有这个API函原创 2021-10-05 12:03:46 · 1142 阅读 · 0 评论 -
STM32底层封装库(TSML)
TSML的定位:在嵌入式开发的过程中,避不开的一步就是驱动外设,但是很多时候,这个操作都是相似的,且可复制的,所以就有了网上数不清的外设封装库。但是,不同的外设文件,往往代码风格和代码接口各异,用于同一个项目中会使代码风格一致性和可读性得到破坏。好在本人所在的机器人实验室开发了一套便于移植的封装库(由于权限原因,不能公开),本人在该库的基础上,创建了一套自己的库,里面包含了常见的外设驱动,如SD卡,IMU等,还有卡尔曼滤波等中层算法。希望和大家一起交流成长,对库的代码有存疑之处,也欢迎批评指正:22.原创 2021-09-04 23:49:45 · 908 阅读 · 0 评论 -
如何写出更规范的代码之cpp和h文件模板
众所周知哈,一般一个完整的代码文件包括.cpp和.h两个文件,有些小伙伴为了节省时间,.cpp文件开头就是main函数,.h文件开头就是#include,这就很不优雅哈。所以,参考了我们实验室的代码规范,我写了一套我自己的代码模板,供大家参考哈1. cpp文件/** ****************************************************************************** * Copyright (c) 2021 - ~, TuTu Studio原创 2021-09-04 21:01:38 · 453 阅读 · 0 评论 -
PWM+DMA驱动SK6812MINI灯带
SK6812MINI是一款常见的RGB灯带,它的工作状态稳定,驱动简单,通过简单的代码即可实现流动彩虹灯的功能。下面让我们来看一下它的具体实现流程吧!1.硬件配置PWM配置:选择对应IO口的TIM,并开启PWM模式TIM参数配置:周期为105(因为TIM3挂载在APB1上,对应的时钟为84MHz,84M/105 = 800K,正好是灯带的数据传输频率)PWM选择模式1,向上计数,并且输出极性为高电平有效,这个与灯带的驱动相配合附:PWM模式和极性选择DM.原创 2021-09-04 20:47:11 · 1697 阅读 · 0 评论 -
Dr16&DT7的使用方法
简称备注:原理DR16与DT7的通信:两者通过D_BUS协议进行通讯,具体通讯协议已经封装在DR16和DT7中,只要两者配对成功,拨动控制器,接收器即可接收到对应的信息DR16与单片机的通信DR16会不断向单片机发送数据,即使遥控器不动。单片机通过串口DMA接收的方式,配合串口的空闲中断对DR16传输过来的数据进行处理, 通过对数据进行解包分析,从而得到相应的遥控器各个通道的数据,来控制不同电机,进而实现操控英雄。注意事项:串口2的波特率设置为10000,这是DR1原创 2021-09-04 20:38:27 · 3125 阅读 · 6 评论