
笔记
文章平均质量分 90
徐狗学AI
在天赋面前,努力不值一提!
展开
-
什么是带宽
带宽Preface1.什么是带宽2.深入理解带宽3.带宽与宽带辨析总结Preface因为需要使用esp8266作为让STM32与上位机进行通信的桥梁,我就想测试一下esp8266实际的吞吐量,这里面就扯到了带宽的概念。1.什么是带宽"带宽"是由英文词汇bandwidth直译过来的。而在不同的领域,对带宽的理解角度也有所不同。1、电子通信领域:指某个信号具有一定的频带宽度。也就是说,信号的带宽指的是该信号所包含的不同频率成份所占据的频率范围。注意:频带是相对基带而存在的概念,指的是经过调制后能在信原创 2021-09-22 15:01:49 · 12072 阅读 · 0 评论 -
STM32串口配置性能对比
STM32串口配置性能对比Preface1.printfContextTimelineCpu Load总结2.printf+interrupt2.1串口的初始化2.2串口中断服务函数2.3中断printf函数的实现2.4效果ContextTimeline总结3.printf+DMA+中断3.1DMA初始化3.2 中断服务函数的编写3.DMA+中断的实现3.4效果ContextTimeline总结Preface上一篇博客说了下STM32串口丢失首字符相关的问题,这篇博客呢,想好好的讨论一下基于串口的pri原创 2021-09-21 17:02:32 · 1102 阅读 · 1 评论 -
STM32启动详细流程之__main
__main -> main1.前言2.必备知识2.1. 用户程序在FLASH中的组织架构2.2. 用户数据在SRAM中的组织架构2.3. 2.加载地址 链接地址 运行地址 存储地址2.3.4.代码重定向2.3.4.1.位置无关码3.__main函数4._rt_entry函数4.1.procedure4.2.Usage5.自己实现__main函数5.1.消除警告6.自己实现__rt_entry函数7.问题思考7.1.为什么我们可以自己编写__main和__rt_entry7.2.当一个用户程序运行原创 2021-03-26 21:36:55 · 11727 阅读 · 13 评论 -
STM32启动详细流程之启动文件
启动文件1.前言2.启动文件内容描述2.1. DCD指令2.2. B .3.STM32启动流程3.1. 获取栈顶指针3.2. 跳转到复位中断函数4.最小启动配置(加个鸡腿)4.1.编写中断向量表4.2.编写复位中断函数4.2.1. 设置堆栈指针4.2.2. 跳转到main函数1.前言上一篇博客详细地讲述了一个流程:编写用户代码 -> cpu执行第一条用户代码这个流程中着重讲述的是HEX文件如何被烧写到STM32内部的指定地址处。(烧写到STM32中的可执行文件不仅只有HEX格式,还有axf、b原创 2021-03-20 19:41:43 · 2716 阅读 · 7 评论 -
uboot常用命令
uboot常用命令1.uboot简介2.uboot版本使用3.uboot常用命令3.1. 信息查询命令3.2. 环境变量操作命令3.3. 内存操作命令3.4. 网络操作命令3.5. MMC操作命令3.6. FAT格式文件系统操作命令3.7. EXT格式文件系统操作命令3.8. BOOT操作命令3.9. 其他常用命令4.总结1.uboot简介U-Boot 是一个主要用于嵌入式系统的引导加载程序,可以支持多种不同的计算机系统结构包括PPC、ARM、AVR32、MIPS、X86、68K、Nios。这也是一套在原创 2021-02-17 11:05:54 · 1556 阅读 · 0 评论 -
跟我一起学RT-Thread之重定位
重定位1.概念2.程序中含有什么3.谁来做重定位4.重定位和清除BSS段4.1. 重定位4.2.清除BSS段5.重定位的本质1.概念重定位就是把程序的逻辑地址空间变换成内存中的实际物理地址空间的过程。这句话的意思就是:使逻辑地址与实际物理地址一一对应的过程。程序的逻辑地址就是链接地址,由于程序的下载地址不一定是逻辑地址,所以将程序重新定位(拷贝)到逻辑地址所对应的物理地址处就叫做重定位,这是一个过程。2.程序中含有什么代码段:如果它不在链接地址上,就需要重定位只读数据段:如果它不在链接地址上,原创 2021-02-13 16:00:23 · 1112 阅读 · 0 评论 -
跟我一起学RT-Thread之段的概念
段的概念1. 问题的引入1.1. 链接地址1.2. 下载地址1.3. 两者的关系1.4. 重定位2. 段的概念1. 问题的引入led.imx = 头部 + led.bin 或 led.stm32 = 头部 + led.bin头部里含有位置信息(addr):固件要把led.bin复制到哪里去链接程序时,指定了链接地址,一般来说头部信息的addr就等于链接地址如果,偏要修改头部信息的addr,让它不等于链接地址,会发生什么事?头部里含有长度信息(len):led.bin多大。如上原创 2021-02-13 14:44:03 · 253 阅读 · 0 评论 -
gcc详细编译过程
GCC详细编译过程原创 2021-02-06 15:46:46 · 5311 阅读 · 1 评论 -
跟我一起学RT-Thread之反汇编
反汇编1. 程序处理的4个步骤2. Keil下怎么反汇编2.1. 准备工具2.2. 进行反汇编2.2.1.打开keil软件2.2.2.进入调试界面2.2.3.进入反汇编界面3. Gcc下反汇编4. 机器码与汇编4.1 STM32F103反汇编4.2 STM32MP157反汇编4.3 IMX6ULL反汇编4.4 机器码与汇编示例4.4.1 Thumb/Thumb2指令集4.4.2 ARM指令集4.5 解析LDR伪指令4.6 总结1. 程序处理的4个步骤我们现在给出两个文件start.S、main.c,它们原创 2021-01-31 14:03:25 · 1246 阅读 · 2 评论 -
跟我一起学RT-Thread之嵌入式发展史
1.嵌入式发展史简述及一些概念1.1.MPU、MCU、SoC、Application Processors的概念在一个电子系统中,处理器占据最重要的位置,被称为中内处理器单元:CPU(Central Processing Unit)。它从IO设备读取数据,处理,然后显示出来。CPU的发展有两个路线:MPU、MCU。MPU只是一个处理器(比较老的概念),需要搭配内存等非常多的其他外设才可以构成一个系统;MCU内部有处理器、内存、Flash及其他模块,仅仅需要搭配少量外设就可以构成一个系统。MPU这原创 2021-01-28 22:45:46 · 831 阅读 · 0 评论 -
全网最简单的cJSON教程(一看必会)
全网最简单的cJSON教程1. JSON与cJSONJSON —— 轻量级的数据格式JSON语法规则cJSON2. cJSON数据结构和设计思想3. JSON数据封装封装方法输出JSON数据封装数据和打印数据示例4. cJSON数据解析解析方法解析示例注意事项5. cJSON使用过程中的内存问题内存及时释放内存钩子1. JSON与cJSONJSON —— 轻量级的数据格式JSON 全称 JavaScript Object Notation,即 JS对象简谱,是一种轻量级的数据格式。它采用完全独立于编转载 2020-12-26 14:36:08 · 6081 阅读 · 1 评论 -
IMX6ULL之IOMUXC
IMX6ULL之IOMUXC前言引脚的命名与功能配置IOMUXC1.Overview2.Block Diagram3.Functional description4.Daisy chain - multi pads driving same module input pin总结前言IMX6ULL芯片利用IOMUX机制来解决引脚复用的问题,和之前学到的STM32芯片解决引脚复用的解决方式有很大的不同,主要就是配置一下寄存器:1.PAD控制寄存器2.MUX控制寄存器3.Select Input控制寄存原创 2020-11-06 11:38:17 · 4698 阅读 · 2 评论 -
IMX6ULL之GPIO
GPIO前言知识点总结前言为了参加明年7月份的物联网比赛,需要学习RT-Thread。之前了解过Linux,但是很菜,我用的开发板是正点原子的ALPHA开发板。主芯片是IMX6ULL。内核是Cortex-A7,这个芯片相比于STM32而言,外设少很多,但是处理数据的性能却是非常强。准备用这个芯片跑下RT-Thread。知识点1.把一个外设当作成一个接口芯片,向外映射到引脚,向内,通过译码电路连接到总线上。2.对于cpu而言,对外部设备的驱动,是对内部的外设进行操作,对内部的外设进行操作的是对内部原创 2020-11-05 08:18:02 · 1215 阅读 · 0 评论 -
无法找到函数或变量解决方法
无法找到函数或变量解决方法1.前言2.头文件中没有写声明3.没有添加头文件的路径3.1点击魔术棒3.2点击c++/c3.3 添加头文件所在文件夹4.预编译指令重复5.总结1.前言最近有人问了我一个函数无法找到的问题,确实,函数无法找到是有很多方面的因素,并且某些方面是真的很坑。你明明已经定义了函数,但在main函数调用它的时候却说找不到。借此,写下一篇文章关于函数或变量无法找到的解决方法,用于示范IDE为keil5。如果你现在正在学32,那么这篇文章对你来说可能是很有帮助了。2.头文件中没有写声明原创 2020-10-30 18:44:31 · 7619 阅读 · 0 评论 -
C++多态
C++多态前言动态多态多态的构造多态的使用多态底层剖析解答纯虚数函数和抽象类虚析构和纯虚析构总结前言多态是C++面向对象三大特性之一多态分为两类静态多态: 函数重载 和 运算符重载属于静态多态,复用函数名动态多态: 派生类和虚函数实现运行时多态静态多态和动态多态区别:静态多态的函数地址早绑定 - 编译阶段确定函数地址动态多态的函数地址晚绑定 - 运行阶段确定函数地址静态多态比较简单,如果想要对静态多态中的函数重载了解,可以参考这篇博文:C++函数提高动态多态通过一个例子原创 2020-10-20 17:15:01 · 2901 阅读 · 0 评论 -
C++继承浅析
C++继承浅析前言1.继承的用法1.1单继承1.2多继承2.继承的优点2.1普通实现2.2 继承实现3.继承方式3.1公有继承3.2保护继承3.3私有继承4.继承中的对象模型5.继承中构造和析构顺序6.继承同名成员处理方式7.继承同名静态成员处理方式8.多继承语法9.菱形继承总结前言由于自己也是刚学了继承,写这篇博文的目的就是巩固一下自己对继承这个概念的理解,可能在以后的学习过程中会再次对继承有更深入的解析。继承是面向对象三大特性之一有些类与类之间存在特殊的关系,例如下图中:我们发现,定义这些类原创 2020-10-18 15:35:11 · 204 阅读 · 0 评论 -
C++友元
C++友元前言1.友元函数1.1全局有元函数例子解释1.2.成员有元函数例子解释2.友元类例子解释3.友元的细节与注意事项细节注意事项4.友元的优缺点友元的使用方式总结前言采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行效率(即减少原创 2020-10-17 16:03:29 · 548 阅读 · 0 评论 -
C++函数提高
C++函数提高1 函数默认参数2 函数占位参数3 函数重载3.1 函数重载概述3.2 函数重载注意事项1 函数默认参数在C++中,函数的形参列表中的形参是可以有默认值的。语法:返回值类型 函数名 (参数= 默认值){}示例:int func(int a, int b = 10, int c = 10) { return a + b + c;}//1. 如果某个位置参数有默认值,那么从这个位置往后,从左向右,必须都要有默认值//2. 如果函数声明有默认值,函数实现的时候就不能有默认参数i原创 2020-10-16 21:04:41 · 335 阅读 · 0 评论 -
C++This指针的用法
C++This指针的用法前言1.为什么要引入This指针2.This指针的补充3.This指针的使用3.1返回对象本身3.2对成员属性的引用4.示例5.This指针的特点5.1 This指针只能在成员函数中使用5.2 This在成员函数的开始前构造,在成员函数的结束后清除5.3 This指针存储位置5.4This指针是如何传递的6.非静态成员函数调用方式6.1 通过指针调用6.2通过对象调用7.总结前言在上一篇博文中,对C++This指针的本质详细地讲解了,这篇博文主要是讲C++This指针的用法,应用原创 2020-10-16 09:31:48 · 1496 阅读 · 1 评论 -
C++This指针的本质
C++This指针的本质前言1.问题2.补充3.解答总结前言文章讲述的是C++This指针的本质,偏底层,得懂点汇编的知识,当然,如果你不懂也没关系,我会适当地补充。1.问题#include <iostream>#include <string>using namespace std;class CNullPointCall{public: static void Test1(); void Test2(); void Test原创 2020-10-15 19:53:01 · 852 阅读 · 0 评论 -
C++类的存储方式
C++类的存储方式1.初始化列表2.类对象作为类成员2.1特点2.2示例3.类的存储方式4.总结1.初始化列表C++提供了初始化列表语法,用来初始化类的属性语法:构造函数():属性1(值1),属性2(值2)... {}示例:class Person {public: ////传统方式初始化 //Person(int a, int b, int c) { // m_A = a; // m_B = b; // m_C = c; //} //初始化列表方式初始化 Person(in原创 2020-10-14 08:38:48 · 1365 阅读 · 0 评论 -
C++静态成员
静态成员前言1.静态成员变量1.1静态成员的声明1.2静态成员变量的特点1.3静态成员变量访问方式1.3.1 通过类名进行访问1.3.2 通过对象进行访问内存中的位置:静态存储区2)初始化:未经初始化的全局静态变量会被程序自动初始化为03)作用域:作用域仍为局部作用域,当定义它的函数或者语句块结束的时候,作用域随之结束2.3.1. static局部变量的好处3.函数3.1. static函数3.2. static函数的好处1.全局变量在函数外定义的变量称为全局变量,也称外部变量,全局变量的作用域较广,全局变量不原创 2020-09-15 22:01:37 · 433 阅读 · 0 评论 -
Shell初体验
文章目录1.shell简介2.两类程序设计语言3.Shell脚本解释器1.shell简介Shell是一个用C语言编写的程序,通过Shell用户可以访问操作系统内核服务,类似于DOS下的command和后来的cmd.exe。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量、参数、函数、流程控制等等。它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。因此,对于用户来说,shell是最重要的实原创 2020-08-27 21:46:19 · 308 阅读 · 0 评论 -
手把手教你学单链表
本文用到的图片来自csdn中优秀的博主。为什么我们要学习链表呢?链表到底有什么好处。链表主要有以下几大好处:1、解决数组无法存储多种数据类型的问题。2、解决数组中,元素个数无法改变的限制。3、数组插入和移动元素的过程中,要对元素进行大范围的移动,很耗时间,效率也不高。而链表却可以很好地弥补数组不足的缺点。从这幅图我们得出以下信息:这个简单链表的构成:头指针(Header),若干个节点(节点包括了数据域和指针域),最后一个节点要指向空。实现原理:头指针指向链表的第一个节点,然后第一个节点原创 2020-08-01 20:31:07 · 481 阅读 · 0 评论 -
HC-05蓝牙模块的理解
HC-05蓝牙模块的理解最近在玩蓝牙模块,看了看以前玩的时候用的是串口1,想用串口2试试,然而调试了将近一下午都没有调试出来,最后发现竟是一个字母的错误,但在这期间却又学到的新的东西,也有所感悟,故作了这么一篇文章。先给大家看一看本文的思维导图。一.代码1.代码的移植其实本质都是一样的,就是换一下引脚,配置一些不同的参数而已,可以模仿串口一的程序来写。一个头文件和源文件。以上就是蓝牙模块的所有代码了, 因为printf函数已经给串口1用了,所以我自己又做了一个蓝牙发送数据的函数,很简原创 2020-07-17 16:15:49 · 4247 阅读 · 0 评论 -
STM32之stm32f4xx_conf.h讲解
stm32f4xx_conf.h文件的讲解在我的上一篇博客中又讲解到stm32f4xx.h文件的讲解,在那个头文件中包含了4个头文件。这四个头文件中第一个是非常难的,如果你32学的不是很扎实的话劝你们最好别去碰,涉及很多汇编和底层知识你只需要知道每次你新建一个项目的时候你把以下四个头文件加到你的项目文件夹下即可。其他的你也就别管了。第二个头文件这个在我之前写过的博客中已经提到,并且也很简单,第三个头文件功能就是为关键字创立一个新的名字,还有其他的一些参数,不是很难。我们今天主要讲解一下stm3原创 2020-07-10 16:13:25 · 5542 阅读 · 1 评论 -
stm32f4xx.h文件的详解
stm32f4xx.h详解我的上一篇博客中详细讲解了system_stm32f4xx.c文件,在那个文件中,包含了唯一一个头文件,而这个头文件在开发过程中起到至关重要的作用,如果没有这个文件,就像大厦没有了根基,是肯定会倒的,所以,今天我们来深入了了解一下这么重要的文件它的内容到底是怎样的。受先我们先来看下这个文件的思维导图,以及该文件的介绍。这段文字已经大概地介绍了一下这个文件的内容,接下来,我们详细解释。首先,在这里大家可能有点懵逼,这是个什么东西,这就是混合编程的一种用法,在这里我们并没原创 2020-07-09 15:26:22 · 8088 阅读 · 0 评论 -
STM32之system_stm32f4xx.c的理解
对system_stm32f4xx的理解上一篇博客解释了stm32的启动文件,在启动文件中,在进入__mainC库函数之前,进入了SystemInit函数,如下图所示。那,今天我们就来探究一下这个函数的功能是什么,这个函数在这个文件system_stm32f4xx.c中,所以我们今天所要讲解的内容就是system_stm32f4xx.c文件。首先,我们先来看下这个文件的思维导图。This file provides two functions and one global variable to原创 2020-07-08 17:04:10 · 4875 阅读 · 1 评论