- 博客(360)
- 收藏
- 关注
原创 编程技巧(基于STM32)第二章 全功能按键非阻塞式实现按键单击、双击和长按
(3)按键产生了事件,对应的标志位就会一直置1,直到检查了此事件,才会自动清0,这在模式切换时可能会导致误动作(例如,模式1中没有检查过某个标志位,但是按下过按键,此标志位已经置1,随后切换为模式2,开始检查此标志位,那么一旦进入模式2,此标志位的动作就会立刻响应),解决办法是在切换模式时,统一将所有的Key_Flag清0,避免上一个模式的按键标志位对这个模式产生影响.(1)在key.h中写好按键模块会用到的宏定义,如状态位掩码和按键索引枚举,同时声明按键事件状态位检查函数,供主函数调用。
2025-06-08 12:49:31
676
原创 零基础入门PCB设计 强化篇 第六章(实验——USB拓展坞PCB绘制)
比如,对单端信号而言,输出3V的电压,不计干扰和损耗的情况下,则接收到的也是3V;而差分信号,一条线是3V,另一条是-3V,差分电压则是-6~6V,这样就极大的提高了抗外部干扰的能力。[1] 单端信号:信号的检测基于信号线与参考基准线(通常是地)之间的电平变化,比如串口通信就是这种模式,串口有三根线(TX、RX和GND),发送和接收信号都是基于GND的电平而言的。[2] 差分信号:通过控制两个信号线之间的电平差异传递信息,实际传输的是两根信号之间的电平差,电平差不同,携带的信息就不同。
2025-06-07 11:46:24
298
原创 零基础入门PCB设计 强化篇 第五章(实验——51单片机核心板PCB绘制)
这篇教程详细介绍了51单片机核心板的PCB设计全过程,主要包括三个部分:1. 元件选型:讲解最小系统组成,推荐STC89C52单片机,说明电源电路设计要点;2. 原理图设计:分模块讲解电源电路、最小系统、晶振、复位等10个电路的设计方法;3. PCB设计:从布局原则、布线要求到铺铜操作,逐步指导完成70×40mm板子的制作,最后导出Gerber文件。教程特别强调布局布线规范,如差分线等长、电源线加粗、3W原则等专业设计要点,适合零基础学习者系统掌握PCB设计全流程。
2025-06-07 11:42:54
1595
原创 零基础入门PCB设计 强化篇 第四章(元件封装绘制)
(3)将1号焊盘复制3份(选中对象,按下Ctrl+D即可,或者依次按下Ctrl+C、Ctrl+V),修改它们的编号,然后同时选中它们,再在上方工具栏中找到智能尺寸并点击,进入智能尺寸模式,接着再依次选择1号焊盘和2号焊盘的中心点(在其编号处),此时会弹出二者的间距,再点击一下即可对二者的间距进行设置(先被选中的焊盘不动,改变后被选中焊盘的位置),其它焊盘同理,设置完成后退出智能尺寸模式即可。(2)回到开始页,选择“文件”→“新建”→“封装”,即可进入新建封装界面,此前已有建过库,不需要再新建一个库了。
2025-06-06 08:15:00
613
原创 零基础入门PCB设计 强化篇 第三章(元件符号绘制)
(1)在元件符号绘制界面上方的工具栏中有各种各样的图形,首先鼠标左键点击“矩形”,在绘制图纸上鼠标左键点击一次定位一角,再左键点击一次定位另一角,即可完成一个矩形的绘制,继续点击左键可绘制更多矩形,如果想停止矩形的放置,点击一次鼠标右键即可(后续很多添加元素的操作都是这种操作逻辑,将不再赘述)。一个元件的符号不是用户按照自己的想法随便绘制的,用户需要查询元件的数据手册,找到生产厂家提供的元件符号,按照此符号进行绘制(对于芯片而言,一般都是引脚+矩形即可,其内部细节不需要画在原理图上)。
2025-06-06 05:45:00
643
原创 零基础入门PCB设计 强化篇 第二章(设计环境设置)
(1)在菜单栏中选择“设置”→“系统”→“通用”,即可进入通用设置。(需要说明的是,本文中所有提到的快捷键都以本节的配置为准,本节未提及的快捷键说明为默认配置,读者在默认配置里翻阅即可,此处不再赘述)①通用:一些通用设置,需注意网格类型选择网点,新建PCB默认单位选择mil,新建mo封装默认单位选择mm(这是因为封装要对照着数据手册来,而数据手册中往往使用mm进行尺寸描述)。[1] 安全间距:每种元素与各种元素之间都有定义安全间距,如导线与导线之间有安全间距,导线和过孔之间也有安全间距。
2025-06-04 09:00:00
573
原创 零基础入门PCB设计 强化篇 第一章(熟悉EDA操作界面)
(5)设计规则检查(DRC):确保电子设计满足特定制造工艺要求,如果不满足要求,将会在DRC窗口中有所显示,检查规则可以在菜单栏的“设计”→“设计规则”中自行选择,一般原理图DRC默认全选即可,PCB DRC根据实际情况进行配置,此处暂时不进行详细介绍。(3)库:非离线模式下,库中的元件比常用库中的器件选型更加丰富,可以直接在立创商城中搜索,找到目标器件后双击它,再把鼠标移至编辑区中,再点击鼠标左键即可完成放置(可连续,直到点击鼠标右键,可结束放置)。③PCB文件中还会用到泪滴等,此处暂时不进行深入介绍。
2025-06-04 06:15:00
841
原创 零基础入门PCB设计 入门篇 第六章(PCB设计流程)
有时候元器件围绕中心轴对称,实物中不好区分对应的引脚,不过设计者早已考虑到这一点,不管是原理图、封装图还是实物,都会有一些防错标识(如下图所示的1号引脚旁的圆圈)帮助使用者进行区分。(2)原理图中需使用电子元器件,这些器件在其它软件中一般需要自己手动新建,绑定符号,绑定封装,添加元件属性,不过在立创EDA中这一步一般可以省去,直接用现成的库。(5)放置板框,将原理图中涉及到的器件摆好,根据原理图的连线进行PCB布线,然后进行设计规则检查(DRC),确保电子设计满足特定制造工艺要求。
2025-06-03 07:30:00
548
原创 零基础入门PCB设计 入门篇 第五章(PCB的结构与组成)
(1)PCB是英文Printed Circuit Board的缩写,中文名称为印制电路板,又称印刷电路板、印刷线路板,是电子元器件电气连接的提供者。(2)PCB根据其基板材料的不同而不同,可分为高频微波板、金属基板,铝基板、铁基板、铜基板、双面板及多层板。
2025-06-03 06:00:00
1051
原创 零基础入门PCB设计 入门篇 第四章(读懂和画好原理图)
本文介绍了PCB设计中原理图的绘制与阅读要点。主要内容包括:原理图三大要素(连接线、结点和注释),其中连接线包含实际导线和网络标号;集总参数电路的概念及其适用条件;阅读原理图的技巧,如分模块分析、查阅芯片手册等;绘制原理图的规范要求,强调模块化设计、特殊标注和版本管理。文章强调原理图设计应注重规范性、清晰性和可读性,为后续PCB设计奠定基础。
2025-06-02 00:19:23
721
原创 零基础入门PCB设计 入门篇 第三章(元件数据手册)
在PCB设计中我们往往会用到芯片,仅从原理图中我们并不能了解芯片的作用,但原理图上会有芯片的型号等信息,可以根据此号找到其对应的芯片数据手册(一般卖家手中也会有数据手册,直接找卖家索要即可,另外手册有可能是全英的,这就需要读者有一定的英语阅读能力了)。:解释引脚的定义,引脚定义在PCB设计(甚至是其上层的底层软件开发)中尤为重要。:帮助客户快速了解芯片的特性、功能,以及应用场景。:若芯片对布局有特殊要求将会在手册中描述。:若芯片对封装有特殊要求将会在手册中描述。:详细描述芯片功能内部结构。
2025-06-02 00:15:09
182
原创 零基础入门PCB设计 入门篇 第二章(电子元器件简介)
4] 第四组:涤纶电容不区分正负极,容值通过有效数字和10的n次幂形式给出,如“223”表示“22000”,其耐压不会直接写在元件上,但会以对应字母和给10的n次幂形式给出,如“2A”,其中A对应1.0V,耐压为1.0V乘以10的2次方,即100V。①截止状态:发射结反偏,集电结反偏,加在三极管发射结的电压小于PN结的导通电压,基极电流为零(相当于“阀门”关闭,“水管中”不会有水流动),集电极电流和发射极电流都为零,三极管这时失去了电流放大作用,集电极和发射极之间相当于开关的断开状态。
2025-06-01 00:05:08
824
原创 零基础入门PCB设计 入门篇 第一章(PCB技术发展历程)
CAD软件的出现,提高了设计人员的绘图效率,同时也提高了PCB设计的复用率,节约的重复设计时间,PCB设计完成后,直接导出Gerber文件输入到光绘设备中,同时,PCB的制造也开始大量还用了机械替代了人工,PCB生产效率的提高,之前需要几周才能交付的PCB现在最快几个小时就能交付,这时快板厂开始出现。这也为印制电路板的问世与发展,创造了必要的条件。为了简化电子机器的制作,减少电子零件间的配线,降低制作成本、提高电子机器的可靠性,人们开始钻研以印刷的方式取代配线的方法,以利用机器实现精密的大规模化生产。
2025-06-01 00:00:35
914
原创 从入门到精通汇编语言 第七章(高级汇编语言技术)
(1)通用数据传送指令:MOV、PUSH、POP、XCHG。(2)累加器专用传送指令:IN、OUT、XLAT。(3)地址传送指令:LEA、LDS、LES。(4)标志寄存器传送指令:LAHF、SAHF、PUSHF、POPF。(5)类型转换指令:CBW、CWD。(1)汇编指令对应机器指令,在程序运行期间由计算机执行。(2)伪操作指的是在汇编程序对源程序汇编期间,由汇编程序处理的操作,可以完成如数据定义、分配存储区、指示程序结束等功能。
2025-04-26 16:50:48
894
原创 从入门到精通汇编语言 第六章(中断及外部设备操作)
(1)格式:INT <立即数n>。(n为中断类型码)(2)INT指令可无条件引发任何中断过程,CPU执行“int n”指令,相当于引发一个n号中断的中断过程,执行过程如下①取得中断类型码N。②pushf —— 标志寄存器内容入栈(保存标志寄存器)。③TF = 0,IF = 0 —— 防止非预期的中断嵌套触发。④push CS —— 保存原程序断点。⑤push IP —— 保存原程序断点。⑥(IP) = (N*4)、(CS) = (N*4+2) —— 转移至N号中断的中断服务程序。
2025-04-20 23:54:12
927
原创 从入门到精通汇编语言 第五章(流程转移与子程序)
(1)般情况下指令是顺序地逐条执行的,而在实际中,常需要改变程序的执行流程,这就需要使用到转移指令。(2)转移指令可以控制CPU执行内存中某处代码的指令,它通过修改IP寄存器,或同时修改CS寄存器和IP寄存器实现。(1)JMP指令可实现无条件转移,可以只修改IP寄存器,也可以同时修改CS寄存器和IP寄存器。(2)JMP指令要给出两种信息的其中一个:①转移的距离(转移有向前和向后之分,转移距离分别对应正数和负数,用补码表示②转移的目的地址。
2025-04-20 23:35:31
962
原创 从入门到精通汇编语言 第四章(内存寻址方式)
(1)SI和DI是8086CPU中和BX功能相近的寄存器,区别是SI和DI不能够分成两个8位寄存器来使用,而BX可以。①BX:通用寄存器,在计算存储器地址时,常作为基址寄存器用。②SI:源变址寄存器。③DI:目标变址寄存器。(2)举例:下列3组指令执行的功能是一样的。
2025-04-12 00:27:56
915
原创 从入门到精通汇编语言 第三章(汇编语言程序)
(1)LOOP指令的功能是实现算法中的循环结构。(2)LOOP指令的格式:LOOP <标号>。(3)使用LOOP指令时的要求:①CX中要提前存放循环次数,因为(cx)影响着LOOP指令的执行结果。②要定义一个标号,如同C语言中goto语句需要的标号一样。(4)CPU执行LOOP指令时要进行的操作:①。②判断CX中的值,不为零则转至标号处执行程序,否则向下执行。
2025-04-12 00:17:24
565
原创 从入门到精通汇编语言 第二章(访问寄存器和内存)
(1)8086CPU的所有寄存器都是16位的,可以存放两个字节(16位)的数据。(2)8086CPU有14个寄存器:①通用寄存器:AX、BX、CX、DX。②变址寄存器:SI、DI。③指针寄存器:SP、BP。④指令指针寄存器:IP。⑤段寄存器:CS、SS、DS、ES。⑥标志寄存器:PSW。
2025-04-06 00:35:13
980
原创 从入门到精通汇编语言 第一章(计算机基础知识)
微型机存储器的一个存储单元可以存储一个Byte,即8个二进制位,如果一个存储器有128个存储单元,那么它可以存储128个Byte,我们可以说,它的容量是128个字节。(2)机器指令由一串二进制数表示,如“01010000”,在硬件层面它可以由一串电平脉冲表示,但很显然,用一串数字表示指令非常抽象,而且也难以记忆,程序出现bug也难以排查。(1)在计算机中有专门连接CPU和其它芯片的导线,通常称它们为总线,物理上它们是一根根导线的集合,逻辑上它们可划分为地址总线、数据总线和控制总线。
2025-04-06 00:24:32
658
原创 µCOS-III从入门到精通 第十五章(µC/OS-III内存管理)
(1)内存管理是指软件运行时对内存资源的分配和使用的一种技术,其最主要的目的就是为了能够高效且快速地分配,并且在释放的时候释放不再使用的内存空间。(2)标准C库的动态内存管理方法的缺点:①占用大量的代码空间,不适合用在资源紧缺的嵌入式系统中。②没有线程安全的相关机制。③运行有不确定性,每次调用这些函数时花费的时间可能都不相同。④有内存碎片化的现象(内存碎片是在多次申请和释放内存的过程中产生的)。/* 指向内存区起始地址指针 *//* 指向空闲的内存块链表指针 */
2025-03-13 21:10:49
747
原创 µCOS-III从入门到精通 第十四章(软件定时器)
(1)定时器的概念:从指定的时刻开始,经过一个指定时间,然后触发一个超时事件,用户可自定义定时器的周期。(2)定时器的种类:①硬件定时器:芯片本身自带的定时器模块,硬件定时器的精度一般很高,每次在定时时间到达之后就会自动触发一个中断,用户在中断服务函数中处理信息。②软件定时器:具有定时功能的软件,可设置定时周期,当指定时间到达后要调用回调函数(也称超时函数),用户在回调函数中处理信息。
2025-03-13 21:08:30
817
原创 µCOS-III从入门到精通 第十三章(事件标志组)
(1)事件标志位是一个“位”,用来表示事件是否发生。(2)事件标志组是一组事件标志位的集合,可以简单的理解事件标志组,是一个整数。(3)事件标志组的特点:①每一个位与一个事件相关联,高8位除外,高8位用作存储事件标志组的控制信息。(下图所示的是32 位长度的事件标志组)②每一位事件的含义,以及高电平和低电平分别代表什么,由用户自己决定。③任意任务或中断都可以写这些位,但读这些位只能由任务来读。④可以等待某一位成立,或者等待多位同时成立。⑤支持读取阻塞。
2025-03-12 23:46:43
1075
原创 µCOS-III从入门到精通 第十二章(任务信号量及队列)
(1)任务内嵌信号量本质上就是一个信号量,任务信号量是分配于每一个任务的任务控制块结构体中的,因此每一个任务都有独自的任务内嵌信号量。(2)任务内嵌信号量只能被该任务获取,这也意味着任务内嵌信号量无法广播给多个任务,但是可以由其它任务或者中断释放。(1)任务信号量相关API函数概览:函数描述获取任务信号量终止任务挂起等待任务信号量释放指定任务的任务信号量强制设置指定的任务信号量为指定值①释放任务信号量API函数可以用于任务和中断服务函数中。②接收任务信号量API函数只能用在任务中。
2025-03-12 23:43:44
929
原创 µCOS-III从入门到精通 第十一章(信号量)
(1)信号量是一种解决同步问题的机制,可以实现对共享资源的有序访问,µC/OS-III中使用的是二值信号量、计数型信号量与互斥信号量。(2)以计数型信号量进行举例说明:①计数值大于0,代表有信号量资源。当获取信号量,即将资源分配给一个任务时,信号量计数值(资源数)减一,也即可分配的资源数减一;当释放信号量,即任务将资源归还给OS时,信号量计数值(资源数)加一,也即可分配的资源数加一。②信号量的计数值都有最大值限制,如果最大值被限定为1,那么它就是二值信号量,如果最大值不是1,它就是计数型信号量。
2025-03-09 00:42:13
826
原创 µCOS-III从入门到精通 第十章(µC/OS-III消息队列)
(1)队列是任务到任务、中断到任务数据交流的一种机制,它不同于全局变量。假设有一个全局变量a,现有两个任务都在写这个变量a,如下所示,变量自增分为三个步骤,如果在任务1读数据以后、修改数据以前发生任务切换,这将导致任务2和任务1读取相同的数据,并且基于相同的数据做相同的修改,这显然是有问题的,而使用队列可以避免这种问题(指访问冲突)。。
2025-03-08 16:19:11
867
原创 µCOS-III从入门到精通 第九章(时间管理)
(1)OSTimeDly函数:形参描述dly任务延时的系统时钟节拍数opt延时选项p_err指向接收错误代码变量的指针②延时选项:opt描述任务延时的结束时刻为OSTickCtr + dly任务延时的结束时刻为 OSTickCtr + dly任务延时的结束时刻为 dly(绝对时间)任务延时的结束时刻为OSTCBCurPtr -> TickCtrPrev+dly[1]OSTickCtr是系统时钟节拍计数器,它是一个32bit的数,会溢出,然后回到0重新开始计数。
2025-03-08 16:14:37
1028
原创 µCOS-III从入门到精通 第八章(时间片调度)
时间片调度主要针对优先级相同的任务,当多个任务的优先级相同时,同等优先级任务轮流地享有相应的CPU时间(可分别设置),叫时间片,在µC/OS-III中,一个时间片就等于SysTick(滴答定时器)中断周期。创建三个任务——Task1、Task2、Task3,Task1、Task2、Task3的优先级均设置为1,时间片默认值(或者说时间片的数量)均设置为100运行过程如下:首先Task1运行完100个时间片后,切换至Task2运行Task2运行完100个时间片后,切换至Task3运行。
2025-03-06 23:50:49
870
原创 µCOS-III从入门到精通 第七章(任务调度)
(1)OSInit函数用于初始化µC/OS-III,必须在调用任何其它µC/OS-III函数之前调用它,仅调用一次即可。(2)该函数的执行内容:①对一些全局变量赋初始值。②初始化就绪列表以及Tick列表等。③创建三个任务:空闲任务(必须创建),统计任务(条件创建),软件定时器任务(条件创建)。[1]空闲任务:任务优先级最低31,当系统无其它就绪任务,那么空闲任务将会执行(空闲任务不能被阻塞)。[2]统计任务:任务优先级为30,用来统计CPU使用率和各个任务的堆栈使用量。
2025-03-06 23:50:42
1639
原创 µCOS-III从入门到精通 第六章(µC/OS-III临界区代码保护及任务调度锁)
(1)临界段代码也叫做临界区,是指那些必须完整运行,不能被打断的代码段。(2)临界段适合于需严格按照时序的场合,如软件通信协议的实现,如果其实现过程中被中断打断,将会扰乱时序,从而引发通讯错误。(3)临界区外,中断与任务调度可以打断当前程序的运行,而临界区内直接屏蔽了中断(实际上,任务调度也是依靠中断实现的)。(1)µC/OS-III在进入临界段代码的时候需要关闭中断,当处理完临界段代码以后再打开中断。函数描述进入临界段退出临界段/* 非临界区代码 */… … /* 临界区代码 */
2025-03-03 05:00:00
502
原创 µCOS-III从入门到精通 第五章(中断管理)
(1)让CPU打断正常运行的程序,转而去处理紧急的事件(程序),这个过程就叫中断,受理的事件称为中断服务程序。(2)中断执行机制,可简单概括为三步:①外设产生中断请求(GPIO外部中断、定时器中断等)。②CPU停止执行当前程序,转而去执行中断处理程序(ISR)。③执行完毕,返回被打断的程序处,继续往下执行。
2025-03-03 04:00:00
1870
原创 µCOS-III从入门到精通 第四章(任务挂起和恢复)
(1)任务挂起和恢复的本质就是调用µCOS-III的API函数。API函数描述挂起任务恢复任务(2)挂起任务类似暂停任务,它可重新恢复,但删除任务则是将任务永远删除,除非是重新创建任务(任务也会重头开始执行),否则任务将永远消失。(3)这两个函数不允许在中断中调用,且不能挂起空闲任务。
2025-03-02 00:29:19
799
原创 µCOS-III从入门到精通 第三章(任务创建和任务删除)
(1)任务的创建和删除本质就是调用µC-/OS-III的API函数。API函数描述创建任务删除任务(2)在调用任何关µC-/OS-III函数之前必须先初始化µC-/OS-III,仅初始化一次即可,通过调用函数OSInit实现。(3)任务在创建之后是不会直接运行的,需开启任务调度器,任务才能得以运行,通过调用函数OSStart实现。
2025-03-02 00:26:17
957
原创 µCOS-III从入门到精通 第二章(µCOS-III移植)
组件版本号µC-OS3v3.08.01µC-CPUv1.32.01µC-LIBv1.39.01。
2025-02-27 23:06:44
945
原创 µCOS-III从入门到精通 第一章(初识µCOS-III)
(1)裸机又称为前后台系统,前台系统指的中断服务函数,后台系统指的大循环,即应用程序。(2)裸机的特点:①实时性很差,应用程序得依次执行。②容易出现空等待的情况,浪费CPU资源。③结构臃肿,所有功能的代码放在一个主循环中。(1)µC/OS-III的发音为“Micro C O S Three”,这意味着µC/OS-III是基于C语言编写的第三代小型操作系统。特征uC/OSuC/OS-IIuC/OS-III发布年份199219982009抢占式多任务是是是最大任务数64。
2025-02-27 23:01:17
760
原创 编程技巧(基于STM32)第一章 定时器实现非阻塞式程序——按键控制LED灯闪烁模式
①先写一个获取键码值的子函数(非阻塞式,即获取当前哪个接了按键的引脚为低电平0,返回其对应的键码值,如全部接按键的引脚均为高电平0,则返回键码值0)。(2)在Key.c文件中编写多按键扫描(需要记录键码,而不仅仅是读取)的函数,并在头文件中声明,供main.c文件中的TIM2定时中断函数调用。(2)在LED.c文件中编写更改LED闪烁模式的函数,并在头文件中声明,函数参数为期望闪烁模式,供main.c文件中的主函数调用。(1)在定时中断函数中定义计次变量(静态),每隔1ms计次变量自增,计到周期值时归零。
2025-02-15 16:50:31
1846
原创 FreeRTOS从入门到精通 第十九章(内存管理)
(1)动态方法创建:自动地从FreeRTOS管理的内存堆(其实就是全局中的一个超大数组,这个数组由FreeRTOS管理)中申请创建对象所需的内存,并且在对象删除后,可将这块内存释放回FreeRTOS管理的内存堆。(2)需用户提供各种内存空间,并且使用静态方式占用的内存空间一般固定下来了,即使任务、队列等被删除后,这些被占用的内存空间一般没有其它用途。(1)pvPortMalloc函数:①pvPortMalloc函数用于申请内存(建议与释放内存一一对应)。
2025-02-03 01:25:39
984
3
原创 FreeRTOS从入门到精通 第十八章(Tickless低功耗模式)
(1)一般MCU都有相应的低功耗模式,裸机开发时可以使用MCU的低功耗模式。(2)FreeRTOS提供了一个叫Tickless的低功耗模式,方便带FreeRTOS操作系统的应用开发。(1)Tickless低功耗模式的本质是通过调用指令WFI实现睡眠模式。
2025-02-01 05:15:00
505
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人