自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 git,ssh,sourcetree代码管理

1、安装git,设置git的用户信息(需要通过用户信息来显示你是谁)2、配置SSH,因为本地Git仓库和GitHub仓库之间的传输是通过SSH加密传输的,GitHub需要识别是否是你推送,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送,所以需要配置ssh key。ssh在安装git时已经自带了openssh工具而对于 Windows 系统,其默认是不安装 SSH 的,不过由于我们安装了 Git Bash,其也应该自带了 SSH.

2023-11-02 19:57:08 281

原创 GD32F303RCT6不小心将读保护开启,导致后续程序烧不进去的解决办法

每次系统复位后,闪存的可选字节块被重加载到FMC_OBSTAT和FMC_WP寄存器,可选字节生效。当可选字节被重装载时,如果可选字节的补字节和可选字节不匹配,FMC_OBSTAT寄存器的OBERR位将被置1,可选字节被强制设置为0xFF。这里选择ST的型号,为啥选ST的,一方面因为GD的型号不全,另一方面选择GD的型号可能解锁指令不能用,后面新的J-Flash版本应该会逐步完善GD。GD32F10X,GD32F30X,GD32E103,GD32F3X0 STM32F103系列。

2023-11-02 18:59:16 1035 3

原创 stm32-SPI协议

SPI协议详解(图文并茂+超详细)SPI通讯协议于是我们想有没有更好一点的串行通讯方式;相比较于UART,SPI的工作方式略有不同。SPI是一个同步的数据总线,也就是说它是用单独的数据线和一个单独的时钟信号来保证发送端和接收端的完美同步。时钟是一个振荡信号,它告诉接收端在确切的时机对数据线上的信号进行采样。产生时钟的一侧称为主机,另一侧称为从机。总是只有一个主机(一般来说可以是微控制器/MCU),但是可以有多个从机(后面详细介绍);数据的采集时机可能是时钟信号的上升沿(从低到高)或下降沿(从高

2023-10-04 23:48:41 431

原创 linux中互斥锁,自旋锁,条件变量,信号量,与freeRTOS中的消息队列,信号量,互斥量,事件的区别

1.条件变量同步机制让进入管程却因资源不足而阻塞的进程暂时放弃管程控制权(开放管程),进入该条件变量的等待队列条件变量只能在管程中通过两个原语操作——wait原语和signal原语。一个进程已进入管程但无法继续执行,便在相应的条件变量x上调用x.wait(),将自己阻塞并移入x的等待队列中,放弃管程控制权(开放管程),另一进程可以通过对同一个条件变量执行x.signal()来唤醒之前在x上等待的进程条件变量仅起到维护等待队列的作用,不存在相关的值,也不能象信号量那样加减累计。

2023-08-22 19:22:49 1129

原创 mqttfx连上OneNET生成token时的一大坑,报用户名或密码错误

最后发现是格式问题,输入所有字符后一定要双击看是否可以全选中,可以全选中说明字符的格式是统计的。其中在生成token时,搞了半天在连接后都会报用户名密码错误。

2023-08-14 18:28:10 1179 1

原创 网卡收发包系统结构收发包流程,tcp/ip协议,socket套接字缓冲区,滑动窗口,mtu/mss

TCP为什么是三次握手,而不是两次或者四次的解析“已失效的连接请求报文段”的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。

2023-07-21 11:03:36 2703

原创 交换机架构整理

问:如何实现单片以太网微控制器?问:以太网MAC是什么?问:什么是MII?问:以太网PHY是什么?问:造成以太网MAC和PHY单片整合难度高的原因是什么?问: 网卡上除RJ-45接口外,还需要其它元件吗?问:10BaseT和100BaseTX PHY实现方式不同的原因何在?问:什么是曼彻斯特编码?问:什么是4B/5B编码?问:网卡的MAC和PHY间的关系?问:网线上传输的是模拟信号还是数字信号?

2023-07-09 16:28:06 458

原创 stm32 freertos任务切换,多任务状态迁移,中断临界段,任务延时,中断过程,普通中断与任务切换的区别

arm中SP,LR,PC寄存器以及其它所有寄存器以及处理器运行模式介绍一、xTaskCreate()1、prvInitialiseNewTask()2、prvAddNewTaskToReadyList()(1):全局任务计时器uxCurrentNumberOfTasks加一操作。uxCurrentNumberOfTasks 是一个在task.c中定义的静态变量,默认初始化为0(2):如果pxCurrentTCB为空,则将pxCurrentTCB指向新创建的任务。pxCurrentTCB 是一个在t

2023-07-06 14:20:14 1862

原创 stm32数据对齐、PRESERVE8、freertos的heap堆栈、

避免数据在内存中跨边界存储,减少读取数据次数,提高效率,本质上是以空间换时间的做法CPU数据线有32位一次最多可以从内存读取32数据,这里的一次指一次存储周期LDR r1 , [pc,#4], 是从pc+#4地址处开始连续读取4个字节的数据到r1寄存器LDRH r1 , [pc,#4], 是从pc+#4地址处开始连续读取2个字节的数据到r1寄存器LDRB r1 , [pc,#4] 直接取pc+#4当前那个地址的数据上述指令都是在一个存储周期里完成的。

2023-06-22 11:37:39 2604

原创 回调函数与钩子函数的区别,另QT中connect函数的实现,lambda的使用

这两种函数的区别,简单说,其实就是钩子函数不一定会用到,而回调函数一定会用到,因为钩子函数是要等待某种状态发生才会用到,这种状态不一定会发生,而回调函数是为了某个目的设置的,只要这个目的是必须的就一定会调用到。2、lambda表达式[]的捕获赋值,可以节省临时变量的赋值,原理就是lambda创建了一个类,[ ]里的捕获赋值只会初始化一次,详见上述参考链接。信号的参数数量必须大于等于槽函数的参数数量,信号的参数和槽函数的参数必须得兼容(类型一致或可以转化),信号槽的返回值的类型也必须得兼容。

2023-06-02 23:33:33 602

原创 一台电脑上安装多个版本的python,运行互不干扰,显示位置的一些命令,

pip install下载安装的模块存放在python.exe所在目录的下级\Lib\site-packages目录,并不能通过修改USER_SITE的路径改变默认安装位置。将下载好的python,python.exe和pip.exe复制到同目录下,然后重命名为python(version).exe 和pip(version).exe。注意该命令不带括号。在命令行调用pip(version)命令下载安装时,它需要调用在sys.path路径里的python.exe,所以python.exe是复制后重命名。

2023-06-01 23:17:48 1285

原创 stm32的IIC驱动0.96OLED

本文采用的是4针的0.96寸OLED显示进行讲解,采用的是SPI协议,速度会比采用I2C协议的更快,但这两者的显示驱动都一样,本质上没有太大差别。屏幕整体分辨率为128*64,有黄蓝、白、蓝三种颜色可选,驱动芯片为SSD13060.96寸OLED(SSD1306)屏幕显示(一)——基础功能介绍。

2023-05-22 17:36:41 3874 1

原创 通过stm32汇编来看C语言数组内存分配

数组中的元素是字面量,编译后就保存在0x080010f0 flash的RO code中。运行到该处的程序时,在栈中开辟空间(sub sp指令)将字面量保存到栈中。分配完后可以看到在栈地址0x200013b8处看到该数组存放的元素值。先给栈中高地址分配数组高位元素,再给栈中低地址分配数组低位元素。一个u8 test的数组。

2023-05-21 12:23:54 156

原创 stm32 CPU执行函数过程,ARM BL指令,PC程序计数器偏移量确定

2.1 汇编格式:BL{cond} label;带返回分支的跳转指令;l 说明:与B 指令不同的是:在跳转之前,将pc的当前内容保存在寄存器R14(LR),该指令用于实现子程序的调用,程序的返回可通过LR(R14)寄存器的值复制到PC(R15)寄存器中实现。下图为例子:如何检测Thumb-2指令长度和PC偏移量位置?PC 内的地址值大多是2的倍数。

2023-05-15 22:49:41 202

原创 stm32ADC采样结构参数和相关配置

这里我们发现Q总并不等于QA + QB,这里我们忽略了一个问题,串联电容的等效电容公式初始条件是各电容电荷都为0才能使用该等效公式,如果电容初始时就有电荷,那么通过该公式算得的电荷就不是所有电容加起来的总电荷,只是接入电源后产生的电荷,然后再加上原来的电荷才是总的电荷。(这里不对,该电路还是有对外界导通的,S1线路接入Vref,还是会对电容充放电的,应该说是S1-S11的公共端电极板,也就是等效电路电容A的右极板是没有与外界导电导通的,所以该极板处根据电荷守恒,任何时刻电荷都守恒才得出上述2的公式)

2023-05-15 15:37:47 1010

原创 GPIO口输出与输入模式的理解

主要是开漏模式是为了匹配外界的电压,该电压与P-Moss vdd引脚电压并不相同,如果用挽模式来实现开漏输出的效果就会导致P-MOss管烧坏。推挽输出的挽模式与开漏输出唯一的区别就是开漏输出关闭了P-MOSS,那为什么挽模式不能作为开漏模式呢?而输出模式是将输出寄存器上的数字信号输出到相应的引脚上,从而实现CPU对相应引脚电位的控制。因为输入模式是将引脚上的电位输入到输入寄存器上,方便CPU获取,不管引脚上的电流方向。输入输出模式都有电流流入流出,为什么还要分为输入输出模式呢?

2023-05-13 23:01:25 1340 1

原创 stm32的usart通信注意的一些问题

注意一些问题

2023-05-06 23:46:32 101

原创 为什么stm32gpio引脚的翻转速度最大只有18Mhz

通过简单的程序测试,用示波器观察到的翻转时间: 是综合的时间,包括取指令的时间、指令执行的时间、指令执行后信号传递到寄存器的时间(这其中可能经过很多环节,比如AHB、APB、总线仲裁等),最后才是信号从寄存器传输到引脚所经历的时间。@通过简单的程序测试,用示波器观察到的翻转时间: 是综合的时间,包括取指令的时间、指令执行的时间、指令执行后信号传递到寄存器的时间(这其中可能经过很多环节,比如AHB、APB、总线仲裁等),最后才是信号从寄存器传输到引脚所经历的时间。使用合适的驱动器可以降低功耗和噪声。

2023-04-12 14:59:18 2438

原创 Python爬虫相关知识

正则表达式:开源中国测试网站匹配最近的那个好匹配最远的那个好requests.exceptions.ConnectionError:Max retries exceeded with url(Caused by NewConnectionError(’<…错误解决办法

2021-12-20 17:01:53 114

原创 dhcp option选项的一些理解

option60DHCP option 60 和 option 61option 66/67DHCP server with option66 的搭建添加链接描述

2021-11-07 23:16:15 3099

原创 Linux文件句柄相关的知识

Linux中pts/0的讲解linux 文件句柄/dev/fd 解析

2021-11-01 22:32:12 110

原创 stm32定时器PWM输出

【STM32】通用定时器的PWM输出(实例:PWM输出)注意点:在复用重映射引脚功能时,如果是输出,那么对该引脚的GPIO初始化必须开启为复用推挽或复用开漏模式,而如果是输入就没有这个必要,但都要打开相应的重映射寄存器AFIO上面代码中先给AFIO时钟使能,在调用引脚重映射函数与我的文章中断模型中给EXTI外部线中断是一个道理,如下:...

2021-10-17 23:22:07 633

原创 stm32中断模型和中断初始化(EXTI、NVIC、timer、AFIO)

从stm32的架构图可以看到,挂载在APB2上的外设有GPIO、EXTI、AFIOGPIO的所有引脚默认是与输入输出寄存器相连映射的AFIO算是一个不是外设的外设,因为它主要是用来将引脚重映射到其它外设寄存器的,但是对它操作也需要开启相应的时钟,所以也就放在了这里从引脚到->EXTI中断控制器->NVIC控制器的整个硬件架构通用I/O端口以下图的方式连接到16个外部中断/事件线上,配置AFIO_EXTICRx寄存器该部分主要是将引脚重映射到终端线上,也就是下下个图里的输入线但是再这.

2021-10-07 00:13:59 3819 1

原创 单片机的烧录方式:ISP、ICP、IAP的区别

单片机的烧录方式:单片机三种烧录方式ISP、IAP和ICP有什么不同?单片机三种烧录方式ICP、IAP和ISP详解单片机程序烧录的3种方式(ISP、ICP、IAP)是什么?两者的区别

2021-09-21 23:56:04 461

原创 stm32启动过程、cortex-m3架构、堆栈代码位置、编译汇编链接分析

分析一、 寄存器、架构、工作流程1、 寄存器架构复位有三种启动方式,从哪里开始启动、启动代码的所在的位置一、 寄存器、架构、工作流程1.这里以stm32的架构:cortex-m3(也即ARMv7)的寄存器的作用、在指令取,指令的译码,指令的执行在其中的作用以及是如何配合实现代码的执行的哈佛结构和冯诺依曼结构是如何体现的?编译后的代码为什么分为code、堆、栈、bss、data、符号等部分,分别存储在哪些地方?首先看寄存器1、 寄存器架构参考官方Cortex-M3权威指南下面这个

2021-09-17 00:36:51 5127 1

原创 vlan拓扑关于PVID和vid

如下拓扑:这个用例主要是通过一根线实现了通过两个局域网的路由的,一般路由都是通过两个不同网段的端口实现从一个局域网到另一个局域网,该拓扑通过VLAN将一个端口归属于两个局域网从而实现在一个端口实现路由,即进去是VLAN1(192.168.0.1/24)网段,出来是VLAN100(172.21.0.1/24)网段,即Trunk端口。当将DUT的最后一个端口和SUT的第一个端口改为untag时是一样的,只有172.168.0.120不能ping通,172.168.0.121可以ping通...

2021-07-27 18:32:39 455

原创 Linux下用c实现对键盘的监听,实现在Windows中kbhit()函数相同的功能

#include <stdio.h> #include <linux/input.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #define DEV_PATH "/dev/input/event1" //difference

2021-05-05 17:10:04 387

原创 网络编程与系统高级编程--课程知识点索引

课程知识点索引一.命令行解析1.getopt函数的介绍使用,形参的意义,如何使用它实现ls -a 和ls -l的解析2.open,read,write,close,fopen,fread,fwrite,fclose,fseek,opendir,readdir函数一.命令行解析1.getopt函数的介绍使用,形参的意义,如何使用它实现ls -a 和ls -l的解析getopt函数详解2.open,read,write,close,fopen,fread,fwrite,fclose,fseek,open

2021-04-18 22:44:16 210

原创 栈中分配是从高地址往低地址,为什么局部变量的地址却是按定义顺序逐渐增大?从操作系统上进程的地址空间分布以及不同操作系统的不同、以及不同的数据结构来说明这个事情?

先说一个都知道的结论:栈中分配时从高地址往低地址然后我们在Windows下编写一个程序来验证这个结论?#include <stdio.h> void func(int a,int b){ int d; printf("a:%p,b:%p,d:%p\n",&a,&b,&d);}int main(){ int a=0,b=1; printf("real a:%p,b:%p\n",&a,&b); func(a,b);}以上

2021-03-23 20:16:23 2840

原创 c语言中char、int以及单引号与双引号的一些理解

char strng[] = "12345"; char x = 1; char x1 = '1'; char x2[] = {1, 2, 3, 4, 5}; char x3[] = {'1', '2', '3', '4', '5'}; printf("x=%d\n \ x1=%d\n \ stng=%c\n \ x2=%d\n \ x3=%d\n", x, x1, *strng,*x2,*x3);说说上面...

2021-03-21 16:50:06 4584 1

原创 stm32中DMA,时钟树、内存总线、配置时钟时先配置flash->acr、通过寄存器点亮led

DMASTM32 DMA使用详解1、画图Cortex-M3内部结构图,要体现相应的总线,并标注其作用。Icode:程序存在Flash中,通过ICode(Instruction Code)总线与Cortex连接取指令。Dcode:数据被存放在外设内部Flash(SRAM)中,通过DCode(Data Code)访问。Systembus: 访问外设的寄存器,通常说的寄存器编程就是用这条总线的。DMA: 数据变量拷贝时可以不占用CPU,通过DMA(Direct Memory Acc

2021-03-15 00:50:30 2316 1

原创 架构,内核,处理器,芯片、指令集概念;寄存器和内存关系;数据线、地址线、控制线作用

目录Cortex系列处理器是从从ARM哪个架构开始的;通过查阅资料,请分别列出Cortex-M,Cortex-A,Cortex-R处理器下具体的一个处理器型号,并简述其资源与特点,并列举出应用在哪些实际的应用中。请比较区分:架构,内核,处理器,芯片,微控制器,单片机,开发板这些名词,并以手中采购的开发板为例,说明它的架构,内核,处理器,芯片,微控制器,单片机,开发板分别是什么,又是由谁设计或生产的。体系结构、指令、指令集之间的区别是什么,请你说出你现在工作学习使用的电脑的CPU型号是什么,它的体系结构,指令

2021-03-04 20:33:46 1599 3

原创 单片机中程序和数据存放位置、与电脑内存和硬盘的类比,单片机和计算机程序启动流程对比

这里写目录标题1.ROM、RAM和闪存2.单片机程序在内存和FLASH中的空间分配3.计算机启动过程1.ROM、RAM和闪存ROM、RAM和闪存的区别2.单片机程序在内存和FLASH中的空间分配https://blog.csdn.net/fengruoying93/article/details/976139863.计算机启动过程计算机启动过程这里和上面的单片机都要了解bootloader...

2021-03-04 17:42:49 514 1

原创 调度器CFS调度算法

这里写目录标题1.完全公平调度2.linux内核分析——CFS(完全公平调度算法)3.强调了IO与CPU型任务的区别4。几种常见的算法的比较5.比较详细的讲解6.抢占式调度与非抢占式调度7.抢占发生的时机和条件8.中断线程话的实例1.完全公平调度完全公平调度2.linux内核分析——CFS(完全公平调度算法)https://www.cnblogs.com/tianguiyu/articles/6091378.html3.强调了IO与CPU型任务的区别http://c.biancheng.ne

2021-03-04 17:41:57 251 1

原创 Linux操作系统中进程工作过程,程序启动和地址映射

这里写目录标题线性地址逻辑地址和物理地址的区别Linux中的逻辑地址,线性地址和物理地址转换关系程序虚拟地址内存段分布分配线性区、分配叶框进程内存空间从编写源代码到程序在内存中运行的全过程解析程序(进程)在cpu中的执行过程,涉及寄存器和层面1.逻辑地址到线性地址再到物理地址的关系线性地址逻辑地址和物理地址的区别线性地址逻辑地址和物理地址的区别Linux中的逻辑地址,线性地址和物理地址转换关系Linux中的逻辑地址,线性地址和物理地址转换关系程序虚拟地址内存段分布程序虚拟地址内存段分布

2021-03-03 18:22:05 161 1

原创 硬件之间通信协议

I2C接口与SPI和UART接口的区别IIC、SPI、UART、USART、USB、CAN等通讯协议原理及区别

2021-02-22 11:02:39 883

原创 内存管理与地址转换

虚拟存储、多级页表页转换分段 分页 虚拟内存空间 逻辑地址 物理地址分段内存管理分页存储管理

2021-02-19 15:09:09 306

原创 森林与并查集(quick—find & union - find)

参考文章添加链接描述添加链接描述C语言并查集代码

2021-02-19 15:04:10 93

原创 堆与优先队列代码实现,以及LeetCode相关练习题

目录堆与优先队列的定义含义:堆尾部插入堆头部弹出堆排序堆排序代码实现练习题堆与优先队列的定义含义:堆也是内存中的一块区域,它的存储性质为先进先出而这和队列的性质也是相同的,先进先出优先队列优先在于每次弹出的都是最大或最小的优先队列与堆是同一个数据结构堆在思维逻辑上就是完全二叉树,在代码表现形式上可以看做数组堆尾部插入调整一次的时间复杂度为logN堆头部弹出将尾部最后一个放在堆顶堆排序将堆从头弹出的放在堆尾,所有元素都被弹出后在队中数组就形成了从小到大排序的数组如

2021-02-08 02:51:39 319

原创 用C实现二叉树的遍历、存储

目录二叉树的知识点排序二叉树广义表转二叉树练习题二叉树的知识点1.节点的度:当前节点下面挂了几个子节点,就是多少度2.节点的深度:从根节点往下看,当前节点位于第几层3.节点的高度:从整个数的最后一层往上看,当前节点比最后一层高几层节点是在前还是中还是后来看完全二叉树,只有树的最右边的右子位可以缺少一个,其它地方都不能缺排序二叉树/********************************************************** 这是一个排序二叉树,也叫查

2021-02-07 21:42:13 111

空空如也

空空如也

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

TA关注的人

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