STM32嵌入式开发

其他

STM32与51单片机串口通信实例

关于串口通讯,几个重要的知识点:波特率,数据传输的速度,如上图设置为9600,发送、接收端设置要保持一致硬件连接,TXD、RXD交叉连接,GND直连数据位校验位停止位
2021年10月5日
其他

详解STM32中的DMA原理

上方的框图,我们可以看到STM32内核,存储器,外设及DMA的连接,这些硬件最终通过各种各样的线连接到总线矩阵中,硬件结构之间的数据转移都经过总线矩阵的协调,使各个外设和谐的使用总线来传输数据。
2021年10月5日
其他

简单分析STM32和51的区别

由ST厂商推出的STM32系列单片机,行业的朋友都知道,这是一款性价比超高的系列单片机,应该没有之一,功能及其强大。其基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM
2021年10月1日
其他

看各路大神都是怎么学习STM32的

我的观点是:当你debug的时候寄存器很重要,当你需要理解芯片工作细节的时候寄存器很重要,当你开发的时候寄存器不重要。如果你没有遇到非直接配置寄存器不可的情况,那么就不要直接面向寄存器层面开发,
2021年9月28日
其他

三极管和MOS管驱动电路的正确用法

对PNP三极管来说,最优的设计是,负载R14接在集电极和GND之间。不够周到的设计是,负载R14接在发射极和VCC之间。这样,就可以避免负载的变化被耦合到控制端。从电流的方向可以明显看出。
2021年9月27日
其他

CAN总线详解

即从CAN控制芯片输出逻辑电平到CAN收发器,然后经过CAN收发器内部转换将逻辑电平转换为差分信号输出到CAN总线上,CAN总线上的节点都可以决定自己是否需要总线上的数据。具体的引脚定义如下:4
2021年9月27日
其他

详解STM32单片机的堆栈

大部分人应该很少使用malloc来分配堆空间。虽然堆上的数据只要程序员不释放空间就可以一直访问,但是,如果忘记了释放堆内存,那么将会造成内存泄漏,甚至致命的潜在错误。MDK中RAM占用大小分析
2021年9月27日
其他

代码是如何控制硬件的?

相关文章👉CPU怎么识别我们写的代码?👉CPU没有想象的那么复杂,就那么一回事👉动画演示单片机是如何跑程序的先说代码:我们是用电脑的键盘来输入的指令,每一个指令都对应一个ASCII码,而这里的ASCII码就是有序的电压的高低(或电流的有无,下面只提电压的高低),即我们输入的是电压的高低,你所看到代码是这些电压的高低控制显示器所显示的图像,其实电脑也不知道它是什么,只知道这样显示。结论:代码其实就是存储在存储器(内存、硬盘或者闪存等等)中有序的电压的高低。再说编译:编译是一个有序的电压的高低向另一种有序的电压高低的一种转换过程,下面以52单片机为例,我们编译是从表示ASCII码的那种有序电压高低转换为52单片机能够识别的另一种规定好的有序电压高低,即表示HEX文件的电压高低。结论:编译出的结果还是电脑中存储的有序电压高低。程序烧录到单片机:接下俩就是烧录,理解了上面两点就很容易理解下面的内容,烧录就是电脑中的有序电压高低通过数据线传输到单片机中的ROM中。接下来ROM就可以释放其中的电压来控制外围的电路。总结:从代码的编辑到最后对电路的控制都是电压在起作用,只是为了方面我们而给我们展现的形式不一样而已,而其本质都是电压,这样也就不存在转换。理解这句话:世界上没有软件,软件只是对硬件的一种反映,就像意识是对世界的一种反映是一样的!相信这样就很容易理解了。单片机中的0与1:只要你提到0/1,提到软件,这个问题就没法理解...因为软件【包括0/1】和硬件始终存在一道无法跨越的鸿沟;你说你在单片机中写0,请问你是如何写0的?在键盘上敲个0?实际还是电平【和我们理解的数字没关系】,那个0只是你在电脑显示器上电平的呈现形式,那个所谓的0【实质是电平】可以传输到单片机中的ROM中,电平控制电平没什么疑问吧,这样就输出低电平了...翻开数字电路相关教材,最前面几页。一般它都会告诉你,三极管/场效应管类似继电器(一种通过线圈产生磁场、然后用磁场控制物理开关的通断与否的设备);在它一个管脚上输入/切断电压信号,另一个管脚就会出现高/低电平。PS:继电器是一种利用电磁铁控制的开关;当向电磁铁通电时就产生磁场,而这个磁场就会吸合或者分离开关,从而实现“以微弱电流控制另一条电路的通断”这个功能。其中,平常触点接触使得被控制电路导通、给控制它的电磁铁通电后就使得开关断开的那种继电器,就等效于非门。三极管拿来当开关使用时,和这种继电器效果几乎一样。以上,就是数字电路的基础。指令你敲入的任何东西,最终就是通过类似的东西/机制储存的;所谓“指令”,其实就是“某个命令码“(一般叫机器码),这个”命令码”会改变CPU内部一堆“开关”的状态,以激活不同的电路;然后数据(前面提到过,它也是用三极管/场效应管的导通与否“记忆”的)利用类似的机制,被送入这个被“指令”激活的电路——这些电路是工程师们利用最最基础的三极管控制原理,用一大堆三极管组合出来的:当数据(某种高低电平的组合)经过这些电路后,就会变成另外一组高低电平的组合:这个组合刚好和“指令”代表的功能所应该给出的结果一致。这段话可能有点难以理解。那么,看下最简单的与门吧:数据有两个,分别通过两条不同的线路进入与门;输出只有一个,必须给它输入两个高电平,它才会输出高电平;否则就输出低电平(这一般简化表述为:只有输入两个1,它才输出1,否则输出0)。——这就是所谓的“与”逻辑;一组这样的“与”逻辑就与计算机指令/高级语言里的“按位与”直接对应。——而按位与这个指令,意思就是选择一组线路,把数据导通到这组“与”逻辑电路之上;然后这组与逻辑电路就会输出两组数据的按位与的结果。——类似的,二进制加法,1+1=0(同时进位);1+0=1;0+1=1;0+0=0:这可以用一个异或电路来模拟(因为异或电路的规则就是1+1=0、1+0=1、0+1=1、0+0=0);但这样(同时进位)这个说明就会丢失了,所以需要同时用一个与门模拟高位进位(前面说过,与门就是只有两个1才会输出1,其它输出0;综合异或的说明:这是不是就和二进制加法的规则刚好一致了呢?)然后更高一位就成了两根输入线上的数据相加、再加上进位数据……依此类推:这就是用开关做加法的思路。更多位数的数字的加法,只不过是对应位的二进制加法再加上前一位的进位位罢了,没什么特别的——这样堆起来的一组开关,就叫加法器。——add指令呢,就是选中上面做的那一堆用来做加法的开关们;然后给它们输入数据(不要忘了,两组高低电平而已),这些数据就驱动着构成加法器的那些开关们,噼里啪啦一阵乱响之后(嗯,如果是老掉牙的继电器计算机的话:还记得BUG的故事吗?),电路就稳定在某个状态了:此时,加法器的输出,恰恰就是输入数据的和(当然是这样了。前面讲过,我们是刻意用异或门和与门精心组合,让它们刚好和加法的效果一致)。——其它种种指令,莫不大同小异(更复杂/高级的时钟、流水线啥的……暂时就无视吧)你可以翻翻课本,讲过加法器的实现。而加法器和另外一些逻辑电路加起来,就是所谓的ALU(算术逻辑单元,一下子就高大上了有木有)。(当然了,实际上没这么简单。比如至少还要加上时钟信号来打拍子协调开关们的动作、加上锁存器来暂存数据之类——前面提到过,给加法器输入数据,构成加法器的一堆开关需要噼里啪啦一阵才能进入稳定态,然后就可以读出答案:时钟信号就是用来协调这些开关,保证它们都能得到足以达到稳定态的时间用的)简而言之,代码在计算机内部,本身就是一组特定的高低电平组合;而计算机是精心设计的、海量的、用高低电平控制通断的开关组;当给这个开关组输入不同的电平组合时,就会导致它内部出现复杂的开关动作,最终产生另外一组高低电平的组合作为输出;这些开关动作经过精心设计,使得它的行为是可解释、可预测的——解释/预测的规则,就是CPU的指令集。——换言之,在机器内部,一切本来就是高低电平,不存在转换问题。——反而是键盘/鼠标/mic的输入要经过机械过程到数字信号的转换;而视频、音频之类的输出,要经过数模转换再通过其它机制才能变成人可辨识的信息图灵机原理——CPU的三板斧图灵的贡献就是,他证明了,如果一台机器,可以接受一系列的输入、并按输入指示完成运算;那么,当这台机器可支持的操作满足“图灵完备”的要求时,它就可以模拟任何其它数学/逻辑运算!这实在是太关键了。要知道,人类早就想利用机械装置代替一些脑力工作了。比如说,算盘,按照口诀机械的一阵摆弄,答案就出来了;还有老外的各种机械计算器,比如手摇计算机到炮兵用的弹道计算机、再到德军的机械加/解密机等等,这种尝试可以说是数不胜数。但,再怎么的,这些东西也只能解决特定的问题。想做能解决全部问题的通用机?天哪,那得有多复杂。而图灵,就在这时候,为人类指出了一条通向机械智能的可行道路……——一台只会做加法的机器,只要能想办法让它实现“连续做指定次数加法”,那它就可以模拟一台乘法机(模拟二进制乘法会更容易一些)。而能够模拟任何数学/逻辑运算的机器,并不比加法机复杂太多。换句话说,要搞出一台“无所不能”的计算机器,并不需要穷尽一切可能,而是只要支持程序输入、再支持少的令人发指的几条指令,就可以办到了。比如说,CPU,它根本上其实只会三招:与、或、非。与就是全为真,则输出真;或是只要一个为真,则输出真;非则是输入真它就输出假、输入假就输出真——所谓的真假,一般写作1、0,在计算机内部就是高低电平。别看CPU只会这三板斧;可当它们巧妙的组合起来后(构造成计数器、指令寄存器等等等等再组合成CPU),就达到了图灵完备的要求,产生了质变——比如,前面提到过的加法器,就是“如何用这类基本逻辑模拟多位二进制数的加法”的一个实例。更具体是怎么做的,这就不是三言两语能说清楚的了。还是仔细看看自己的数字电路这本书吧。——数字电路研究的,就是如何用与或非这三板斧,来实现各种高级运算甚至CPU指令集这么复杂的事物(甚至是直接实现某些算法,如加密、视频编码等等)——而CPU指令集呢,则形成了另外一个强大得多的图灵机(体现在能够支持更多比原始的与或非更”高阶“的操作上):这就是机器码(和汇编指令几乎一一对应)——然后呢,诸如c/c++、java等高级语言,就是利用CPU指令集形成的、另一个更加强大的图灵机(编译器/解释器负责两种图灵机之间的翻译工作)。——而程序员们研究的,就是如何用编程语言这样一个强大的图灵机,去实现office、photoshop、wow甚至人工智能这样复杂的事物。这是一个层层模拟的过程。————————————————————————————总之,开关的通断是基础;而各种神奇的功能是如何用这么简单的东西组合出来的呢,那就必须理解“程序”原理(也就是图灵机原理)了。如果说,计算机是一个人,那么,软件就是他掌握的知识。这个知识使得他不仅能掰着手指头数数(相当于硬件直接提供的基础功能),甚至还可以去洞悉宇宙的奥秘(相当于利用软件“模拟”出来的、无穷无尽的扩展功能)。————————————————————————————————具体一些,人是怎样开车的呢?首先,他要知道车的控制原理(知识/软件);然后,基于这些知识,大脑向他的四肢肌肉发出神经冲动,驱使他完成转方向盘、挂挡、踩离合器/油门等种种动作,最终达到开车这个目的。软件控制硬件的原理前面说过,程序本身就是高低电平的组合;它通过在CPU上执行来模拟各种决策过程;同时,计算机就是一堆开关;那么,通过指令向某些地址写出数据(访问特定地址是通过各种寻址机制/指令完成的,归根结底也可以说是通过开关切换,改变了电路拓扑),就等于开启/关闭了对应地址上的某个开关;这个开关可以是类似CPU内部那样的一组三极管,也可以是通向另外一个继电器的信号线——这个信号就促使继电器闭合,于是电机导通……就好象人开汽车一样,神经发出的微不足道的电脉冲经过肌肉放大,影响了涉及数百甚至数千马力的能量洪流的发动机/变速箱的运转,然后汽车就开走了。计算机也一样:它通过向控制特定地址上的开关输出0/1(高低电平),就可以通过事先准备的物理设施驱动诸如航模电机、舵机等等机构,这就完成了航模控制。完整的控制回路甚至可以是:航模上的传感器采集飞行姿态、地形、位置等等数据(最终转换成高低电平构成的信号)----信号通过某些端口送到CPU-----CPU执行程序,程序读取传感器发来的信号,决定下一步的行动-----经过程序的智能判断后,通过控制特定地址上的开关(前面提过,向这个地址发一组高低电平构成的数据就行了),驱动诸如航模电机、舵机等等机构,完成航模控制。这,就是所谓的“机器人”(当然,只是最简化的机器人原理而已)。我们就用代码展示一下怎么会显示低电平以51单片机举例我把题主的意思先用51单片机C语言写出来,可以在keil中运行的好了,题主说在单片机控制里,写0就会输出低电平,是这样的。题主说的输出低电平就是在其中的一个引脚上输出低电平我想看不懂代码的人也能够看到代码第七行里,p1.0这个变量被赋予了0值那么咱们深入的看一下给他赋0值单片机内部发生了什么变化首先给大家展示一下单片机一个引脚内部到底是什么东东,如下图。左边的大家就不用看了右边给大家解释一下,最右边的就是引脚了虽然引脚是一个,但是大家可以看到右边是有两个装置的,上边的装置是用来保持内部输出到引脚的电平不会被外部的信号所干扰。下边的装置会把从外部收集来的信号临时存储起来,这里存的不是0就是1。怎么判断?大于某一电压就是1,小于某一电压就是0。这两个装置互不干扰。第七行的代码就是将某一引脚输出低电平并用上边的保持元件将其维持到低电平。那么,就有人想问了,为什么写成这样单片机就会认识呢?还会奇怪为什么单片机认识的语言和程序员认识的语言一样呢?这里就牵扯到了计算机组成原理了。我就简单的介绍一下:首先,我写的这段代码会在一个软件里运行,这个软件会编译我的代码形成枯燥难懂但是70年代时会被人认为高大上的汇编语言,类似下图这样的(除绿色字部分,解释用的):这还不够,形成这样的语言会让计算机中的低等编译器认识,低等编译器会将代码翻译成如下图所示的东东,如下图。注意,这是16进制的数,具体怎么转化为二进制我就不详细展开了。为什么要编译成图3的语言再编译呢?说白了我感觉就是跟水厂一样,水厂把我制作的水放到一个通用的大水管里然后通到不同单片机的家里,单片机按照自己家的情况把水引到厨房等地。(就是这样吧
2021年9月26日
其他

如何学好单片机?​终于有人整理清晰了!

第七步:学会比较、捕捉、PWM功能这些功能可以使单片机能够控制电机,检测转速信号,实现电机调速器等控制起功能。如果以上七步都学会,就可以设计一般的应用系统,相当于学会十招降龙十八掌,可以出手攻击了。
2021年9月25日
其他

常见总线:IIC、IIS、SPI、UART、JTAG、CAN、SDIO、GPIO

每个GPIO端口可通过软件分别配置成输入或输出。相关文章👉CAN总线详解👉学习STM32单片机,绕不开的串口👉自制STM32的下载器👉I2C总线协议详解👉视频讲解UART、I2C、SPI串口通信
2021年9月25日
其他

为什么学了几天STM32一脸茫然?

这里面有的属于基础知识,有的属于进阶需要了解的知识点,这些名词的理解是作为入门者的第一个门槛,如果对一些专用名词不了解,那么组合起来的语句就更加晦涩难懂。
2021年9月25日
其他

CAN总线详解

即从CAN控制芯片输出逻辑电平到CAN收发器,然后经过CAN收发器内部转换将逻辑电平转换为差分信号输出到CAN总线上,CAN总线上的节点都可以决定自己是否需要总线上的数据。具体的引脚定义如下:4
2021年9月24日
其他

一种STM32框架,实现RTOS的部分功能

介绍一种无OS的STM32实用软件框架,包括任务轮询管理,命令管理器、低功耗管理、环形缓冲区等实用模块。系统中广泛利用自定义段技术减少各个模块间的耦合关系,大大提供程序的可维护性。主要功能支持模块自动化管理,并提供不同优先等级初始化声明接口。支持任务轮询管理,通过简单的宏声明即可实现,不需要复杂的声明调用。支持低功耗管理,休眠与唤醒通知。支持命令行解析,命令注册与执行。blink设备支持,统一管理LED、震动马达、蜂鸣器使用说明点击STM32嵌入式开发公众号文末的“阅读原文”,可以完整的工程代码,系统开发平台如下:MCU:STM32F401RET6IDE:IAR
2021年9月21日
自由知乎 自由微博
其他

学习STM32单片机,从菜鸟到牛人

2、操作寄存器,往寄存器里置1或者清零操作——这个步骤,固件库已经提供了专门的GPIO_SetBits函数和GPIO_ResetBits函数,我们只要去调用即可实现对IO口的置1和清零。
2021年9月20日
其他

如何成为高级嵌入式硬件工程师?

一个优秀的硬件工程师应该能够在没有参考方案的前提下设计出一个在成本和性能上更加优秀的产品,靠现有的方案,也要进行适当的可行性裁剪,但不是胡乱的来,我遇到一个工程师把方案中的5V变1.8V的DC芯片,
2021年9月19日
其他

搞懂STM32开发用的HAL库

hspi)*3、当外设或者DMA出现错误时,触发终端,该回调函数会在外设中断处理函数或者DMA的中断处理函数中被调用错误处理回调函数:HAL_PPP_ErrorCallback例如:__weak
2021年9月19日
其他

单片机中的RAM vs ROM

因为实际上RAM只是作为数据临时存放的地方,除非进行图像处理需要存放大量的数据外。一般对于执行较简单任务的单片机,有这么多也够用,如果实在不够用也只能采取外加SRAM如6116、6264等等来扩展。
2021年9月17日
其他

嵌入式开发经验分享,把学习当作一种兴趣

由于是全新的行业,我学的VC、Delphi、数据库派不上用场,摆在我面前的是嵌入式、协议、信令一些我从未接触过的知识。于是拼命的学习,把自己当做一个应届毕业生,半年过去我终于熟悉了工作,薪水也涨了。
2021年9月15日
其他

STM32平衡小车,文末附代码、电路图等资源获取方式

7.2四脚插板牛角母座,超声波是某宝上几块钱烂大街的那种,蜂鸣器是有源的,编码器是小车底盘自带的,电池电压检测是电阻分压之后通过电压跟随器接入MCU内部AD测量的。
2021年9月13日
其他

STM32实例-用按键控制串口发送数据,文末附代码

有时候为了偷懒,把旧工程文件复制一份,在此基础上建新工程。但是,复制一时爽,修改火葬场,两个工程之间细微的差别可能会造成各种各样的报错。
2021年9月12日
其他

详解STM32单片机的堆栈

大部分人应该很少使用malloc来分配堆空间。虽然堆上的数据只要程序员不释放空间就可以一直访问,但是,如果忘记了释放堆内存,那么将会造成内存泄漏,甚至致命的潜在错误。MDK中RAM占用大小分析
2021年9月10日
其他

了解STM32启动过程,好优化程序

main函数之间的这段过程,步骤为(以使用微库为例):①上电后硬件设置SP、PC②设置系统时钟③软件设置SP④加载.data、.bss,并初始化栈区⑤跳转到C文件的main函数代码
2021年9月8日
其他

MOS管驱动电路设计细节

如果不考虑纹波和EMI等要求的话,MOS管开关速度越快越好,因为开关时间越短,开关损耗越小,而在开关电源中开关损耗占总损耗的很大一部分,因此MOS管驱动电路的好坏直接决定了电源的效率。
2021年9月7日
其他

STM32实例-DMA 实验

DMA传输完成,此时我们来做另外一些事//实际应用中,传输数据期间,可以执行另外的任务while(1){if(DMA_GetFlagStatus(DMA1_FLAG_TC4)!=0)//判断通道
2021年9月5日
其他

I2C总线协议详解

总线在物理连接上非常简单,分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻组成。通信原理是通过对SCL和SDA线高低电平时序的控制,来
2021年9月3日
其他

深度讲解三极管和MOS管下拉电阻的作用

为点A提供了一个能量分散通路。如图2所示,温度开关断开时,此时点A是悬空的,A点电压不确定,为高阻态(阻抗无穷大),容易出现误导通的现象,而且也容易受到周围环境干扰,比如静电、雷击等使器件永久损坏。
2021年8月28日
其他

为什么单片机学了很久还是不会做项目?

实际上,C语言是非常接近底层的开发语言,也是嵌入式开发的主要开发语言。学好C语言,不了解底层的微机原理是不可能的。寄存器、位操作、堆栈、内存申请与释放,这些知识点也都会接触到。
2021年8月25日
其他

详解STM32启动文件

本文对STM32启动文件startup_stm32f10x_hd.s的代码进行讲解,此文件的代码在任何一个STM32F10x工程中都可以找到。启动文件使用的ARM汇编指令汇总Stack——栈
2021年8月25日
其他

C语言操作寄存器的常见手法

假设a代表寄存器,且其中本来已有值。如果要把其中某一位清零且其它位不变,代码如下。//定义一个变量
2021年8月24日
其他

使用STM32CubeMx工具,写FreeRTOS的demo程序

CubeMX的基础使用方法,可以参看我之前发的一个视频STM32打印数据到串口助手。环境STM32CubeMXKEIL5STM32F103开始试验新建工程
2021年8月22日
其他

EEPROM和Flash这样讲,我早就懂了

flash做的改进就是擦除时不再以字节为单位,而是以块为单位,一次简化了电路,数据密度更高,降低了成本。上M的rom一般都是flash。如W25Q128JVSIQ:flash分为nor
2021年8月17日
其他

学习STM32单片机,绕不开的串口

当你学会串口通信时,你可以开始玩WIFI模块、GSM模块、蓝牙模块、GPS模块、以及各种使用串口通信的传感器等等。有能力你还可以编写上位机软件通过串口通信来控制设备。串口通信需要什么
2021年8月6日
其他

国内大神手工焊接,制作了一个CPU

硬盘(ROM)和内存(RAM)是CPU外,比较庞大两个部分。大神用上了比较容易操作的HM628512芯片来做ROM和RAM,如下图分别是HM芯片(上)、RAM(中)和ROM(下):
2021年8月5日
其他

手工自制CPU

硬盘(ROM)和内存(RAM)是CPU外,比较庞大两个部分。大神用上了比较容易操作的HM628512芯片来做ROM和RAM,如下图分别是HM芯片(上)、RAM(中)和ROM(下):
2021年8月2日
其他

STM32代码的启动过程

分享这篇文章,谈一下STM32启动流程。如果读者朋友已经有过汇编相关基础,能够够好理解本文内容。汇编语言是比C语言更接近机器底层的编程语言,能让我们更好的理解和操纵硬件底层。STM32三种启动模式
2021年7月30日
其他

STM32如何分配原理图IO

的功能说明,这个我们可以从官方的数据手册里面找到。在学习的时候,有两个官方资料我们会经常用到,一个是参考手册(英文叫
2021年7月29日
其他

十年经验的大神谈如何学STM32嵌入式开发

Xscale架构下的IXP网络处理器CPU内部集成PCI控制器,可配成支持4个PCI从设备或配成自身为CPI从设备;还集成3个NPE网络处理器引擎,其中两个对应于两个MAC地址,
2021年7月28日
其他

详解CAN总线

CAN收发器是实现CAN控制器逻辑电平与CAN总线上差分电平的互换。实现CAN收发器的方案有两种,一是使用CAN收发IC(需要加电源隔离和电气隔离),另一种是使用CAN隔离收发模块。推荐使用第二种。
2021年7月28日
其他

STM32单片机开发中的RTOS

很多STM32单片机初学者都是从裸机开始的,裸机确实也能开发出好的产品。但是,作为一个嵌入式软件工程师,况且用的并不是51那种低端单片机,如果只会用裸机开发产品,那肯定是不够的。
2021年7月27日
其他

详解STM32启动文件

本文对STM32启动文件startup_stm32f10x_hd.s的代码进行讲解,此文件的代码在任何一个STM32F10x工程中都可以找到。启动文件使用的ARM汇编指令汇总Stack——栈
2021年7月25日
其他

如何入门单片机开发?

单片机外设的学习相对简单,买一个开发板,把每个外设的例程跑几遍之后心里就有个大致了解。把单片机的每个外设的实际应用场景你都亲手写一遍,下次你再碰到同样的功能需求时就知道怎么去解决了。
2021年7月24日
其他

STM32等单片机程序加密的方法

通过连接网络,在你的MCU中生成一个唯一的随机长序列号,并加入复杂的特种算法,或加入你们重新编码的企业信息在里面,每个芯片内不同,复制者只能复制到一个序列号。通过MCU唯一的标识加密
2021年7月23日
其他

自制STM32的下载器

使用好的STLINK-V2下载器给我们自己制作的STLINK-V2板子下载固件,将STLINK-V2下载器连接角与板子上的H5固件下载接口对应连接,再将STLINK-V2连接到电脑,
2021年7月19日
其他

STM32串口通信基本原理

介绍串口通信按照数据传送方向分类单工:数据传输只支持数据在一个方向上传输半双工:允许数据在两个方向上传输。但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;它不需要独立的接收端和发送端,两者可以合并一起使用一个端口全双工:允许数据同时在两个方向上传输。因此,全双工通信是两个单工通信方式的结合,需要独立的接收端和发送端
2021年7月3日
其他

用一堆开关做成一个CPU?

寄存器及内存都离不开上文那个简单电路,只要通电,这个电路中就保存信息,但是断电后很显然保存的信息就丢掉了,现在你应该明白为什么内存在断电后就不能保存数据了吧。构建CPU硬件平台
2021年6月25日
其他

打工人,为何有十年经验还会被裁?

以为是他自己离职的,可能觉得工资或者工作环境不尽如人意。当时我对他心生羡慕,心想等到我有了他的工作经验,也可以干的不爽就走人,为所欲为。
2021年6月5日
其他

STM32串口收发数据为什么要使用DMA?

DMA数据拷贝过程,典型的有:内存—>内存,内存间拷贝外设—>内存,如uart、spi、i2c等总线接收数据过程内存—>外设,如uart、spi、i2c等总线发送数据过程串口有必要使用DMA吗
2021年6月2日
其他

浅谈STM32的启动过程

分享这篇文章,谈一下STM32启动流程。如果读者朋友已经有过汇编相关基础,能更好理解本文内容。汇编语言是比C语言更接近机器底层的编程语言,能让我们更好的理解和操纵硬件底层。STM32三种启动模式
2021年5月25日
其他

详解STM32的时钟系统,收藏了

PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。通过倍频之后作为系统时钟的时钟源。配置时钟默认时钟
2021年5月22日
其他

CPU怎么识别我们写的代码?

早期的计算机就是这样编程的,几分钟就算完了但插线好几天。而且插线是个细致且需要耐心的工作,所以那个时候的程序员都是清一色的漂亮女孩子,穿制服的那种,就像照片上这样。是不是有种生不逢时的感觉?
2020年11月9日