找回密码
 立即注册
楼主: 电子DIY小家

《8051U深度入门到32位51大型实战视频》,【免费 + 包邮 送】实验箱@Ai8051U,100万套

   火... [复制链接]
  • 打卡等级:常住居民I
  • 打卡总天数:66
  • 最近打卡:2026-07-22 08:15:41

1

主题

12

回帖

249

积分

中级会员

积分
249
发表于 2026-6-11 22:16:15 | 显示全部楼层
第七集   定时器中断

定时器的应用
任务1:LED灯三秒取反一次,这期间任意时刻按下按钮,串口打印按键次数。
为实现以上功能编写一段程序,每按一次按键数字就增加一并在串口打印显示。

定时器作用:
(1)用于计时系统,可实现软件计时,或者使程序每隔一固定时间完成一项操
(2)替代长时间的Delay;提高程序的运行效率和处理速度(可以打断主循环)

Keil软件中0xFD问题:主要表现在字符串中不能含有带0xFD编码(如下图片)
在带0xfd编码的汉字后增加一个0xfd即可。

使用定时器中断加按键实现救护车灯的控制,并编程写一个程序来实现。
3555.png
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:644
  • 最近打卡:2026-07-19 19:23:36
已绑定手机

1

主题

53

回帖

1095

积分

金牌会员

积分
1095
发表于 2026-6-14 18:00:05 | 显示全部楼层
这个视频还后续吗
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2026-06-18 11:35:43

1

主题

6

回帖

21

积分

新手上路

积分
21
发表于 2026-6-18 11:35:43 | 显示全部楼层
Y._h*** 发表于 2026-5-6 14:19
一、硬件功能(STC AI8051U)
1. 核心内核(最大亮点)
  32位1T 8051内核,1时钟周期执行1条指令,比传统 ...

第六集 I/O输入输出 学习心得

在第五集完成嵌入式C语言专项学习后,我已经掌握了单片机编程的基础语法、数据类型、位操作、宏定义等核心编码工具,能够独立编写简单的电平翻转代码,但代码始终局限于单一引脚输出控制LED,无法实现单片机与外部电路双向交互。本集在单点IO输出的基础上,完整拓展通用GPIO双向输入输出全功能,覆盖推挽输出、准双向、高阻输入、开漏输出四种引脚模式的硬件原理、配置方法、适用场景,同时配套流水灯多路输出、按键电平采集两大核心实操实验,打通单片机“向外输出控制信号、向内读取外部电平”的完整交互逻辑。结合我正在搭建的数码管+PCF8591 DAC波形发生器综合电路,本集所学的IO底层逻辑是模拟I2C通信、数码管动态扫描、外部电压采集的根本支撑,此前调试PCF8591时I2C时序异常、数码管亮度不均等问题,根源都在于我对IO输入输出模式理解不透彻。整集学习过程中,我区分了输出驱动外设、输入读取按键两套电路设计思路,实操中踩中按键抖动、引脚模式配置错误、驱动能力不足等典型故障,通过逐一排查修复,建立起硬件电路匹配IO配置、代码逻辑跟随硬件设计的标准化开发思维,彻底摆脱只会抄写代码、不懂底层驱动逻辑的学习误区。

课程开篇先承接第三集LED点灯的基础内容,横向对比Ai8051U与传统89C51单片机IO口的本质差异,点明本集核心重难点:四种GPIO工作模式的区分与配置。传统51单片机所有IO口上电统一为准双向模式,功能单一、驱动能力固定,无法适配不同负载;而Ai8051U每一组IO引脚均可独立配置四种工作模式,不同模式对应完全不同的电气特性,直接决定外设能否正常工作,这也是新手调试外设最容易忽略的关键点。讲师逐一拆解四种IO模式的硬件内部电路、电气特性、适用场景:第一,推挽输出模式,引脚内部上下两路驱动晶体管同时导通,高电平可向外输出电流、低电平可吸入电流,驱动能力最强,适合驱动LED、数码管段选、I2C总线时钟引脚这类需要稳定电平输出的外设,也是我PCF8591的SCL、SDA引脚标准配置;第二,准双向模式,内部带上拉弱电阻,无外部负载时默认高电平,可输入可输出,但驱动能力弱,仅适合弱负载场景;第三,高阻输入模式,引脚内部驱动管全部断开,无电流流入流出,完全用于读取外部电平,按键、电位器电压采集必须配置该模式,若配置为输出模式读取电平,会出现读取数值恒定不变的故障;第四,开漏输出模式,仅下拉晶体管导通,高电平依靠外部上拉电阻实现,无法主动输出高电平,适用于多设备总线共享通信场景,I2C总线本质就是开漏输出搭配外部上拉电阻工作,完美对应我电路里R2、R3上拉10K电阻的I2C硬件结构。四种模式的区分理论,直接解释了此前我调试PCF8591时总线电平异常、通信失败的底层原因,让我不再单纯纠结代码时序,而是同步核对引脚硬件配置。

课程前半段聚焦IO输出拓展实验,在单点LED基础上延伸多路流水灯项目,讲解批量端口赋值、位操作混合使用的编码技巧。硬件电路上,将P0、P1两组IO口分别外接多颗LED,每路串联220Ω限流电阻,阴极统一接单片机引脚,低电平点亮;软件层面提供两套实现方案:第一种为位操作循环,逐位翻转单引脚电平,精准控制每一颗LED亮灭,适合需要单独控制单路外设的场景,比如单独控制数码管某一位、单独控制I2C时钟SCL;第二种为端口整体赋值,直接对P1、P0端口写入十六进制数值,一次性批量控制8路引脚电平,代码简洁、执行效率更高,适合流水灯、数码管段选同步输出场景。实操编写流水灯代码时,我再次踩中引脚模式配置的经典误区:P0口默认高阻输入模式,未配置推挽输出,写入电平后LED完全无响应。对照教程配置P0口为推挽输出后,流水灯正常循环点亮,同时我直观对比P0与P1口驱动能力差异,P0无内置上拉,驱动LED亮度略暗,也理解了数码管P0段选必须搭配排阻上拉的硬件设计逻辑,和我原理图中数码管配套RP1排阻的电路完全对应。同时讲师补充IO输出负载约束,单颗引脚最大驱动电流有限,多路LED同步点亮时总电流不能超过芯片额定值,否则会出现引脚压降、LED亮度衰减,严重时烧毁IO口,这为我后续多路数码管同步扫描提供硬件安全规范。

课程后半段进入IO输入核心模块,以独立按键采集为实操案例,讲解外部电平读取完整流程。硬件分为两种标准按键电路:上拉输入按键、下拉输入按键。上拉按键一端接单片机IO引脚,另一端接地,引脚配置高阻输入模式,无按键按下时内部弱上拉维持高电平,按键按下后引脚接地变为低电平;下拉按键一端接IO引脚,另一端接5V,无按键时为低电平,按下后变为高电平。我实操选用上拉按键电路,初次编写代码直接在主循环中循环读取引脚电平,出现按键误触发、一次按下多次识别的抖动问题,讲师详细讲解机械按键物理抖动原理:按键金属触点接触、断开瞬间会产生5~10ms电平跳变杂波,单片机高速循环读取时会误判多次按键动作。配套两种消抖解决方案,软件消抖与硬件消抖,嵌入式学习阶段优先使用软件延时消抖,读取到电平变化后,延时10ms再次读取引脚电平,两次电平一致才判定为有效按键动作,代码改动量小、无需额外元器件,适配课程实验场景;硬件消抖则搭配电容滤波,适合工业稳定项目。修改代码加入消抖延时后,按键识别稳定无乱跳,我也掌握了所有外部输入信号的通用读取逻辑,后续如果拓展电位器电压采集、外部触发信号输入,都可以套用这套“电平检测+延时消抖”标准流程。

同时讲师结合我正在调试的PCF8591 I2C电路,串联讲解IO输入输出切换在模拟总线中的应用。I2C通信分为发送阶段与应答读取阶段:发送SCL、SDA电平信号时,引脚配置推挽输出,主动输出高低电平;读取PCF8591应答信号时,SDA引脚切换为高阻输入,接收芯片反馈电平。此前我编写I2C代码时全程将SDA固定为输出模式,无法读取应答位,通信稳定性差,偶尔出现DAC输出波形卡顿,正是缺少引脚模式动态切换逻辑,学习本集后我优化I2C底层函数,发送数据时设输出、读取应答时切输入,总线通信稳定性大幅提升,锯齿波、正弦波刷新不再出现卡顿失真。这一知识点打通了IO基础与我当前DAC波形项目的技术壁垒,让我明白看似独立的基础IO实验,是复杂总线通信的底层支撑,不存在毫无关联的基础实验。

实操过程中,我整理出三类IO输入输出高频故障标准化排查流程。第一类:输出外设(LED、数码管)完全无响应,排查顺序:核对引脚模式是否配置为推挽输出、限流电阻是否虚焊、电平逻辑是否与电路匹配、开发板供电是否稳定;第二类:按键输入读取数值恒定不变,故障根源为引脚未切换至高阻输入模式,持续输出电平覆盖外部按键信号;第三类:按键频繁误触发,解决方案为增加软件消抖延时、检查按键电路上拉/下拉电阻是否漏接。每一类故障都对应硬件电路与代码配置双重校验,改变了我以往只修改代码、忽略引脚模式硬件配置的调试习惯。

本集学习完成后,我彻底完善了嵌入式开发的双向交互底层逻辑,不再局限于单一输出控制。从工程应用层面,四种IO模式的配置规范同时适配我原理图中三大外设:数码管段选、位选引脚使用推挽输出保证亮度;I2C总线SCL/SDA动态切换输出/输入实现通信;预留按键引脚配置高阻输入用于外部信号采集,一套引脚配置逻辑覆盖全部实验外设。同时我建立起“先确定外设电气需求→匹配对应IO工作模式→编写对应输入/输出代码”的标准化开发流程,避免盲目抄写代码带来的硬件功能失效。长远来看,本集IO双向交互逻辑是后续第七集定时器中断、第八集多任务调度、第九集数码管动态扫描的前置基础:定时器中断内刷新LED、扫描按键、更新DAC数值,本质都是中断触发后操作IO引脚电平;数码管动态扫描依靠快速切换位选IO输出电平,利用人眼视觉暂留实现多数字同步显示。整套知识点串联起我当前全套综合实验电路,让我清晰意识到单片机所有外设操作,底层全部依托GPIO输入输出实现,扎实掌握IO配置,才能从根源减少硬件调试故障,大幅提升多外设联动项目的开发与调试效率。
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2026-06-18 11:35:43

1

主题

6

回帖

21

积分

新手上路

积分
21
发表于 2026-6-18 11:36:50 | 显示全部楼层
Y._h*** 发表于 2026-6-18 11:35
第六集 I/O输入输出 学习心得

在第五集完成嵌入式C语言专项学习后,我已经掌握了单片机编程的基础语法 ...

Ai8051U教学视频第七集 定时器中断 学习心得

定时器中断章节是Ai8051U单片机整套课程的核心分水岭,也是从入门基础IO操作,进阶嵌入式多任务编程、硬件时序控制的重难点章节。在前六集学习中,我掌握了LED点灯、按键扫描、嵌入式C语法、流水灯、软件延时等基础操作,所有程序执行逻辑均为串行阻塞式执行,依靠for循环、while循环编写空语句实现软件延时,程序执行延时期间,单片机无法响应按键、无法控制外设、无法处理其他任务,程序功能性极度受限。通过本集系统学习,我彻底理解硬件定时器工作原理、中断运行机制、异步调度逻辑,摆脱软件延时的程序阻塞弊端,搭建起单片机后台计时、前台运行多外设的编程思维,同时吃透Ai8051U专属定时器配置、初值计算、中断编写规范,为后续DAC正弦波波形生成、多任务调度、数码管独立刷新、I2C时序精准延时打下核心底层基础,整节课程理论逻辑性强、实操易错点多,结合开发板实操调试、故障复盘、项目联动,我收获颇丰,现将完整学习感悟整理如下。

一、新旧编程逻辑对比:彻底理解软件延时的核心弊端

学习本集之前,我编写LED闪烁、流水灯程序,全部使用嵌入式C语言for循环嵌套空语句实现延时,例如编写500msLED翻转代码,写法为循环嵌套空指令消耗CPU运行时间,实现肉眼可见的延时效果。通过课程讲解我彻底理清两种延时模式的本质区别,也明白嵌入式开发中禁止滥用软件延时的底层原因。

软件延时属于阻塞式延时,延时代码执行期间,单片机CPU全程被占用,只会执行空循环语句,无法执行按键扫描、DAC数值刷新、数码管显示等任何其他代码。以流水灯+按键控速联动实验为例:添加500ms软件延时后,流水灯缓慢移动,但全程按下按键无任何响应,必须等待延时代码执行完毕,CPU回到主循环,才能读取按键电平,按键响应极度滞后,完全无法适配实际项目使用。同时软件延时极不稳定,延时时长完全依赖CPU主频、编译器优化等级、代码行数,更换编译环境、修改一行无关代码,延时时长就会发生偏移,无法精准控制延时周期,这也是我后续制作PCF8591波形发生器时,软件延时生成的正弦波周期杂乱、波形失真的根本原因。

而本集学习的硬件定时器+外部中断,属于非阻塞异步运行机制。定时器依托单片机内部独立硬件计数模块工作,不需要占用CPU循环运算,硬件自主累加计数,计数达标后自动触发中断,CPU暂停当前主循环任务,跳转执行中断服务函数,执行完毕后返回断点继续运行主程序。简单来说:定时器后台自主计时,主程序前台不间断运行外设代码,二者互不干扰,完美实现多任务并行,这也是嵌入式单片机开发最核心的编程思维转变。

二、Ai8051U定时器核心理论知识梳理

结合开发板硬件参数,本集针对性讲解适配Ai8051U的定时器架构、寄存器配置、工作模式、中断规则,区别于传统老旧51单片机,这款开发板优化了时钟分频电路,降低了初值计算难度,核心理论知识点我逐一吃透整理。

第一,基础硬件架构。Ai8051U内置Timer0、Timer1两个通用8/16位可编程定时器,既可配置为定时器模式,对系统系统时钟脉冲计数;也可配置为计数器模式,对外部引脚输入脉冲计数,日常LED延时、时序刷新、定时扫描,全部使用定时器模式。开发板默认系统晶振为11.0592MHz,该晶振是51单片机标配晶振,优势是串口波特率、定时分频数值无小数误差,计算初值精准无偏差。

第二,四大工作模式区分。模式0为13位定时计数、模式1为16位定时计数、模式2为8位自动重装、模式3为双8位计数。课程重点要求掌握模式1(16位定时)与模式2(8位自动重装),也是项目最常用模式:16位定时器计数范围0-65535,定时时长最长,适合毫秒级长延时;8位自动重装计数范围0-255,计数溢出后自动加载初值,无需手动代码赋值,适合微秒级精准时序、高频波形刷新,后续PCF8591正弦波刷新,我就选用模式2配置定时器。

第三,中断核心三要素。想要开启定时器中断,必须同时满足三个条件,缺一不可,这也是新手调试定时器无效果的高频易错点:一是开启定时器运行开关TR0/TR1;二是开启定时器中断允许位ET0/ET1;三是开启单片机总中断开关EA。三者任意一项关闭,定时器只会计数,不会触发中断,LED不会定时翻转,这是我首次实操踩坑的核心知识点。

第四,定时初值计算公式推导。定时时长由晶振、分频系数、计数最大值、初值共同决定,Ai8051U默认12分频,即单片机12个时钟脉冲等于1个机器周期,机器周期=12/晶振频率。以11.0592MHz晶振、12分频、模式1、定时1ms为例:单个机器周期约1.085us,1ms需要计数921次,16位定时器初始值=65536-921=64615,换算十六进制即为0xFC67。课程手把手带算公式,让我不再死记硬背数值,可根据自定义定时时长自主计算初值,适配项目不同定时需求。

三、实操实验流程、调试过程与踩坑故障复盘

本集核心实操实验为:配置Timer0模式1,实现精准500ms定时翻转LED电平,同时主循环不间断扫描独立按键,实现LED定时闪烁+按键随时控灯并行运行,全程无程序阻塞,实操过程我先后遇到四类典型故障,逐一排查解决,积累了定时器专属调试经验。

(一)标准实操编程流程

1. 工程配置:沿用之前点灯工程,确认Ai8051U芯片选型无误,开启中断功能;
2. 引脚宏定义:宏定义LED控制引脚、按键输入引脚,提升代码可读性;
3. 定时器初始化函数:配置TMOD寄存器选定工作模式,给TH0、TL0赋值定时初值,开启TR0、ET0、EA三大中断开关;
4. 编写中断服务函数:遵循51中断规则,中断号固定为1,函数无返回值、无形参,仅编写LED电平翻转代码;
5. 编写主循环:主循环只写按键扫描代码,无任何延时函数,实现后台定时闪灯、前台按键控灯双任务。

(二)实操四大故障及解决方法

故障一:定时器配置完成,LED全程不翻转,无任何定时效果。排查过程:首先用万用表测量IO口电平无变化,逐行核对寄存器代码,发现遗漏总中断EA=1代码,只开启了定时器局部中断,单片机总中断关闭,无法响应中断请求,补充代码后立刻正常运行。这让我牢记:EA总中断是所有外部、定时器中断的总闸门,写中断代码第一步必开EA。

故障二:LED闪烁速度极快,定时500ms实际不到100ms,定时时长严重偏差。排查过程:核对初值计算过程,误将11.0592MHz晶振按照12MHz计算,机器周期取值错误,导致初值赋值偏大,计数溢出速度变快。重新套用公式精准计算0xFC67初值,修改高低位寄存器数值后,闪烁时长精准匹配500ms。本次踩坑让我明白:定时误差90%来源于初值计算错误,不可照搬网络通用12MHz初值,必须匹配Ai8051U原生晶振参数。

故障三:LED定时闪烁正常,但按键按下偶尔失灵、电平读取错乱。排查原因:中断服务函数内添加了5ms软件消抖延时,中断执行耗时过长,CPU来不及处理下一次中断,出现中断丢失、中断嵌套混乱。课程重点强调硬性规则:定时器中断服务函数严禁编写for/while延时、printf打印、复杂运算、函数嵌套代码,中断函数必须精简短小,只做标志位赋值、电平翻转等极简操作,复杂逻辑全部放到主循环执行。后续我删除中断内延时,在主循环做按键消抖,故障彻底解决。

故障四:程序运行一段时间后,LED闪烁节奏逐渐偏移,定时精度变差。原因:16位模式1无自动重装功能,每次中断结束后,不会自动加载TH0、TL0初值,CPU需要代码赋值初值,赋值耗时会产生微小误差,长时间累积误差放大。解决方法:长定时可在中断内手动重载初值,高频定时直接改用模式2自动重装模式,从硬件层面杜绝定时误差。

四、本集知识点与PCF8591波形发生器项目深度联动

结合我现阶段正在调试的四位数码管+PCF8591DAC正弦波发生器项目,本集定时器中断是项目能够稳定运行、波形不失真的核心底层支撑,彻底解决前期软件延时带来的项目痛点。

前期我使用软件延时逐点刷新DAC电压数值生成正弦波,每修改一次DAC数值,都要嵌套延时等待,不仅波形出现大面积阶梯畸变,而且刷新波形时,数码管完全停止显示,二者只能单一运行。学习定时器中断后,我重新规划项目逻辑:利用定时器固定100us精准时基,定时中断内逐点调用正弦波数组数值,刷新PCF8591DAC输出电压,依托硬件固定计时,波形刷新间隔完全统一,正弦波平滑度、周期精准可控,不会出现卡顿、变形;同时主循环空闲资源,专门负责按键调节波形频率、数码管电压采集显示,定时器后台独立工作,完全不抢占主循环资源。

除此之外,定时器中断决定波形可调范围:想要更改正弦波频率,无需修改延时代码,只需要修改定时器初值,改变中断触发周期,即可加快或减慢DAC数值刷新速度,实现频率无极调节,这是软件延时完全无法实现的功能。可以说,没有定时器中断的异步调度能力,就无法做出标准、可调、稳定的模拟波形,本集内容是我的课程实操项目从基础实验进阶综合项目的关键转折点。

五、本集学习总结与后续学习规划

(一)核心知识总结

1. 思维升级:摒弃阻塞式软件延时,建立后台硬件计时、前台任务运行、中断跳转处理的嵌入式异步编程思维,这是单片机高阶开发的核心思维;
2. 实操准则:定时器使用三要素(开定时器、开局部中断、开总中断)、中断函数精简原则、匹配晶振精准计算初值、按需选择定时工作模式,是定时器调试四大黄金准则;
3. 能力提升:掌握中断故障排查思路,可快速解决中断不触发、定时不准、中断丢失、外设冲突四类高频问题,适配Ai8051U全外设开发。

(二)课程衔接感悟

第七集定时器中断承接第六集IO输入输出基础,依托IO电平翻转验证定时效果,同时为第八集定时器分时多任务调度、第九集数码管动态扫描筑牢基础。第八集多任务调度本质就是依托本集固定定时时基,拆分多个计时标志位;第九集无闪烁数码管显示,必须依靠定时器中断定时扫描,避免占用主循环DAC资源,整套课程知识点环环相扣,定时器属于承上启下的核心章节。

(三)后续学习改进计划

1. 熟练默写定时器0、定时器1两种初始化代码,区分模式1、模式2配置差异,自主完成10ms、20ms、100ms自定义定时代码编写;
2. 优化现有波形发生器代码,将按键消抖、频率调节全部依托定时器标志位实现,彻底删除项目内所有软件延时代码;
3. 吃透中断优先级概念,后续设置波形输出为高优先级中断,数码管扫描为低优先级中断,保障波形输出永远优先执行,进一步优化项目稳定性。

总而言之,本集是我学习Ai8051U单片机以来难度最大、价值最高的一课,从看懂中断原理、算准定时初值、排查中断故障,到落地项目优化,完成了从只会写流水灯小白,到具备多任务编程能力学习者的转变,后续所有综合外设实验,我都会优先使用定时器中断架构编写代码,打造高效、稳定、可复用的单片机程序。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:316
  • 最近打卡:2026-07-22 06:56:11
已绑定手机

70

主题

874

回帖

3225

积分

论坛元老

DIY玩家

积分
3225
发表于 2026-6-18 11:37:24 | 显示全部楼层
Yvsi*** 发表于 2026-6-14 18:00
这个视频还后续吗

对比往期单片机教学视频
还有内容需要更新
永怀这学徒心
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2026-06-18 11:35:43

1

主题

6

回帖

21

积分

新手上路

积分
21
发表于 2026-6-18 11:38:40 | 显示全部楼层
Y._h*** 发表于 2026-6-18 11:36
Ai8051U教学视频第七集 定时器中断 学习心得

定时器中断章节是Ai8051U单片机整套课程的核心分水岭,也 ...

Ai8051U教学视频第八集 定时器周期性调度任务 学习心得

在前一集系统学习定时器中断基础用法后,第八集作为定时器内容的进阶拓展,核心讲解基于单一定时器时基实现多任务分时调度,搭建简易嵌入式实时任务框架。第六集我掌握了IO输入输出、按键与LED基础操作,第七集学会依靠定时器中断摆脱软件延时阻塞,实现单一定时任务后台运行,但在实际调试PCF8591 DAC波形发生器与数码管联动程序时,依旧暴露出明显缺陷:所有功能串行执行,刷新DAC波形时数码管停滞,扫描按键时波形卡顿失真,多外设无法同步稳定工作。本集课程完美解决多任务资源抢占冲突问题,依托统一定时器产生固定时基,通过多组计时计数器划分不同执行周期,让按键检测、波形刷新、数码管显示等任务并行运行、互不干扰。整套理论逻辑清晰,实操优化对比直观,结合自身硬件项目调试踩坑经历,我对单片机分时调度、实时任务优先级、中断执行规范有了完整且深刻的理解,现将完整学习心得整理如下。

一、学习前存在的程序痛点:串行执行带来的外设冲突

在学习第八集之前,我编写程序的逻辑始终停留在传统串行循环模式,哪怕引入第七集的定时器中断,也仅能完成单一周期任务,多外设同时运行的缺陷十分突出。此前调试波形发生器程序时,代码执行顺序为:主循环先读取按键调节频率,再刷新DAC正弦波数值,最后调用数码管动态扫描函数,整套流程依次执行,属于典型串行执行。

这种写法存在三大无法规避的硬伤。第一,任务执行时长相互叠加,周期完全不固定。数码管动态扫描需要循环点亮四位数码管,消耗一定CPU运行时间,这段时间内DAC波形刷新会被延后,波形刷新间隔忽长忽短,输出正弦波出现明显阶梯形变,波形平滑度大幅下降;第二,按键响应延迟,数码管刷新占用CPU时,按键电平读取被搁置,快速按下按键无法及时识别,调节波形频率存在滞后;第三,新增外设功能会持续放大卡顿问题,如果后续增加蜂鸣器、串口打印等功能,主循环执行链路更长,所有外设都会出现运行不稳定的情况。

最开始我尝试新增第二个定时器单独驱动数码管,用Timer0刷新DAC、Timer1扫描显示,虽然暂时缓解冲突,但Ai8051U仅有两组定时器资源,一旦后续需要精准时序、串口波特率生成,定时器资源会直接耗尽,属于治标不治本的低效方案。通过本集课程我才明白,嵌入式小型单片机开发通用最优方案是单定时器统一时基+软件多计数器分时调度,仅占用一组定时器硬件资源,依靠软件变量划分不同周期任务,在不增加硬件开销的前提下实现多任务并行,也是适配我当前数码管+PCF8591综合项目的最优架构。

二、定时器分时调度核心原理与底层逻辑

本集的核心知识点是搭建统一时基调度框架,所有任务的计时基准全部来源于同一个定时器中断,依靠多个全局计数变量区分不同执行周期,核心逻辑分为三层,层层递进,理解后便能自主移植到任意51单片机项目。

第一层:搭建基础统一时基。沿用第七集定时器中断配置思路,设置固定短周期中断作为整个程序的计时基准,课程示例选用10ms定时中断,也是我项目中使用的标准时基。定时器每10ms触发一次中断,中断函数内部不执行复杂外设操作,仅对全局计时变量统一自加,完成计时累加后立刻退出中断,严格遵循“中断函数短小精悍”的硬性规范,不会产生中断丢失、时基偏移等问题。选择短周期时基的核心优势在于适配不同快慢任务:快速任务(DAC波形刷新)需要微秒、十毫秒级周期,慢速任务(数码管切换、状态指示灯翻转)可以设置百毫秒、秒级周期,统一10ms最小时基可以整除各类任务周期,计时逻辑简单无误差。

第二层:多组软件计数器划分任务周期。定义多个unsigned char或unsigned int全局计时变量,分别对应不同外设任务。以我的项目为例,定义三组计数器:key_cnt用于按键扫描,dac_cnt用于DAC波形刷新,seg_cnt用于数码管刷新。每次10ms定时器中断触发,三个计数器同步加一;再设置各自溢出阈值:key_cnt达到1即10ms执行一次按键扫描,保证按键响应灵敏;dac_cnt达到1即10ms刷新一次DAC输出数值,保障波形平滑稳定;seg_cnt达到50即500ms切换一次数码管显示内容。当任意计数器数值达到设定阈值时,将对应标志位置1,同时清零计数器,完成一次计时循环。

第三层:主循环查询标志位执行对应任务。所有实际外设操作全部放在主循环中完成,中断仅负责计时与置位标志,不执行任何复杂代码。主循环持续轮询各个任务标志位,若标志位为1,则执行对应功能函数,执行完毕后手动清零标志位。这种分层设计彻底分离计时逻辑与业务逻辑:定时器硬件负责精准计时,主循环空闲时处理外设,二者互不抢占资源,从根源解决串行执行带来的卡顿、波形失真问题。

同时课程重点区分了分时调度与多中断的优劣:多定时器中断会占用硬件资源,不同中断之间存在优先级冲突,高频中断容易打乱低频任务时序;而单时基分时调度仅占用一组定时器,时序统一可控,代码复用性强,代码体量更小,存储空间占用更低,非常适合Ai8051U这类资源有限的8位单片机。

三、实操调试过程、优化对比与踩坑故障复盘

课程配套实操实验为:基于10ms定时器时基,实现三大任务分时运行——10ms扫描一次独立按键、10ms刷新DAC输出、500ms切换数码管显示数字,全程无软件延时,所有外设同步稳定工作。我结合自身波形发生器项目完成代码改写,过程中遇到三处典型实操问题,逐一排查优化,积累了分时调度框架专属调试经验。

(一)完整标准编程流程

1. 复用第七集定时器初始化代码,配置Timer0为16位模式,定时10ms产生统一时基,开启总中断EA、定时器中断ET0、定时器运行开关TR0;
2. 定义全局无符号计数变量key_cnt、dac_cnt、seg_cnt,以及对应任务执行标志bit key_flag、dac_flag、seg_flag;
3. 编写定时器中断服务函数:仅完成三个计数器自加,分别判断是否达到溢出阈值,达标则置位对应标志、清零计数器,无其他复杂运算;
4. 主循环内轮询三个标志位,标志置1则执行按键扫描、DAC数值刷新、数码管显示函数,执行完成后清除标志位;
5. 删除程序内所有for、while软件延时,全部依靠定时器时基控制任务执行周期。

(二)实操三大故障与解决思路

故障一:任务执行节奏混乱,数码管频繁闪烁、波形时快时慢。排查后发现,我在中断函数内部直接调用数码管扫描、DAC刷新函数,违背“中断只做标记,业务逻辑放主循环”的核心规则。中断执行耗时过长,下一次定时中断到来时上一次中断还未结束,出现中断堆叠丢失,时基持续偏移。修正方案:中断内部仅做计数与标志位赋值,所有外设操作全部移至主循环,修改后任务周期完全稳定,波形无失真。

故障二:部分任务重复执行,按键一次触发多次调节。原因是主循环执行外设函数耗时较长,标志位置1后未及时清零,单次主循环循环多次读取到高电平标志,重复运行任务。解决办法:每完成一项任务功能,立刻手动清零对应标志位,避免重复触发;同时精简任务函数内部代码,减少单次执行耗时。

故障三:增加任务数量后整体时序偏移,新增指示灯翻转任务后,DAC波形出现轻微抖动。课程讲解核心规则:单次中断内的运算代码必须极简,全局计数器不宜过多,若任务数量较多,要合理划分周期,高频实时任务(DAC波形刷新)设置短周期,低频显示类任务设置长周期,减少CPU处理压力;同时区分任务优先级,波形输出属于实时性高的核心任务,在主循环中优先查询dac_flag标志,保证波形刷新优先执行,数码管、指示灯等非实时任务后置查询,避免核心任务被延后。按照优先级调整代码查询顺序后,波形抖动问题彻底消失。

(三)优化前后效果直观对比

改写代码前,串行执行模式下,数码管刷新时DAC波形卡顿,波形边缘存在明显锯齿,按键调节频率反应滞后;改用本集分时调度框架后,10ms固定周期刷新DAC数值,正弦波输出平滑规整,周期精准可控,数码管稳定显示电压数值,按键按下瞬间即可响应调节,三者同步运行互不干扰,硬件运行状态得到质的提升。

四、本集内容与综合项目的深度结合价值

我当前的实训项目为四位数码管+PCF8591 DAC波形发生器,硬件资源有限,单片机IO口同时分配给数码管段选、位选与I2C通信引脚,资源十分紧张,第八集的分时调度框架是保障项目稳定运行的核心支撑,解决了此前所有硬件协同难题。

从波形输出层面来看,正弦波的平滑度完全依赖固定间隔刷新DAC数值,软件延时、串行执行都会造成刷新间隔紊乱,波形变形。依靠统一10ms定时器时基,dac_cnt计数器固定周期触发DAC刷新,每一次电压输出间隔完全一致,波形周期稳定,还能通过修改计数器溢出阈值自由调整波形频率,调节逻辑简单直观。

从数码管显示层面分析,第九集即将学习动态扫描数码管,动态扫描需要快速循环点亮每一位,若直接放在主循环持续执行,会长期占用CPU资源,打断DAC刷新时序。借助分时调度,seg_cnt每500ms才触发一次数码管刷新函数,其余时间主循环优先处理DAC与按键,既保证数码管人眼视觉暂留、无明显闪烁,又不会干扰波形输出核心任务。

从按键交互层面,key_cnt10ms扫描一次按键,搭配软件延时消抖,既能快速识别按键操作,又不会占用过多CPU资源,实现波形频率实时可调,完善项目人机交互功能。整套调度框架仅使用一组定时器,预留Timer1硬件资源,后续可拓展串口通信、外部脉冲计数等额外功能,项目拓展空间充足。

五、章节衔接、学习总结与后续学习规划

(一)课程前后知识点衔接感悟

第八集是第七集单一定时器中断的延伸升级,二者形成完整递进关系:第七集教会我们利用定时器实现单一定时任务,打破软件延时阻塞;第八集在此基础上引入软件计数器与时基标志位,实现多任务分时并行,将单一功能拓展为多外设协同运行。同时本集为第九集数码管动态扫描提供底层运行框架,第九集数码管频繁刷新若直接占用主循环,必然干扰DAC波形,必须依靠本集的分时调度机制定时调用扫描函数,才能实现波形与显示同步稳定工作,整套课程知识点环环相扣,缺一不可。

(二)本集核心学习收获总结

第一,思维再次升级,跳出“一个定时器对应一个任务”的固化思维,掌握单时基多任务分时调度的嵌入式标准框架,理解硬件计时、软件标记、主循环执行的分层开发思想,学会平衡多外设CPU资源分配;
第二,掌握调度框架通用编写模板,可直接移植到流水灯、按键、数码管、DAC、I2C等任意外设实验,代码复用性极强;
第三,明确实时任务优先级设计思路,区分核心实时任务与普通显示任务,保障波形输出、时序通信等高精度功能优先执行;
第四,积累分时调度专属故障排查方法,能够快速解决时序偏移、任务重复触发、波形卡顿、中断丢失等实操问题。

(三)后续学习优化计划

1. 熟练独立编写10ms、20ms、50ms多种时基的调度框架代码,自主划分不同周期任务,熟练运用全局计数变量与任务标志位;
2. 对现有波形发生器代码全面重构,彻底删除所有软件延时,全部依靠定时器分时调度驱动按键、DAC、数码管三大外设;
3. 预习第九集数码管动态扫描内容,提前规划数码管专属计时计数器,设计低优先级显示任务,确保数码管刷新不影响正弦波输出;
4. 拓展学习中断优先级相关知识,后续若添加多组定时器、外部中断,合理分配优先级,进一步提升程序运行稳定性。

总而言之,第八集定时器周期性调度任务是从单一外设实验走向综合项目开发的关键转折点。如果说第七集定时器中断是解决“延时阻塞”的基础工具,那么第八集分时调度框架就是统筹管理多个外设的核心架构。通过本集学习,我不再局限于单次控制LED、单次扫描按键的简单程序编写,真正具备了小型综合硬件项目的程序设计能力,深刻体会到嵌入式开发“硬件定时、软件分治”的设计思想,为后续数码管、I2C通信、波形发生器完整项目调试打下了不可替代的底层基础。
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2026-06-19 16:39:00
已绑定手机

0

主题

1

回帖

4

积分

新手上路

积分
4
发表于 2026-6-19 16:39:00 | 显示全部楼层
Ai8051U教学视频第八集 定时器周期性调度任务 学习心得

在前一集系统学习定时器中断基础用法后,第八集作为定时器内容的进阶拓展,核心讲解基于单一定时器时基实现多任务分时调度,搭建简易嵌入式实时任务框架。第六集我掌握了IO输入输出、按键与LED基础操作,第七集学会依靠定时器中断摆脱软件延时阻塞,实现单一定时任务后台运行,但在实际调试PCF8591 DAC波形发生器与数码管联动程序时,依旧暴露出明显缺陷:所有功能串行执行,刷新DAC波形时数码管停滞,扫描按键时波形卡顿失真,多外设无法同步稳定工作。本集课程完美解决多任务资源抢占冲突问题,依托统一定时器产生固定时基,通过多组计时计数器划分不同执行周期,让按键检测、波形刷新、数码管显示等任务并行运行、互不干扰。整套理论逻辑清晰,实操优化对比直观,结合自身硬件项目调试踩坑经历,我对单片机分时调度、实时任务优先级、中断执行规范有了完整且深刻的理解,现将完整学习心得整理如下。

一、学习前存在的程序痛点:串行执行带来的外设冲突

在学习第八集之前,我编写程序的逻辑始终停留在传统串行循环模式,哪怕引入第七集的定时器中断,也仅能完成单一周期任务,多外设同时运行的缺陷十分突出。此前调试波形发生器程序时,代码执行顺序为:主循环先读取按键调节频率,再刷新DAC正弦波数值,最后调用数码管动态扫描函数,整套流程依次执行,属于典型串行执行。

这种写法存在三大无法规避的硬伤。第一,任务执行时长相互叠加,周期完全不固定。数码管动态扫描需要循环点亮四位数码管,消耗一定CPU运行时间,这段时间内DAC波形刷新会被延后,波形刷新间隔忽长忽短,输出正弦波出现明显阶梯形变,波形平滑度大幅下降;第二,按键响应延迟,数码管刷新占用CPU时,按键电平读取被搁置,快速按下按键无法及时识别,调节波形频率存在滞后;第三,新增外设功能会持续放大卡顿问题,如果后续增加蜂鸣器、串口打印等功能,主循环执行链路更长,所有外设都会出现运行不稳定的情况。

最开始我尝试新增第二个定时器单独驱动数码管,用Timer0刷新DAC、Timer1扫描显示,虽然暂时缓解冲突,但Ai8051U仅有两组定时器资源,一旦后续需要精准时序、串口波特率生成,定时器资源会直接耗尽,属于治标不治本的低效方案。通过本集课程我才明白,嵌入式小型单片机开发通用最优方案是单定时器统一时基+软件多计数器分时调度,仅占用一组定时器硬件资源,依靠软件变量划分不同周期任务,在不增加硬件开销的前提下实现多任务并行,也是适配我当前数码管+PCF8591综合项目的最优架构。

二、定时器分时调度核心原理与底层逻辑

本集的核心知识点是搭建统一时基调度框架,所有任务的计时基准全部来源于同一个定时器中断,依靠多个全局计数变量区分不同执行周期,核心逻辑分为三层,层层递进,理解后便能自主移植到任意51单片机项目。

第一层:搭建基础统一时基。沿用第七集定时器中断配置思路,设置固定短周期中断作为整个程序的计时基准,课程示例选用10ms定时中断,也是我项目中使用的标准时基。定时器每10ms触发一次中断,中断函数内部不执行复杂外设操作,仅对全局计时变量统一自加,完成计时累加后立刻退出中断,严格遵循“中断函数短小精悍”的硬性规范,不会产生中断丢失、时基偏移等问题。选择短周期时基的核心优势在于适配不同快慢任务:快速任务(DAC波形刷新)需要微秒、十毫秒级周期,慢速任务(数码管切换、状态指示灯翻转)可以设置百毫秒、秒级周期,统一10ms最小时基可以整除各类任务周期,计时逻辑简单无误差。

第二层:多组软件计数器划分任务周期。定义多个unsigned char或unsigned int全局计时变量,分别对应不同外设任务。以我的项目为例,定义三组计数器:key_cnt用于按键扫描,dac_cnt用于DAC波形刷新,seg_cnt用于数码管刷新。每次10ms定时器中断触发,三个计数器同步加一;再设置各自溢出阈值:key_cnt达到1即10ms执行一次按键扫描,保证按键响应灵敏;dac_cnt达到1即10ms刷新一次DAC输出数值,保障波形平滑稳定;seg_cnt达到50即500ms切换一次数码管显示内容。当任意计数器数值达到设定阈值时,将对应标志位置1,同时清零计数器,完成一次计时循环。

第三层:主循环查询标志位执行对应任务。所有实际外设操作全部放在主循环中完成,中断仅负责计时与置位标志,不执行任何复杂代码。主循环持续轮询各个任务标志位,若标志位为1,则执行对应功能函数,执行完毕后手动清零标志位。这种分层设计彻底分离计时逻辑与业务逻辑:定时器硬件负责精准计时,主循环空闲时处理外设,二者互不抢占资源,从根源解决串行执行带来的卡顿、波形失真问题。

同时课程重点区分了分时调度与多中断的优劣:多定时器中断会占用硬件资源,不同中断之间存在优先级冲突,高频中断容易打乱低频任务时序;而单时基分时调度仅占用一组定时器,时序统一可控,代码复用性强,代码体量更小,存储空间占用更低,非常适合Ai8051U这类资源有限的8位单片机。

三、实操调试过程、优化对比与踩坑故障复盘

课程配套实操实验为:基于10ms定时器时基,实现三大任务分时运行——10ms扫描一次独立按键、10ms刷新DAC输出、500ms切换数码管显示数字,全程无软件延时,所有外设同步稳定工作。我结合自身波形发生器项目完成代码改写,过程中遇到三处典型实操问题,逐一排查优化,积累了分时调度框架专属调试经验。

(一)完整标准编程流程

1. 复用第七集定时器初始化代码,配置Timer0为16位模式,定时10ms产生统一时基,开启总中断EA、定时器中断ET0、定时器运行开关TR0;
2. 定义全局无符号计数变量key_cnt、dac_cnt、seg_cnt,以及对应任务执行标志bit key_flag、dac_flag、seg_flag;
3. 编写定时器中断服务函数:仅完成三个计数器自加,分别判断是否达到溢出阈值,达标则置位对应标志、清零计数器,无其他复杂运算;
4. 主循环内轮询三个标志位,标志置1则执行按键扫描、DAC数值刷新、数码管显示函数,执行完成后清除标志位;
5. 删除程序内所有for、while软件延时,全部依靠定时器时基控制任务执行周期。

(二)实操三大故障与解决思路

故障一:任务执行节奏混乱,数码管频繁闪烁、波形时快时慢。排查后发现,我在中断函数内部直接调用数码管扫描、DAC刷新函数,违背“中断只做标记,业务逻辑放主循环”的核心规则。中断执行耗时过长,下一次定时中断到来时上一次中断还未结束,出现中断堆叠丢失,时基持续偏移。修正方案:中断内部仅做计数与标志位赋值,所有外设操作全部移至主循环,修改后任务周期完全稳定,波形无失真。

故障二:部分任务重复执行,按键一次触发多次调节。原因是主循环执行外设函数耗时较长,标志位置1后未及时清零,单次主循环循环多次读取到高电平标志,重复运行任务。解决办法:每完成一项任务功能,立刻手动清零对应标志位,避免重复触发;同时精简任务函数内部代码,减少单次执行耗时。

故障三:增加任务数量后整体时序偏移,新增指示灯翻转任务后,DAC波形出现轻微抖动。课程讲解核心规则:单次中断内的运算代码必须极简,全局计数器不宜过多,若任务数量较多,要合理划分周期,高频实时任务(DAC波形刷新)设置短周期,低频显示类任务设置长周期,减少CPU处理压力;同时区分任务优先级,波形输出属于实时性高的核心任务,在主循环中优先查询dac_flag标志,保证波形刷新优先执行,数码管、指示灯等非实时任务后置查询,避免核心任务被延后。按照优先级调整代码查询顺序后,波形抖动问题彻底消失。

(三)优化前后效果直观对比

改写代码前,串行执行模式下,数码管刷新时DAC波形卡顿,波形边缘存在明显锯齿,按键调节频率反应滞后;改用本集分时调度框架后,10ms固定周期刷新DAC数值,正弦波输出平滑规整,周期精准可控,数码管稳定显示电压数值,按键按下瞬间即可响应调节,三者同步运行互不干扰,硬件运行状态得到质的提升。

四、本集内容与综合项目的深度结合价值

我当前的实训项目为四位数码管+PCF8591 DAC波形发生器,硬件资源有限,单片机IO口同时分配给数码管段选、位选与I2C通信引脚,资源十分紧张,第八集的分时调度框架是保障项目稳定运行的核心支撑,解决了此前所有硬件协同难题。

从波形输出层面来看,正弦波的平滑度完全依赖固定间隔刷新DAC数值,软件延时、串行执行都会造成刷新间隔紊乱,波形变形。依靠统一10ms定时器时基,dac_cnt计数器固定周期触发DAC刷新,每一次电压输出间隔完全一致,波形周期稳定,还能通过修改计数器溢出阈值自由调整波形频率,调节逻辑简单直观。

从数码管显示层面分析,第九集即将学习动态扫描数码管,动态扫描需要快速循环点亮每一位,若直接放在主循环持续执行,会长期占用CPU资源,打断DAC刷新时序。借助分时调度,seg_cnt每500ms才触发一次数码管刷新函数,其余时间主循环优先处理DAC与按键,既保证数码管人眼视觉暂留、无明显闪烁,又不会干扰波形输出核心任务。

从按键交互层面,key_cnt10ms扫描一次按键,搭配软件延时消抖,既能快速识别按键操作,又不会占用过多CPU资源,实现波形频率实时可调,完善项目人机交互功能。整套调度框架仅使用一组定时器,预留Timer1硬件资源,后续可拓展串口通信、外部脉冲计数等额外功能,项目拓展空间充足。

五、章节衔接、学习总结与后续学习规划

(一)课程前后知识点衔接感悟

第八集是第七集单一定时器中断的延伸升级,二者形成完整递进关系:第七集教会我们利用定时器实现单一定时任务,打破软件延时阻塞;第八集在此基础上引入软件计数器与时基标志位,实现多任务分时并行,将单一功能拓展为多外设协同运行。同时本集为第九集数码管动态扫描提供底层运行框架,第九集数码管频繁刷新若直接占用主循环,必然干扰DAC波形,必须依靠本集的分时调度机制定时调用扫描函数,才能实现波形与显示同步稳定工作,整套课程知识点环环相扣,缺一不可。

(二)本集核心学习收获总结

第一,思维再次升级,跳出“一个定时器对应一个任务”的固化思维,掌握单时基多任务分时调度的嵌入式标准框架,理解硬件计时、软件标记、主循环执行的分层开发思想,学会平衡多外设CPU资源分配;
第二,掌握调度框架通用编写模板,可直接移植到流水灯、按键、数码管、DAC、I2C等任意外设实验,代码复用性极强;
第三,明确实时任务优先级设计思路,区分核心实时任务与普通显示任务,保障波形输出、时序通信等高精度功能优先执行;
第四,积累分时调度专属故障排查方法,能够快速解决时序偏移、任务重复触发、波形卡顿、中断丢失等实操问题。

(三)后续学习优化计划

1. 熟练独立编写10ms、20ms、50ms多种时基的调度框架代码,自主划分不同周期任务,熟练运用全局计数变量与任务标志位;
2. 对现有波形发生器代码全面重构,彻底删除所有软件延时,全部依靠定时器分时调度驱动按键、DAC、数码管三大外设;
3. 预习第九集数码管动态扫描内容,提前规划数码管专属计时计数器,设计低优先级显示任务,确保数码管刷新不影响正弦波输出;
4. 拓展学习中断优先级相关知识,后续若添加多组定时器、外部中断,合理分配优先级,进一步提升程序运行稳定性。

总而言之,第八集定时器周期性调度任务是从单一外设实验走向综合项目开发的关键转折点。如果说第七集定时器中断是解决“延时阻塞”的基础工具,那么第八集分时调度框架就是统筹管理多个外设的核心架构。通过本集学习,我不再局限于单次控制LED、单次扫描按键的简单程序编写,真正具备了小型综合硬件项目的程序设计能力,深刻体会到嵌入式开发“硬件定时、软件分治”的设计思想,为后续数码管、I2C通信、波形发生器完整项目调试打下了不可替代的底层基础。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:30
  • 最近打卡:2026-07-21 00:28:53
已绑定手机

2

主题

18

回帖

122

积分

注册会员

积分
122
发表于 2026-6-19 21:57:39 | 显示全部楼层
看来要从这里开始学习了。
今天是2026年端午节。
祝大家端午节快乐!
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:316
  • 最近打卡:2026-07-22 06:56:11
已绑定手机

70

主题

874

回帖

3225

积分

论坛元老

DIY玩家

积分
3225
发表于 2026-6-19 22:47:30 | 显示全部楼层
可以*** 发表于 2026-6-19 21:57
看来要从这里开始学习了。
今天是2026年端午节。
祝大家端午节快乐!

视频教学由浅入深
学习MCU开发
再亲自实践
永怀这学徒心
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:30
  • 最近打卡:2026-07-21 00:28:53
已绑定手机

2

主题

18

回帖

122

积分

注册会员

积分
122
发表于 2026-6-19 22:50:14 来自手机 | 显示全部楼层
狂热主宰 发表于 2026-6-19 22:47
视频教学由浅入深
学习MCU开发
再亲自实践

谢谢你的指点。
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-7-22 09:23 , Processed in 0.082753 second(s), 90 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表