- 博客(135)
- 资源 (21)
- 收藏
- 关注

原创 STM32 串口DMA方式接收字符串
手把手配置HAL库串口的dma接收及程序编写(1)首先在cubemx配置uart环境1.首先在RCC中的high speed clock选择晶振 crystal.2.在system core 中选中SYS,在右侧debug中选择serial wire.在connectivity中选中USART1,mode选择asynchronous.参数设置如图所示,我选择默认设置,波特率为115200。这里面的不用管在NVIC Settings中将USART global interrupt 的e
2020-08-15 11:12:31
4352
5

原创 c语言指针 a与&a解析
a与&a例如:int *p;int a[5];p=a; //可以p=&a //不可以 指针不兼容 这是为什么a与&a到底有何不同,问题分析p所存地址对应大小为int型(四个字节的空间大小);a做右值代表数组的首元素的首地址,是首元素的首地址,因为也为int型,所占字节数相等,所以compatible。&a做...
2020-05-04 10:52:47
1160
原创 Scheme的作用,浏览器唤起APP
常见在手机浏览器打开某个网站,会有个 App 内打开的按钮,点击直接打开APP且跳转到该详情页,用的基本都是Scheme。
2024-05-29 17:55:16
584
原创 SC8P_汇编指令一览表
因此,可以这样用英文理解TESTZ指令:“测试一个寄存器或内存单元中的值是否为零,如果为零则设置标志位,否则清除标志位”。, 数据存储器 R 加“1”,结果放入 ACC,若结果为“0”,则跳过下一条指令。, 数据存储器 R 减“1”,结果放入 ACC,若结果为“0”,则跳过下一条指令。, 数据存储器 R 加“1”,结果放入 R,若结果为“0”,则跳过下一条指令。,数据存储器 R 减“1”,结果放入 R,若结果为“0”,则跳过下一条指令。, 数据存储器 R 送至 ACC,若内容为“0”,则跳过下一条指令。
2023-03-20 20:45:42
1746
原创 输入网址到获取页面的过程
DNS解析:首先,浏览器会检查本地DNS缓存,如果缓存中没有该网址对应的IP地址,则向本地DNS服务器发送查询请求,本地DNS服务器会向根域名服务器发起查询,获取该域名对应的顶级域名服务器地址。服务器响应:Web服务器接收到HTTP请求后,会根据请求信息生成HTTP响应,包括响应状态码、响应头信息和响应正文等。然后将HTTP响应发送回浏览器。发送HTTP请求:TCP连接建立后,浏览器向Web服务器发送HTTP请求,请求中包含了需要访问的资源路径、请求方法、请求头信息等等。
2023-03-15 15:41:58
184
原创 TCP/IP协议族与编程语言
在上述示意图中,TCP/IP协议族包括了四个层次:应用层、传输层、网络层和链路层。Web开发、移动应用开发、大数据处理。游戏开发、图形界面开发、机器学习。操作系统、嵌入式系统、游戏开发。数据科学、人工智能、Web开发。Web前端开发、移动应用开发。Web开发、服务器端开发。
2023-03-15 15:03:14
416
原创 家庭网络分析
路由器是一种网络设备,主要用于将互联网服务提供商提供的宽带信号转换为家庭网络所能识别的信号,并将这个信号分发给家庭中的多台设备,使得这些设备可以通过WiFi无线网络连接到互联网上。NAT(Network Address Translation)即网络地址转换,是一种网络协议,它可以将内部网络的私有IP地址转换为公网IP地址,从而实现内部网络中的设备访问互联网的功能。简单来说,光猫就是一个信号转换器,它将互联网服务提供商的信号转换为家庭网络所能识别的信号,使得家庭网络能够与互联网连接并通信。
2023-03-15 13:30:41
625
原创 vim基础使用
e file –关闭当前编辑的文件,并开启新的文件。如果对当前文件的修改未保存,vi会警告。插入模式:可以输入文本,在正常模式下,按i、a、o等都可以进入插入模式。/something: 在后面的文本中查找something。正常模式:可以使用快捷键命令,或按:输入命令行。g0: 移到光标所在屏幕行行首。ctrl+f: 下翻一屏。ctrl+b: 上翻一屏。:wq – 保存并退出。:x – 保存并退出。n: 向后查找下一个。N: 向前查找下一个。:w – 保存修改。gg: 到文件头部。
2022-11-24 15:19:22
335
原创 JSON文件解析
JSON 是一种纯字符串形式的数据,它本身不提供任何方法(函数),非常适合在网络中进行传输。JavaScript、PHP、Java、Python、C++ 等编程语言中都内置了处理 JSON 数据的方法。Object对象Array数组键/值对(名称/值)的集合值的有序集合使用花括号{ }定义使用方括号[ ]定义在每个键/值对中,以键开头,后跟一个冒号,最后是值多个键/值对之间使用逗号,分隔数组中每个值之间使用逗号,进行分隔。对象的最后一个键/值对,不可以有逗号数组中最后一个值,不可以有逗号。
2022-10-10 15:38:11
779
原创 web前端HTML语法及拓展
HTML(代表超文本标记语言)是构成大多数网页和在线应用程序的计算机语言。超文本是用于引用其他文本片段的文本,而标记语言是告诉 Web 服务器文档的样式和结构的一系列标记。
2022-10-09 18:36:44
669
原创 单片机指令周期
一般STM32系统的外置晶振为8MHz,主时钟频率为晶振时钟的9倍频,即72MHz的时钟周期。1.25DMips/MHz就表示1秒每MHZ的速度能执行1.25M个Dhrystone指令。MIPS/MHz 表示 CPU 在多少MHz的运行速度下可以执行多少个MIPS。晶振频率12MHz,12个时钟周期 = 1个指令周期 =晶振频率12MHz,则时钟周期为。这里写一个stm32的延时函数。机器周期 = 晶振频率的倒数。
2022-09-24 14:09:50
1571
原创 stm32 iap在线升级经验总结
使用keil编译时,函数地址已经确定好了,存放地址在下图IROM设置的内存区域,与flash位置无关。在bootloader中,需要注意的点是设置app的跳转地址,本地内存地址以及大小。在线升级 内存资源使用情况如下图所示。.........
2022-08-15 11:58:50
428
原创 stm32 USB HID+CDC 鼠标键盘串口 组合设备配置解析
查阅网上的博客与代码,很多都是关于USB的鼠标配置、USB的键盘配置、USB的虚拟串口配置,稍微深入一点的会将鼠标键盘合在一起,但移植起来就会报很多错误,要么是检测不到,要么是警告,这很正常,因为不理解这些数字代表着什么。但只要理解每个数字代表什么意思,想错都难,干货满满,和我一起学习吧其一,组合设备需要对设备描述符修改为0xEF,0x02,0x01,若想了解这三个参数可以百度了解一下,里面有详细的介绍,这里不做说明。看起来很懵对吧,其实很多值是固定的不需要修改,只有几项需要修改而已。而且这个配置不随
2022-07-05 00:59:13
5675
4
原创 stm32 USB描述符参数与对应功能
【说明:】在设备或接口分类上均可彻底分清使用的(Usage = Both),即在任一处描述符中定义即可的分清楚使用的类(Usage = Both)的基本类有:02h ------------- 通信及CDC控制类;DCh ------------ 诊断设备类;EFh ------------- 混杂设备类;FFh ------------- 厂商定义的设备类。【说明1:】当设备类型bDeviceClass = 0时,说明类型将由接口描述符中定义的为准。【说明2:】从设备描述符表格中可知,有3个
2022-06-29 19:21:39
1350
原创 释放双手-PyAutoGUI 快速构建自动化操作脚本
PyAutoGUI允许您的Python脚本控制鼠标和键盘,以自动与其他应用程序进行交互。
2022-06-06 19:41:13
787
1
原创 linux命令-大佬都在用的命令
1. scp命令作用:不同服务器之间传输文件scp是Linux系统下基于ssh登录进行安全的远程文件拷贝命令。scp是加密的scp的命令格式scp [参数] [源路径] [目标路径]命令参数作用-p保留原文件的修改时间,访问时间和访问权限-q不显示传输进度条-r递归复制整个目录-v详细方式显示输出-P指定数据传输用到的端口号2. ldd命令列举当前可执行程序或者动态链接库所依赖的所有动态链接库3. chown修改文件的用户权限,
2022-05-31 00:06:18
134
原创 linux交叉编译工具链
1 源代码编译成可执行程序2 不同设备需要不同的交叉编译工具链,3 尽量选择本平台开发时所用的交叉编译工具链交叉编译工具的安装将压缩文件保存到/usr/local/arm目录下,用于存放交叉编译工具链,存放在哪都可以,尽量规范。解压缩进入bin目录,执行./arm-xxx-linux-gcc-xxx -v,若看到交叉编译工具链的版本信息,则代表安装成功将交叉编译工具链添加的环境变量(我把它理解为全局变量中),export PATH = /usr/loacl/arm/arm-xxx/bin:$P
2022-05-28 14:57:30
964
原创 iperf与网络监测
什么是iperf?Iperf 是一个网络性能测试工具。Iperf可以测试最大TCP和UDP带宽性能。Iperf具有多种参数和UDP特性,可以根据需要调整。Iperf可以报告带宽,延迟抖动和数据包丢失。如何使用iperf硬件条件1 网络处于同一网段2 若两个主机直连,需要有一个作为网关,另一个作为设备3 若两个主机连接带网关的交换机,或者路由器时,两台可都做设备4 获取到两代主机的IP地址参数讲解iperf -s 以server模式启动iperf -c 以client模式启动通用参数
2022-05-27 14:57:16
219
原创 STM32与GD32标准库不完全对比表
GPIO.h对比STM32-GPIO函数GD32-GPIO函数void GPIO_DeInit(GPIO_TypeDef* GPIOx);void gpio_deinit(uint32_t gpio_periph);void GPIO_AFIODeInit(void);void gpio_afio_deinit(void);void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);vo
2022-04-21 16:40:32
2605
原创 队列与中断导致指针冲突问题解决
1.遇到问题最近在进行数据的接收时,单纯的使用数组接收,已经满足不了我的需求。所以在网上了解到可以使用队列进行对数据的存储,使用也很简单,代码量也不大,并且都贴有运行代码,我也尝试着执行了几个粘贴来的代码,确实是符合要求的,但有个问题,并没有被考虑进去,那就是在单片机中使用队列,出队或者入队是是会被中断打断的,此时若是使用指针进行数据的操作,效果可想而知,直接卡死,你若是能看到我这篇文章,很显然你也遇到了同样的问题,所以在想,不行就用数组对付接收,然后清除buf。简单而实用,但遇到问题怎可轻言放弃,接下来
2022-04-14 01:56:18
1182
2
原创 stm32定时器从模式解析
首先,目前在网上没有找到很多资料,所以在此做一个总结定时器从模式这里只做三种内部分析复位模式门控模式触发模式当主定时器的信号出现上升沿或者下降沿时,会触发从定时器的相应动作复位模式主定时器出现信号后:从定时器计数器复位并产生一个中断门控模式主定时器出现信号后:从定时器计数器开始工作主定时器信号结束后:从定时器计数器停止工作并产生中断触发模式主定时器出现信号后:从定时器计数器开始工作,并且不会停止触发模式主定时器只是提供了一个启动从定时器开始时间的控制,并不会有其他效果定时器框
2022-03-25 09:10:59
17687
11
原创 Tortoise SVN的使用
1 首先需要检出文件URL of repository是仓库的网页地址Checkout directory是本地保存地址2 添加文件加入以后,会变成下图状态3 提交SVN Commit提交后,其他人即可看到你的更改4 修改文件修改文件后,图标改变这时候,提交更改,其他人即可看到你的更改5 重命名文件重命名操作对svn来说,实际上是进行了2个操作,相当于删除原来的Readme文件,然后又新增Readme1文件这是提交的结果6 删除文件删除后,提交...
2022-02-17 19:51:18
435
原创 I2C软件和硬件总结及实验过程
首先关于stm32使用最多的是软件I2C关于软件I2C的配置过程,很可能存在一些问题,很多时候硬件会上拉一个上拉电阻,使得多个I2C设备可以挂载在一条总线上。但是如果外接上拉线路断路了,I2C还可以正常通讯吗存在一种情况即 I2C不管发送什么地址,都会有应答,原因:I2C的SDA引脚配置为开漏输出,并没有输出高电平的能力,当SDA拉高,等待从机应答时,由于从机不管是否应答,SDA上的电平都是低电平,所以一直会有应答。解决方法:I2C在IO的配置成上拉模式,即可解决这个问题。实验1当外接上拉时
2022-01-08 16:00:04
775
原创 I2C协议
I2C 通信具有几类信号:开始信号 S当 SCL 处于高电平时,SDA 从高电平拉低至低电平,代表数据传输的开始结束信号 P当 SCL 处于高电平时,SDA 从低电平拉高至高电平,代表数据传输结束数据信号数据信号每次都传输 8 位数据,每一位数据都在一个时钟周期内传递,当SCL 处于高电平时候,SDA 数据线上的电平需要稳定,当 SCL 处于低电平的时候,SDA 数据线上的电平才允许改变应答信号 ACK/NACK应答信号是主机发送 8bit 数据,从机对主机发送低电平
2021-12-06 17:53:28
559
原创 awk实例分析
1. cached_vars=`cat $T/build/envsetup.sh | tr '()' ' ' | awk '{for(i=1;i<=NF;i++) if($i~/get_build_var/) print $(i+1)}' | sort -u | tr '\n' ' '`例如命令行输入:cat build/envsetup.sh | tr '()' ' ' | awk '{for(i=1;i<=NF;i++) if($i~/get_build_var/) print $(
2021-09-21 02:02:54
245
原创 sed实例分析
1. for i in `cat $T/build/envsetup.sh | sed -n "/^[[:blank:]]*function /s/function \([a-z_]*\).*/\1/p" | sort | uniq`; do2. local variant=$(echo -n $selection | sed -e "s/^[^\-]*-//")解:[ 0-9 ] [] 表示方括号里面的任意一个字符,0-9 表示了0到9的所有数字字符,也就是任意的数字字符。‘ ^# ’ XXX
2021-09-20 21:01:12
293
原创 shell的eval
语法:eval cmdLineeval会对后面的cmdLine进行两遍扫描,如果第一遍扫描后,cmdLine是个普通命令,则执行此命令;如果cmdLine中含有变量的间接引用,则保证间接引用的语义。场景系统中存在环境变量 USER=iceber 脚本中存在一个变量 env_name=USER 需要通过变量 env_name 获取到环境变量 USER 的值$ # 环境中已存在环境变量 USER$ env_name=USER$ eval echo '$'$env_namee..
2021-09-17 17:42:36
451
keil配色 护眼模式启动
2022-06-28
iperf_linux
2022-05-27
Iperf 是一个网络性能测试工具
2022-05-27
可中断式非阻塞循环队列代码
2022-04-14
手写c语言实时操作系统代码.rar
2021-07-09
CAN1与CAN2同时配置.rar
2020-05-18
stm32f405编码电机程序及原理图.rar
2020-05-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人