自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

原创 树莓派驱动开发----spi flash设备w25q64开发

使用方法 :./w25q64App /dev/w25q64-device <cmd> <address> <cnt> <data> ...擦掉0x000000 ,因为我设置的是扇区擦除,所以擦到0x001000,既4k,4096字节。cnt :读写的长度 读可以是0x000000-0x7FFFFF 写则是1-256。写入5个字节,0x41 0x55 0x66 0x88 0x79。读出数据看看是否擦除成功,如图,全是0xff,说明擦除成功!代码就不放了,要的私聊~哈啊哈,有价值肯定有回报!

2024-04-27 20:28:14 179

原创 树莓派驱动开发----iic驱动oled屏幕篇

有点模糊,我直接说吧,修改设备树,iic1,地址0x3c,然后编写驱动文件,app文件,挂载驱动模块后在终端输入。这就是使用的方法,可擦除、可写字符串、字符、数字、带符号数字、16进制、二进制还有帮助信息哦~设计知识还是很多的,比如IO接口,用户空间和驱动文件数据传输等等。先这样啦,要代码的私聊。

2024-04-23 14:47:14 408

原创 树莓派驱动开发--驱动文件代码的浅度分析(以iic的为例)

总线-驱动-设备 模型总线:把重复的东西,比如iic的时序实现代码(这样一样的重复的)统一让总线完成,然后提供统一的接口让外面调用.驱动:新字符设备的那一套东西.设备:具体的设备在设备树上的描述.所以,我们的思路是,按照内核规定的统一标准流程来开发,也既按照总线-驱动-设备模型流程.我们知道,总线是统一的东西,那么内核肯定是已经帮我们写好写死了,我们只需要知道怎么去和它联系怎么和它挂钩就好.注意:总线是连接驱动和设备的桥梁.

2024-04-15 11:37:36 828 1

原创 树莓派驱动开发--iic篇(JY901S陀螺仪的三轴角度简单读取)

修改编译设备树》》》编写编译驱动文件》》》编写编译app文件》》》ftp挂载将前面3复制到树莓派的对应位置》》》加载驱动模块》》》运行测试app流程举一反三,先去学会我的那篇树莓派驱动开发--点亮led,即可按上述步骤完成iic开发。一、

2024-04-13 21:53:24 523

原创 树莓派驱动开发--点亮led篇

一、

2024-04-13 15:31:37 635

原创 树莓派驱动开发--认识设备树篇

编译好内核后,进入设备树目录:(我的在)/home/hsw/linux_kennel/linux/arch/arm/boot/dts。

2024-04-13 14:48:37 998

原创 -bash:./app:没有那个文件或目录(已解决)

这说明我们使用的编译工具需要更换,我编译app使用的是64位的交叉编译器,我换成32位之后。目录下有文件,并且权限也是够的,都是就是是没有。如上图,可以发现,bash是32-bit,如上图,可以发现,app是64-bit,进入app所在目录,执行。进入/bin,执行命令。

2024-04-13 14:35:16 355

原创 树莓派驱动开发--搭建环境篇(保姆级)

一、ubantu相关。

2024-04-13 13:09:12 1215 1

原创 树莓派中解决错误:1 http://raspbian.raspberrypi.org/raspbian buster/main armhf nfs-kernel-server armhf 1:1.3.

自带的是国外的软件源,在国内使用经常会遇到无法下载软件的问题。将初始化中的代码中默认的官方软件源注释掉。版本)的下载源改为阿里云软件源的方法。对于这个问题,解决方法是更换源;二、更新本地的软件源。

2024-04-11 17:39:03 178

原创 Linux驱动开发

最开始的时候是字符设备驱动框架,后进价到新字符驱动框架,这两种方式做Linux驱动开发的时候,就会有一个问题就是太多文件混在一起,不方便移植和扩展,具体指外设驱动文件和具体设备文件写在一起,改设备时,要整个文件编译,浪费资源,单单编译入内核的空间占用就很没必要,并且,外设驱动文件是唯一的,一经封装好无需改动;第一,适配器在出厂前就由原厂工程师编写好,并注册进内核,因为比如iic,适配器的工作之一就是完成iic底层时序,比如iic_start,这些东西对任何iic设备都是一样的。本质:一套统一的规则。

2024-03-03 21:26:42 251

原创 CPU工作原理(stm32)

下载到flash中,程序开始启动时,flash中的内容会被分页加载(不限于这种加载方法)到ram中,CPU则从ram中取内容,这里的内容包括指令、地址、数据等。我们写的程序是高级语言,编译器会编译成汇编语言,进一步这些汇编指令(对应指令集)和数据会被编译成机器语言01。【3D动画揭秘CPU是如何工作的-哔哩哔哩】 https://b23.tv/MeRU04Q。CPU得到指令后解码,执行,完成!

2024-02-27 10:28:05 209

原创 arduino c语言串口发送16进制数据时,高位为0时被省略的问题

【代码】arduino c语言串口发送16进制数据时,高位为0时被省略的问题。

2024-02-07 21:14:51 231

原创 stm32 OTA升级(esp32+阿里云)

esp-wroom-32,stm32f103c8t6,w25q64,oled,usb转ttl(用于调试),和杜邦线若干。stm32f103c8t6:作为主控板,整个项目的处理核心,负载着bootloader程序和运用程序。w25q64: 作为存储模块,存储升级程序和标志位。esp-wroom-32:作为网络通信,负责整个项目与阿里云平台的对接。stm32接收到后开始升级,并将升级信息打印,及打印升级进度。代码:由于制作艰辛,私聊有偿出。连接阿里云,且添加产品和升级包。

2024-02-04 09:38:10 301

原创 stm32的内存系统学习

(动态)静态量、函数参数(堆,栈),需要动态分配内存,则放到ram,且是系统运行动态分配,用完就删,结合上图。可以看出,ram被映射到rom的0x20000000,外设寄存器被映射到ROM的0x40000000。程序出行怪状,或者说是不符合想象,可能是栈给的太少、栈溢出,那怎么合理规划栈空间呢,靠经验,新手可以参考。了解了芯片上各个器件和芯片外围器件的地址范围后,我引出一个问题,我们写的代码,放在哪?由于栈和全局变量加载和堆组成的ram占用,所以栈大小应小于ram。

2024-01-20 01:31:57 417

原创 C语言--标准库函数

进入后,选择referen,然后选择c libaray,进去点函数有例子!

2024-01-15 17:09:09 368

原创 树莓派驱动开发~点亮一个led灯

对平台总线platform的理解:在没有引入平台总线概念之前,我们总是将驱动配置文件和具体设备文件混在一个文件中,这样就很乱,然后,Linux就引入字符驱动、块驱动等,将一些配置结构体化,都化为内核文件,进一步,为了分层思想,引入平台总线,这个是个大范围,具体包括gpio、pinctrl、IIC、SPI等总线,平台总线把设备文件和驱动文件分离了,但是,还是加载到内核中,导致内核空间大,于是推出设备树,设备树就是描述设备属性信息的设备配置文件。第一步:修改设备树,添加自己的节点,

2023-12-23 16:42:58 444

原创 arduino c语言串口发送16进制数据时,高位为0时被省略的问题

else{解决方法如上。

2023-12-22 19:10:19 469

原创 树莓派驱动开发的学习记录(个人理解)

修改好后,退回到/home/hsw/hsw_kernel_git/linux/下面,使用make -j5 dtbs,编译好的.dtb会打印出来,根据这个路径去找到它,并拷贝到树莓派的/boot下。对于第一点我直接用官方提供的,就不自己去弄引导程序了,不过在开发多了,我就变成使用配置文件加ssh远程登陆了,ssh和wpa_...文件。修改设备树文件,路径在,比如我的在 /home/hsw/hsw_kernel_git/linux/arch/arm/boot/dts。对于第三点,我也是直接使用官方镜像的。

2023-12-16 12:48:23 45

原创 树莓派串口学习记录

if (hex_list[0] == "f1" and hex_list[10] == "ff" and hex_list[11] == "ff"): //判断包头包尾。def Serial_send_data(Tx_data): //发送的使用。hex_list.append(hex_data) //加入列表。print("接收到数据:", hex_list[0])参考这个把串口改好。

2023-12-11 23:01:08 45 1

原创 STM32上电就进IDLE(空闲中断)分析及解决方法

空闲中断最强的bug

2023-12-07 15:33:49 957 1

原创 esp32的待应用知识点

6.保留消息可以用来提前发布指令,比如我想植物灯在每天早上执行指令1,我不可能在程序里延时1天或者不断发布指令1吧,所以这时我就可以发布保留信息,在接收端订阅时,就给他实现高效率不占用软件资源效果。3.MQTT协议目前最流行的物联网协议,重点内容是报文形式,发布 订阅来通信,主要id可以用库函数生成的出厂码来避免id重复,连接也挺重要,反正搞懂这三的报文上的变量及会应用即可。4.订阅有不同的等级,这个可以用来做植物灯,具体是通过发布不同等级的主题,然后订阅+通配符形式来多读。2.手机配网库函数使用。

2023-11-27 08:41:02 31

原创 基于主控板“esp-WROOM-32”WIFI模块--多功能智能台灯开发

3.申请互联网平台——我这个项目需要申请一个请求天气信息和一个请求控制信息的平台(请求控制信息的意思就是用手机连接这个平台及一个WiFi,你手机发送的控制信息会通过WiFi传给控制平台,开发板也连接该平台和一个WiFi,手机和开发板连接的WiFi可以不一样,因为可以实现异地远程控制,控制平台然后会将控制信息通过WiFi传回给开发板,从而实现控制,该项目的控制信息为灯的指令,后面会介绍。原理图如图所示,本来想直接给文件的,但是不知道怎么添加,知道的朋友可以留言!把像素改成320 * 180,重点!

2023-11-27 08:40:32 151

原创 对 esp32-wifi 功能实现 物联网的学习规划电磁灯项目

3.保留消息,给灯具设定一个周期的指令,比如每天早上干嘛,为设立一个保留消息,灯具在每天早上订阅时就会接收到这个指令,从而执行相应的操作。1.心跳机制:60秒,即在心跳时间的1.5倍时间内如果客户端没有给服务端发送心跳消息,也即意外掉线了。5.自动连接网络信号最好的WIFI,以及可以通过连接esp的AP模式进行网路配置。2.遗嘱,配合第一点实现意外掉电时,给订阅端一个提示。6.密码认证功能,锦上添花。(主题前面要加上 “用户名/”)4.服务等级QOS的设置,设置为1,让消息传输更加稳定。

2023-11-27 08:40:13 35

原创 浅谈我对脱离集成开发环境的嵌入式开发的理解

设备树一般有官方提供的,上面描述的是这款开发版的外设及系统,dtsi文件,还有work–dts文件,这个一般放我们具体化的外设,可以用&_追加,不同设备树文件,只要目录级别相同,系统编译时就会编译到一起,追加的便会加到相应位置。说到驱动开发了,就不得不说说设备树了,Linux系统开发风格吧,可以这样理解,平台总线,把用户层,驱动层,内核层分开,这样就更加强大了,设备数描述外设,驱动注册内核,用户使用接口访问,层次分明,直呼牛掰!

2023-11-20 20:49:00 37 1

原创 Linux学习记录

用户层调用内核的open函数,write函数等,去访问驱动层,在底层还会独立封装出相应型号的开发版的初始化,通常是头文件,和结构体,驱动层通过结构体应用初始化信息,这样子,用户层使用open即可通过驱动层去操作硬件。在这里,编程习惯是用结构体来统一管理,注册一个设备节点,然后用结构体引出与open,write函数接口,当用户使用open,write设备节点时,实质是操作了驱动层的结构体成员。1. 下载的.deb文件直接双击进入,点击安装即可,如果是命令行。首先,编写驱动程序,具体步骤。

2023-11-03 16:27:04 29

原创 操作系统开发开发版的学习记录

1.初步认识:单片机可以跑操作系统,SD卡上面,类似树莓派,把操作系统镜像下载到SD卡里面,就可以在单片机上跑操作系统了,当然单片机有联网功能的话,可以ping一下看看有没有正常联网,ipcong看看其网络地址,然后到xshell远程连接进行开发,只有操作系统是远远不够开发单片机的,编译脚本即编译规则,交叉编译链,编译链,也是必要之一,一般官方会提供,直接下载就好,如果单片机性能好,自身自带编译链,官方会放到镜像里了,如果不行,那么就要用交叉编译链,固件库也是必要之一。

2023-10-27 14:55:47 35 1

原创 STM32F1系列学习总结:对外部中断学习(标准库方式)

2.中断分组3.外部中断配置建议使用中断的情况:不清楚一个信号到底哪个时刻会发生,但是又不能错过,换句话说就是,一个信号必定发生,但是不知道什么时候发生,这个时候如果没有中断,那么CPU就要不断轮询这个信号是否发生,这样一来,CPU就要不断被打断,效率低下,如果有中断,那么CPU就能专心干别的事情,让中断系统去检测这个信号,检测到再提醒CPU,这里有个更紧急的事情要处理,你先处理一下,想想即可知,效率提高很多。

2023-10-22 13:53:49 197 1

原创 STM32F1系列学习总结:对ADC外设学习(标准库方式)

2.ADC配置3.ADC工作模式4.ADC循环扫描模式配合DMA自动化搬运数据,减轻CPU的负担规则组就是16个通道共用一个数据寄存器,ADC扫描16个通道数据刷回数据寄存器,故应及时读取数据,不然会覆盖。注入组就强大了,4个通道,但是每个通道配有一个数据寄存器,这样就不怕数据覆盖问题了。

2023-10-21 01:38:37 131 1

原创 STM32F1系列学习总结:对DMA学习(标准库方式)

最后,总结一下:尽可能利用DMA来做一些大量的、重复的工作,来最大限度减轻CPU的负担。

2023-10-21 01:16:10 91 1

原创 STM32F1系列学习总结:对SPI通信学习(标准库方式)

最后,总结一下:1.时序很重要。2.SPI是指令加交换字节方式通信的,具体就是,给从机发送指令,这些指令都是外设规定好的,我们要查看它们的手册才知道具体指令是干嘛的,比读指令,就是先发一个读指令给从机,从机就知道了,主机是要进行读操作,当然,这些都是通过交换字节实现的,有可能一方的字节数据为无用数据。3.软件要注意SCL的高低电平时机进行交换字节,而硬件则是看标志位,两者实质一样,只是方式不一样而已。4.软件只有高低电平时机标志,硬件则是有寄存器标志位。

2023-10-21 01:05:40 133 1

原创 STM32F1系列学习总结:对I2C通信学习(标准库方式)

最后,总结一下:1.可以软件模拟,也可以使用硬件资源。2.理解时序最重要。3.应答和等待事件应用好。4.DMA功能可以减轻CPU压力,在传输大量数据时。

2023-10-21 00:30:13 132 1

原创 STM32F1系列学习总结:对USART串口通信学习(标准库方式)

2.USART时序介绍3.USART包头包尾4.USART配合DMA使用我们只说常用的模式一些:点对点通信;无任何应答机制,双方不会理会数据是否已经被对方接收,只会不断按设定波特率发送,直到发完,故要及时接收数据,一般是配置中断接收;有发送寄存器和接收寄存器,有TXE和RXNE标志位配合DMA。常采用加包头包尾方式发送数据;最后,总结一下:1.USART最常用8位无校验。2.我们只需置位发送寄存器,也即写入数据,硬件会自动帮我们生成对应波形发送出去。

2023-10-20 23:27:08 245

原创 STM32F1系列学习总结:对定时器学习(标准库方式)

顺势介绍其定时功能、定时触发中断功能2.定时器的输出比较功能--pwm波的应用3.定时器的输入捕获功能--测频测周法测量频率(主从模式的应用使用全硬件自动化)4.定时器的编码器接口硬件资源--编码电机测速(主从模式的应用使用全硬件自动化)

2023-10-20 16:46:39 311 1

原创 STM32F103C8T6+I2C+DMA读取陀螺仪模块JY901S(硬件I2C

说明:1.本实验代码适用移植一切stm32f1系列;2.本实验使用的是外设资源硬件I2C2;3.本实验运用的是DMA单次模式,如果需要DMA的循环模式,请移步我的另一篇文章;4.本文章不提供陀螺仪校准教学,并是在没有校准陀螺仪情况下读取数据;5.本文章是作者的学习记录及心得,如有不足,欢迎指正。总结:亲测stm32f103c8t6最小系统板通过片上外设资源I2C配合DMA读去陀螺仪模块jy901s偏航角有效。

2023-10-13 23:33:59 1418 2

原创 浅谈中断函数中调用延时函数存在的bug及解决方法

我经过探索之后发现了问题所在,就是,那些比如按键触发等需要人为参与的中断,均会存在此问题,原因就是:人为操作时间如果短于延时时间,则程序在触发中断过程中,比如按下按键过程均视为中断触发,计时器在计时,延时时间已过,故程序在等待已超的计时器必然等不到,比如需计到2000,而触发中断过程后就已经记到2500,这样就会卡死。既然你要避免人为操作时间导致计时器计过,那么我就再来一个级别更高的定时器中断,让它每隔一段时间计数一次,则你在要延时的地方加一个判断函数即可,即计数在增加,计到多少换算成延时时间。

2023-08-31 14:04:57 1596 4

原创 如何简化main.c文件

本文总结一下简化main.c文件的方法——类

2023-05-12 01:45:51 206 1

原创 关于esp32,esp8266闪存esptool的问题——Failed to execute script esptool——解决方法

esp32 sketch data upload这个选项→_→然后经过我九九八十一个小时的探索,最终发现是因为2.0.0版本及以上不支持该功能,没办法我又下载了一个1.8.19版本的,这次果然有了那个上传选项,但是呢,又有新问题。它报了 Failed to execute script esptool 这个错误,然后我又硬着头皮,找呀找,最终我发现了。虽然调试过程很艰难,但是努力总会有好结果,我的感受就是努力了这么多是值得的,因为我解决了问题,很有成就感→_→!哈哈,如果对你有帮助,哈哈,给个三连哈!

2023-04-14 22:22:19 923

原创 在ardunio开发环境下用esp32测试RGBled灯

WiFi.h>,(装本版低一点的,不然有错误code;)和对esp32的烧录。首先我们要有ardunio ide,和对“然也物联”平台的申请,其次,我们要用到的库有。

2023-02-13 18:21:22 686 1

中学电路虚拟实验室 V5.6.exe

中学电路虚拟实验室 V5.6.exe

2022-12-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除