自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(70)
  • 资源 (8)
  • 收藏
  • 关注

原创 差分信号的测试

差分信号怎么测试是否符合标准?差分信号两个一年相减是什么意思?

2021-12-18 11:26:02 795

原创 差分信号的测量方法

下图的黄色线是A线对地电压,蓝线是B线对地电压。为了方便观察,第一个图把两个波形完全分开了,第二个图的“地”在同一水平线上。而A减去B,也就是黄色减去蓝色,就可以得到465总线上的电压情况。可以看出,单个A或是B的波形都不是很理想,定时A-B的波形还不错。大概这就是485通信稳定的一个原因了吧。...

2021-12-18 11:22:31 4035

原创 arm状态和thumb状态切换导致usagefault

在ARM的体系结构中,可以工作在三种不同的状态,一是ARM状态此时处理器执行32位的字对齐的ARM指令arm处理器工作于32位指令的状态,所有指令均为32位二是Thumb状态此时处理器执行16位的,半字对齐的THUMB指令。arm执行16位指令的状态,即16位状态Thumb-2状态是ARM7版本的ARM处理器所具有的新的状态,新的thumb-2内核技术兼有16位及32位指令,实现了更高的性能,更有效的功耗及更少地占用内存。总的来说,感觉这个状态除了兼有arm和thumb的优点外,还在这两种状态

2021-11-20 17:54:32 329

原创 stm32的mpu配置

static void MPU_Config( void ){ MPU_Region_InitTypeDef MPU_InitStruct; /* 禁止 MPU */ HAL_MPU_Disable(); /* 配置 AXI SRAM 的 MPU 属性为 Write back, Read allocate Write allocate */ //使能MPU MPU_InitStruct.Enable = MPU_REGION_ENABLE

2021-11-10 00:09:49 1167

原创 main和_main的区别

arm启动程序中当所有的系统初始化工作完成之后,就需要把程序流程转入主应用程序,即呼叫主应用程序。最简单的一种情况是:IMPORT mainb main直接从启动代码跳转到应用程序的主函数入口,当然主函数名字可以由用户根据自己的喜好随意定义。我们还经常见到另一种使用方法IMPORT __mainB __main这就很容易造成混淆 因为这两个基本都可以跳到main的主函数这里就介绍下集体区别:__main()是编译系统提供的一个函数,负责完成库函数的初始化和初始化应用程序执行环境,最后自动

2021-10-30 14:17:49 1646 1

原创 __mmc_claim_host讲解

void sdio_claim_host(struct sdio_func *func){ mmc_claim_host(func->card->host);} static inline void mmc_claim_host(struct mmc_host *host){ __mmc_claim_host(host, NULL);} /** * __mmc_claim_host - exclusively claim a host * @host: mmc host

2021-10-05 21:12:42 805

原创 SDIO驱动之mmc_io_rw_direct 读写函数结合CMD52命令的理解

card,对应外接的SDIO卡,card的host成员代表该卡连接的host controller, host controller负责和卡通信的具体实现。write,读写标志,sdio的spec规定:1为写数据到sdio卡,0为读数据。fn, function number,一个sdio卡支持不同的功能,这些功能经过编号后就是这里的function number。function number用3个bit表示,即功能号最大为7。这里fn=0,再次翻开spec:Note that function 0

2021-10-05 21:08:37 2592 1

原创 linux.和stm32驱动的区别

linux下的驱动和stm32驱动的区别?stm32的驱动分为2部分,​初始化和发送接收数据,这个理论概括了spi,iic,uart,sdio,usb。在linux下初始化,发送,接收都写到内核里面了,初始化,发送,接收都以注册的方式实现,要发送数据和接收数据的时候,调用发送和接收回调函数实现数据的发送和接收。​...

2021-09-27 22:07:25 325

原创 linux下互斥锁的经验记录

pthread_mutex_lock(&mutex); /获取互斥锁/number*=2;printf("%d\n",number); pthread_mutex_unlock(&mutex); /释放互斥锁/上锁就是获取锁(拿锁),执行完打印再释放锁。​互斥锁和信号量不一样,互斥锁可以在同一线程内使用,用于两个业务之间,两个逻辑之间,保证互斥访问变量,互斥访问资源。​...

2021-09-27 22:02:08 52

原创 stm32f4架构总结

转载自一位兄弟,感觉真不错一、Cortex-M4的架构Cortex-M4采用ARMv7-ME架构,主要特点有:32位处理器,哈佛结构,三级流水线Thumb-2指令集,扩展的DSP指令和SIMD指令,单周期MAC可选的单精度FPU,可选的MPU,可选的Debug$trace接口可配置的NVIC,可配置的WIC(wakeup interrupt controller)3套AHB-Lite总线接口低功耗,高性能与Cortex-M3内核兼容…二、Cortex-M4流水线Cortex-M4使用一

2021-09-02 20:44:22 831

原创 虚函数使用时对应的编译原理

类的普通函数(非虚函数),在内存中地址是唯一的,可以把他们想象成普通函数,只不过第一个参数是this指针,在通过类对象指针调用时,编译器会根据类型找到相应的非虚函数的地址,这个工作是编译期完成的每个类都会维护一个虚表,编译时,编译器根据类的声明创建出虚表,对象被构造时,虚表的地址就会被写入到这个对象内存的起始位置。父类、子类的虚表是不同的,虚表里面的内容也是不一样的(虚表里面记录了要执行的函数的函数指针)。虚函数在执行是一个动态的过程,并不是在编译时就确定下来要执行哪一个函数,而是运行时从虚表查到真正要执

2021-07-11 21:07:22 132

原创 c++重载

一、函数重载函数重载是一种特殊情况,C++允许在同一作用域中声明几个类似的同名函数,这些同名函数的形参列表(参数个数,类型,顺序)必须不同。注意:c语言不允许函数重载下面同名set,但是不同的形参列表,执行不同的任务。#include "iostream"using namespace std;class Person{public: void set(int num,string name){ this->number=num; this-&g

2021-06-27 23:06:23 90 1

原创 哈希实现转载:夯实基本功

#include <stdio.h>#include <stdlib.h>#include <string.h>#include<iostream>#include<stack>#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2#define SUCCESS 1#define UNSU

2021-06-21 09:06:16 84

原创 如何高逼格的在写程序的过程中加log

程序员进阶#include<stdio.h>int main(int argc, char *argv[]){ printf("File:[%s]\r\n", __FILE__); printf("Function:[%s]\r\n", __FUNCTION__); printf("LineNum:[%d]\r\n", __LINE__); printf("Data:[%s]\r\n", __DATE__); printf("Time:[

2021-06-18 15:35:39 321

原创 找到链表中间一个节点值

/*本实验证明:现有的插入算法可以实现添加一个节点,而不能实现插入一个节点实验需求:在把链表打印出来后,在节点数据'4'和节点数据'6'之后插入一个节点,插入节点数据分别是'100'和'99'。*/#include <stdio.h>#include <stdlib.h>#define ERROR 1#define SUCCESS 0typedef struct _node{ int data; struct _node *next;}node;

2021-06-02 22:41:22 105 1

转载 请问GSM的信令中的RR连接,CC连接,和MM连接各指的是什么?

无线资源管理(RRM)的研究内容主要包括以下几个部分:功率控制、信道分配、调度、切换、接入控制、负载控制、端到端的QoS和自适应编码调制等。MM移动性管理:移动性管理功能用于跟踪在本地PLMN或其他PLMN中MS的当前位置一般过程:包含TMSI重分配、加密、鉴权、身份识别、IMSI分离特殊过程:包含正常位置更新、周期位置更新、IMSI附着连接管理过程:MM连接建立、MM连接保持、MM连接释放CC呼叫控制:主要完成电路交换域基本呼叫管理功能包含呼叫建立、振铃、连接、连接断开、呼叫释放、呼叫释放完成

2021-05-23 13:49:53 1334

原创 at指令的由来

AT即Attention,AT指令集是从终端设备(TerminalEquipment,TE)或数据终端设备(DataTerminalEquipment,DTE)向终端适配器(TerminalAdapter,TA)或数据电路终端设备(DataCircuitTerminalEquipment,DCE)发送的。通过TA,TE发送AT指令来控制移动台(MobileStation,MS)的功能,与GSM网络业务进行交互。用户可以通过AT指令进行呼叫、短信、电话本、数据业务、传真等方面的控制。...

2021-05-07 08:49:50 259

原创 如何迅速的提扎实自己的基本功

1,接近疯狂的训练,从仿写开始,总结各种基础操作,从排序,查找开始,自律自己的生活,在一个月之内要有成效。过完这个,还要有c++

2021-05-06 09:19:36 83

原创 快速排序算法步骤汉字描述

一、场景:对 6 1 2 7 9 3 4 5 10 8 这 10 个数进行排序二、思路:先找一个基准数(一个用来参照的数),为了方便,我们选最左边的 6,希望将 >6 的放到 6 的右边,<6 的放到 6 左边。如:3 1 2 5 4 6 9 7 10 8先假设需要将 6 挪到的位置为 k,k 左边的数 <6,右边的数 >6(1)我们先从初始数列“6 1 2 7 9 3 4 5 10 8 ”的两端开始“探测 ”,先从右边往左找一个 <6 的数,再从左往右找一个 &gt

2021-05-01 11:52:01 135

原创 如何计算空间复杂度实现用到

1、常量空间存储空间大小固定,和输入没有关系时,空间复杂度是O(1)

2021-04-27 00:27:41 38

原创 当你花了很多时间在“返工”上时,请阅读以下记录。

本篇转载自别人,系统分析你的输出和付出。你可能算不上极其拼命,但也不能说不努力。很努力,却没有换来预期的进步和收获,这是为什么?这是一个老生常谈的话题:努力,但我会给你提供全新的、更本质的角度看待这个问题。请在阅读这篇文章的过程中始终琢磨一个词:系统困境。系统困境之一再努力也不能直接打开的死结什么是死结?即解决方案就是问题本身:你想转行找一份新媒体工作,可是发现大部分公司都要求有新媒体工作经验;你注册了个公众号,想通过文章被用户大量转发获取种子用户,可是你发现你得先有一批种子用户才行;你

2021-04-25 23:17:00 114 2

原创 时间复杂度概念

什么是时间复杂度???时间复杂度:什么是时间复杂度,从2个角度上讲,从概念上,语句的执行次数T(n)是输入规模n的一个函数,如果存在某一个辅助函数f(n),当n趋于无穷大时,T(n)/f(n)的值为一个不为0的常数,有T(n)=O(f(n)),这就是算法的渐进时间复杂度,从代码实现上,是基本语句的执行次数。错误的说法。因为大O表示的就是时间复杂度,大O中的内容就是语句的执行次数,是我们计算时间复杂度时,只需计算语句的执行次数而已。​...

2021-04-24 21:43:08 85

原创 当你遇到挫折时看看这篇文章---致1到2年的工程师

此博客转载自别人知道这些表现,你才能在自己的程序员职业生涯中不犯相同的错误。软件行业的工作经验和你从事这个行业的工作年限直接相关。这句话在某种程度上是对的,但是你从事这项工作的年限,并不一定代表你获得了相同年限的工作经验,正如一句话所说:“我们以为我们是工作了十年,其实却只有一年的工作经验,只不过又重复用了九年”。有一些人虽然工作了很多年,但工作表现就像刚入行的新人。他们几乎不学习软件开发的基础知识 。除了最初几年有所成长,后期一直停滞不前,而且他们不明白为什么。与此同时,我也曾与一些只有几年工作

2021-04-24 20:12:34 73

原创 二分查找试时间复杂度计算

@一只小鸟飞飞妃 因为二分查找本来就是把n个数的数列对半分,也就是除以2,除k次啊,除到最后就是约束到1个数,那现在把每个2都乘回去,乘k次,最后得到最大的数就n本身啊,n除以n本身就是1...

2021-04-23 12:20:19 99

原创 插入排序的核心思路及步骤

插入排序总结:关键词:比较,赋值,冒泡排序思路:从第二个数开始,依次让第二个数以后得数和前面数进行比较,不满足从小到大则交换数据。​举例分析如下:以5,3,2,3排序过程如下:第一趟:3 5 2 3第0个元素5认为是排序完成的,从第1个元素开始,第1个元素和第0个元素比较,第1个元素小,所以前移;第二趟:2 3 5 3第2个元素2跟第1个元素5比较,小,所以第二个元素前移,再与第0个元素比较,还小,所以再前移;第三趟:2 3 3 5第3个元素,与第2个元素比较,小,所以第三个元素前

2021-04-19 00:22:00 361

原创 查找顺序数组中缺少的那个数---实验

#include <stdio.h>int arr[6]={0,1,2,4,5,6};#include<stdio.h>int missingNumber(int* n, int m) { int ret = 0; //这里实现所有数据和下标异或在一起 //如果这里改成i<=m数组就会越界 //但是这样就缺少和m这个下标相异或了 for (int i = 0; i < m; i++) { ret ^= i; ret ^= n[i]; } /

2021-04-17 20:35:40 324

原创 排序算法该怎么学习

以上是冒泡排序的具体思路分析,学习冒泡排序需要捋清楚其过程,主要是分析冒泡排序是怎么比较的。

2021-04-10 14:06:39 57

原创 嵌套for循环的时间复杂度

Func1函数执行了一个嵌套的for循环(共执行了4 * N2次),又执行了一个单独的for循环(共执行了2 * N次),所以Func1函数的时间复杂度为:T(N) = 4 * N2 + 2 * N​//计算Func1的时间复杂度void Func1(int N){int count = 0;for (int i = 0; i < 2 * N; i++){for (int j = 0; j < 2 * N; j++){count++;}}for (int k = 0; k

2021-04-10 12:14:41 3984

原创 二分查找的时间复杂度

计算二分查找函数的时间复杂度,我们需要对代码进行分析:我们用二分查找法查找数据时,查找一次后可以筛去一半的数据,经过一次次的筛选,最后会使得待查数据只剩一个,那么我们查找的次数就是while循环执行的次数。因为数据个数为N,一次查找筛去一半的数据,即还剩N/2个数据,经过一次次的筛选,数据最后剩下1个,那么查找的次数可以理解为N除以若干个2,最后得1,那么while循环执行的次数就是N除以2的次数,我们只需计算N除以了多少次2最终等于1即可。在这里插入图片描述我们假设N除以了x个2,最终等于1,那么

2021-04-10 12:07:43 4595

原创 链表删除一个节点时间复杂度分析

时间复杂度:O(N),因为最好的情况是头指针就是该值,直接返回下一个节点,最坏的情况则是最后一个节点才是目标值,则需要一直遍历到尾部,因此平均时间复杂度是O(N)链表删除一个节点的案例分析,直接看有没有for循环,最好情况就是执行一次解决,最快情况就是最后一个节点才是你要删除的节点,此时循环n次。时间复杂度为O(n)...

2021-04-08 08:41:11 3205

原创 _atrribute_ 在结构体后面的工作应用

atrribute 在结构体后面的应用下面的结构体和普通的结构体的区别是什么???struct test{ int shuju;}_atrribute_((aligned(8)))

2021-04-02 16:44:23 96

原创 把指针指向的空间中的数据从函数中拿出来的所有的方法

方法1:用指针作为参数方法2:用返回值

2021-04-01 10:27:36 305

原创 顺序栈

/*本实验证明 :实验需求:*/ #include <stdio.h>#include <stdlib.h>#define ERROR 1#define SUCCESS 0#define MAXSIZE 7typedef struct _stack{ int data[MAXSIZE]; int top;}stack;int StackPush(stack *p,int e){ if(p->top==MAXSIZE

2021-03-28 20:36:00 33

原创 链表反转的思路不清晰,现在定下来了

/*本实验:自己写一个双向链表的添加,插入,删除一个节点*/#include <stdio.h>#include <stdlib.h>#define ERROR 1#define SUCCESS 0typedef struct _node{ int data; struct _node *next;}node; node *gpNode=NULL;/*本实验的链表是带头的的链表*/node* CreateNode(node *p){

2021-03-27 09:21:16 65

原创 遍历链表的思路

/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* reverseList(struct ListNode* head){ if (head == NULL) { return NULL; } struct ListNode* pre = hea

2021-03-22 22:03:04 63

原创 链表反转各种思路总结

1,栈,先进后出2,递归3,

2021-03-19 22:45:32 49

原创 free函数的实战

/*本实验证明了free的指针必须指向的是malloc的指针,否则的话,就会报错不可用的指针*/#include <stdio.h>#include <stdlib.h>int main(){ int a=3; int* p=(int*)malloc(sizeof(int)); p=&a; printf("when execuse malloc ,p addr value is:%d\n",*p); free(p); return 0;}运行结果

2021-03-15 09:55:43 113

原创 怎么判断free是否释放成功

你能知道free()是否在C语言中成功而没有崩溃吗?

2021-03-13 15:17:30 1874 1

原创 Linux下包含了头文件仍然编译不过

Linux下包含了头文件仍然编译不过,用 extern 引用也是报警,现在要改makefile,消除这个报警。

2021-03-09 09:51:58 647

原创 NULL指针传参---指针的用法

1,有时候参数作为一个 void* param,此时把参数作为一个NULL指针串递

2021-02-25 20:25:05 367

2021年yong深入SD卡cheng.zip

SD卡的标准协议,致力于嵌入式行业的方向性水准的提高

2021-07-15

2021年的突破点之理论篇C.7z

wzm_primer_plus重要的事都在秋天

2021-06-27

考试之我的2021.zip

考试大纲给你列出的你的详细的目标

2021-05-22

数据结构的2021年.zip

2021年的数据结构

2021-05-16

cmux学习资料.zip

CMUX总结精华

2021-05-08

21年的数据结构提高.zip

C++的21年备战

2021-03-06

xueshuo.zip

自己花钱买的通信模组的资源

2021-02-06

libc库是本人接下来要重点再次学习的东西

libc是GNU开源广场的一个很重要的东西

2020-12-31

空空如也

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

TA关注的人

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