找回密码
 立即注册
查看: 57|回复: 8

《Ai8051U 入门学习心得》打卡记录

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2026-05-27 13:23:11
已绑定手机

1

主题

7

回帖

33

积分

新手上路

积分
33
发表于 2026-5-14 15:40:02 | 显示全部楼层 |阅读模式
# 第1集学习打卡:Ai8051U入门视频心得
看完入门介绍视频后,我彻底被这款芯片的实力震撼到了 —— 原来传统 51 单片机,也能做出这么多超出想象的功能!

视频里提到的 6 个核心亮点,每一个都刷新了我对 “51 单片机只能做简单流水灯” 的认知:

  • 屏幕显示与视频播放
    没想到 Ai8051U 居然能直接驱动屏幕,甚至实现视频播放!以前我一直以为这种多媒体功能只能靠 STM32 等高级单片机实现,现在才知道,这款芯片内置的 flash 编程器就能轻松完成,以后做带显示的项目,再也不用额外找驱动芯片了。


  • IIS 录放音功能
    音频采集和播放也是我之前不敢想的功能,而 Ai8051U 直接集成了 IIS 接口,能直接连接音频模块实现录音、播放,以后做语音播报、简易播放器这类项目,基础硬件支持就已经有了。


  • PWM_DMA
    带 DMA 的 PWM 是我最感兴趣的功能之一!以前做电机控制时,传统 51 的 PWM 需要 CPU 频繁中断处理,占用大量资源,而 Ai8051U 的 PWM_DMA 可以让硬件自动生成波形,CPU 完全不用干预,既能实现高精度的 PWM 控制,又能同时处理其他任务,效率直接翻倍。


  • 上位机频谱分析仪
    频谱分析这种信号处理功能,以前我以为需要搭配电脑上位机才能实现,没想到用 Ai8051U 也能做出来。这让我对单片机的信号处理能力有了全新的认识,也让我对以后做音频信号分析、简单示波器这类项目充满了期待。


  • 手写计算器
    视频里提到的手写计算器项目,让我第一次感受到了单片机和触控交互结合的魅力。原来 51 单片机也能做带触控输入的交互设备,而不只是简单的按键控制,这也让我对后续的触控项目有了更多想法。


  • 硬件外设的全面升级
    QSPI 高速接口、PWM 移相、硬件乘除、单精度浮点运算,这些都是传统 51 单片机想都不敢想的配置。硬件乘除和浮点运算能大幅提升数值计算的效率,做算法类项目再也不用靠软件模拟;QSPI 接口则能外接高速存储设备,扩展更多应用场景。




以前总觉得 51 单片机已经过时了,只能用来入门学习,但看完视频才明白,Ai8051U 作为新一代增强型 51 单片机,不仅保留了传统 51 的易用性,更补上了性能和外设的短板,完全能支撑从入门学习到竞赛项目的全流程开发。接下来我会跟着教程一步步实践,争取早日把这些功能都用在自己的项目里!

回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:87
  • 最近打卡:2026-05-23 08:34:25
已绑定手机

14

主题

158

回帖

1042

积分

版主

积分
1042
发表于 2026-5-15 08:47:04 | 显示全部楼层
要 做到 USB不停电下载
要 尝试 AiCube 图形化自动配置生成程序工具
推荐优先看的:  
printf_usb("Hello World !\r\n")
USB不停电下载, 演示视频链接:
https://www.stcaimcu.com/thread-19077-1-1.html

下载 最新的 AiCube-ISP-V6.96V-plus 或以上版本软件 !

深圳国芯人工智能有限公司-工具软件

下载 最新的 USB库函数,永远用最新的 USB库函数 !
深圳国芯人工智能有限公司-库函数
下载 最新的 用户手册 !
下载 最新的 上机实践指导书 !

下载 最新的 Ai8051U 用户手册
https://www.stcaimcu.com/data/download/Datasheet/AI8051U.pdf

下载 最新的 Ai8051U 实验指导书,
AiCube 图形化自动配置生成程序工具使用说明
https://www.stcaimcu.com/data/do ... %AF%BC%E4%B9%A6.pdf


推荐优先看的 printf_usb("Hello World !\r\n")及usb不停电下载, 演示视频链接



回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2026-05-27 13:23:11
已绑定手机

1

主题

7

回帖

33

积分

新手上路

积分
33
发表于 2026-5-16 15:40:01 | 显示全部楼层
【第 2 集打卡】学习心得:硬件与开发工具入门
看完了《Ai8051U 教学视频》第 2 集,对实验箱硬件和开发工具有了完整的认识,也理清了后续学习的基础准备流程,收获非常大。
一、实验箱硬件模块详解
通过视频的拆解介绍,我第一次完整了解了 Ai8051U 实验箱的全部外设资源,每一个模块都对应着后续可以学习的项目:
基础交互模块
8 位数码管、8 路流水灯、矩阵键盘、ADC 键盘、红外收发模块、T0/T1/INT0/INT1 按键,这些都是最经典的 51 单片机入门外设。视频里提到,数码管和流水灯可以用来练手基础的 IO 控制,矩阵键盘则能练习按键消抖和扫描逻辑,正好和我之前做的按键控制项目对应上了。
显示与音频模块
实验箱搭载了 OLED 显示屏(支持 SPI/I2C 接口)、TFT 彩屏,还有 IIS 音频相关的立体声输入输出、话筒录音模块。特别是 IIS 音频部分,搭配 TLV320AIC23B 芯片,不仅能实现录音和播放,后续还能做音频频谱分析这类进阶项目,和第一集提到的功能完美对应。
存储与扩展接口
实验箱自带 TF 卡插座、USB 转双串口接口、USB-TypeC/TypeA 接口,还有 24C02 EEPROM 存储芯片和 DS18B20 温度传感器。这些模块可以用来学习数据存储、串口通信和传感器数据采集,是做项目的重要扩展。
调试与工具接口
示波器 BNC 输入、掉电检测电压调节、复位按键和强制下载模式接口,这些接口可以帮我后续调试硬件问题,也能强制进入下载模式,解决单片机变砖的问题,对新手非常友好。
二、开发工具准备流程
视频里完整介绍了从环境搭建到代码下载的全流程,让我对开发环境的配置有了清晰的步骤:
Keil uVision5 安装与配置
首先要安装 Keil 软件,然后添加 Ai8051U 的头文件和芯片型号,安装仿真器驱动,才能正常编译和调试代码。
ISP 下载工具
视频里推荐了 Alapp-ISP 软件,用来给单片机在线升级和下载程序,后续写完的代码都需要通过这个工具烧录到芯片里。
插件与资料下载
还要安装 Keil 中断拓展插件,解决默认编译器只能支持 31 个中断的限制,同时下载实验箱的代码包和手册,方便后续跟着教程做实验。
三、学习感悟与后续计划
以前我学 51 单片机,都是对着零散的资料学单个外设,从来没有见过一个把所有功能都整合到一起的实验箱。看完这一集才明白,这个实验箱把从入门到进阶的所有外设都配齐了,从基础的流水灯、数码管,到音频、显示、传感器都能练手,完全不用自己再额外搭电路。
接下来我会按照视频里的步骤,先把 Keil 开发环境配置好,下载好所有需要的工具和资料,为后续的代码学习做好准备。等环境搭好,就可以跟着教程开始做第一个实验了!
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2026-05-27 13:23:11
已绑定手机

1

主题

7

回帖

33

积分

新手上路

积分
33
发表于 2026-5-16 18:06:53 | 显示全部楼层
【第 3 集打卡】学习心得:点亮第一颗 LED
跟着教程看完了 Ai8051U 的第一个实验 —— 点亮 LED,终于从理论走到了实践,对单片机 IO 口的工作模式和硬件电路有了非常直观的理解。
一、实验核心原理:为什么 LED 能被点亮?
视频里把 LED 点亮的底层逻辑讲得特别清楚,我也终于搞懂了单片机控制外设的本质:
硬件电路分析
实验箱上的 LED 是共阳极接法,一端接 3.3V 电源,另一端通过限流电阻接到单片机的 IO 口上。当 IO 口输出低电平时,电流就会从电源经过 LED、电阻流向 IO 口,形成回路,LED 就会点亮;输出高电平时,两端电压差为 0,LED 熄灭。
IO 口模式配置的关键
视频里重点讲了 Ai8051U 的 IO 口工作模式,我才明白为什么代码里要写P0M0=0x00; P0M1=0x00;:
P0M0和P0M1两个寄存器共同控制 IO 口的模式,00组合就是准双向口模式,和传统 51 的弱上拉模式一样,既能输出高低电平,也能灌电流点亮 LED。
这个模式下,IO 口的灌电流最大能到 20mA,正好满足 LED 的工作电流要求,所以不用额外的驱动电路就能直接点亮 LED。
二、完整开发流程实践
从新建工程到代码烧录,我跟着教程走完了一遍完整的流程,也踩了几个新手容易犯的坑:
新建工程的正确步骤
首先要在 Keil 里创建空工程,然后添加 Ai8051U 的头文件,再创建main.c文件。之前我一直不知道怎么添加头文件,视频里教的用 ISP 软件获取头文件的方法特别实用,解决了我一直以来的困惑。
代码编写与编译
教程里给的点亮 LED 的代码非常简洁,核心就是三步:配置 IO 口为双向模式、设置对应引脚为低电平、循环保持电平。编译的时候我特意注意了 Build Output 窗口,看到 0 个错误 0 个警告的时候,才真正体会到 “一次成功” 的成就感。
烧录与验证
代码编译生成 HEX 文件后,通过 ISP 软件下载到单片机里,实验箱上的 LED 果然亮了起来。看着自己写的代码控制硬件工作,那种成就感比看教程里的演示强多了。
三、学习感悟与后续计划
以前学 51 单片机,总是对着 “点亮 LED” 的代码照抄,从来没有真正理解过为什么要配置寄存器、为什么这样写就能点亮灯。这次跟着教程,从硬件电路到寄存器配置,再到代码烧录,每一步都讲得明明白白,让我第一次真正理解了单片机控制外设的底层逻辑。
原来单片机的世界,就是通过寄存器配置硬件模式,再通过引脚输出电平控制外设的过程,根本没有想象中那么神秘。接下来我会继续跟着教程,给 LED 加上延时,做一个流水灯实验,进一步熟悉 IO 口的控制和延时函数的使用。
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2026-05-27 13:23:11
已绑定手机

1

主题

7

回帖

33

积分

新手上路

积分
33
发表于 2026-5-17 14:17:02 | 显示全部楼层
【第 4 集打卡】学习心得:USB 不停电下载
跟着教程学习了 Ai8051U 的 USB 不停电下载功能,终于解决了每次下载代码都要断电重启的麻烦,也对单片机的 USB 库移植和寄存器配置有了新的认识。
一、什么是 USB 不停电下载?
以前学传统 51 单片机,每次烧录程序都要给开发板断电,然后按住下载键再上电,操作起来非常麻烦。而 Ai8051U 自带的 USB 不停电下载功能,通过 USB CDC 接口就能直接给单片机下载代码,不用再反复断电重启,开发效率直接翻倍。
视频里的对比演示也让我直观感受到了这个功能的强大:普通单片机下载一次代码要 3-5 秒,还容易因为操作不规范失败;而 Ai8051U 通过 USB 下载,全程不用断电,一键就能完成,特别适合频繁调试代码的场景。
二、USB 库移植与工程配置步骤
教程里详细讲解了从下载库文件到移植代码的完整流程,每一步都讲得非常清楚:
下载 USB 库文件
首先要从 STC 官网下载 Ai8051U 的 USB 库文件,里面包含了 USB 初始化和通信的相关头文件和库文件,这是实现 USB 下载的基础。
添加头文件与配置初始化
把 USB 库文件添加到 Keil 工程中,在代码里调用usb_init()函数完成 USB CDC 接口的配置,同时开启 USB 中断,让单片机可以和电脑进行通信。
关键寄存器配置
视频里重点强调了两个寄存器的配置:
P_SW2寄存器:需要将最高位EAXFR置 1,这样才能访问扩展的特殊功能寄存器,保证 USB 相关的寄存器可以正常读写。
IE2寄存器:需要开启对应的 USB 中断位,同时开启总中断EA,让单片机可以响应 USB 通信的中断请求。
命令参数配置
代码里需要定义USER_STCISPCMD = "@STCISP#"这个命令参数,这样 STC 的 ISP 下载软件才能识别到单片机,实现不停电下载。
三、学习感悟与后续计划
以前我一直以为,不停电下载是高级单片机才有的功能,没想到 Ai8051U 也能实现,而且配置起来并不复杂。通过这一集的学习,我不仅学会了 USB 下载的配置方法,还第一次接触了单片机的中断和扩展寄存器的使用,对单片机的底层配置有了更深入的理解。
有了不停电下载功能,后续调试项目就方便多了,再也不用每次都手动给开发板断电了。接下来我会继续跟着教程,把 USB 通信的收发功能也实现出来,尝试用 USB 口给电脑发送数据,做一个简单的串口助手实验。
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2026-05-27 13:23:11
已绑定手机

1

主题

7

回帖

33

积分

新手上路

积分
33
发表于 2026-5-17 16:56:01 | 显示全部楼层
【第 5 集打卡】学习心得:C 语言基础与 USB 串口 printf 实现
课程是 C 语言基础的系统梳理,不仅把进制、数据类型、运算符这些核心概念讲透了,还教了怎么在 Ai8051U 上实现 USB-CDC 串口的printf函数,为后续的调试打下了坚实基础。
一、核心收获:让调试更方便的 USB printf 实现
以前学单片机时,调试程序只能靠 LED 闪烁或者串口发数据,很不方便。今天终于学会了在 Ai8051U 上实现 USB 串口的printf输出,以后调试就能直接在电脑串口助手上看变量值和程序运行状态了:
实现步骤
首先要在 USB 库中开启PRINTF_HID宏定义,然后通过#define printf printf_hid把标准printf重定向到 USB CDC 接口上。这样我们就能像在电脑上写程序一样,直接用printf("调试信息\r\n");来输出内容,非常方便。
理解printf的工作原理
视频里详细讲解了printf的格式控制字符串,分为普通字符和转换说明两种类型。普通字符会原样输出,而%d、%c这类转换说明符则会控制参数的格式输出。配合 ASCII 码表的讲解,我终于明白为什么printf输出的数字在串口助手上是对应的字符,而不是原始的二进制数据了。
二、基础概念的系统梳理
数的进制转换
视频里把二进制、十进制、十六进制的转换讲得特别清楚,尤其是十六进制和二进制的对应关系,让我对寄存器配置里的0x00、0xFF这类数值有了更直观的理解。比如0xFF就是 8 个 1,对应二进制的11111111,配置寄存器时用十六进制比直接写二进制方便多了。
C 语言数据类型详解
课程里重点讲解了 Keil C251 编译器支持的数据类型,从bit、char到int、long、float,每个类型的位数、字节数和取值范围都列得明明白白。特别是提到了#pragma float64指令,只有加上这个声明,才能在程序里使用 64 位的double类型,这对后续做浮点数计算的项目很有帮助。
常用运算符总结
课程把算术运算符、关系运算符、逻辑运算符、赋值运算符都系统梳理了一遍,还结合单片机编程举了例子。比如++自增、--自减在循环控制里的用法,还有位运算符&、|、^在寄存器配置中的应用,这些都是写单片机程序时最常用的技巧。
三、学习感悟与后续计划
以前学 C 语言基础,总是对着零散的资料死记硬背,从来没有和单片机编程结合起来。今天的课程让我明白,C 语言的每个基础知识点,在单片机开发中都有实际的用途:进制转换是为了看懂寄存器配置,数据类型是为了合理分配单片机有限的内存,而printf的实现则是调试程序的必备工具。
有了printf输出,后续调试 LED、按键等实验就方便多了,不用再靠猜程序运行状态了。接下来我会继续跟着教程,把今天学到的知识点都用在实际项目里,写一个带串口调试的 LED 流水灯程序,把printf真正用起来。
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2026-05-27 13:23:11
已绑定手机

1

主题

7

回帖

33

积分

新手上路

积分
33
发表于 2026-5-20 15:38:49 | 显示全部楼层
【第 6 集打卡】学习心得:I/O 输入输出与按键检测
课程让我对单片机的 GPIO 有了从理论到实践的完整理解,从引脚模式配置到按键输入检测,每一步都讲得非常透彻,也让我终于搞懂了按键消抖的底层逻辑。
课程里重点讲解了独立按键的硬件接线原理,实验箱按键采用上拉输入方式,空闲状态为高电平,按下后变为低电平。实际使用中发现机械按键存在电平抖动,极易造成程序误触发、重复判定按键动作。通过学习软件消抖思路,利用短暂延时过滤抖动杂波,再二次确认按键电平状态,配合全局状态变量记录按键动作,不用频繁延时阻塞程序运行,既保留了按键灵敏性,又彻底解决抖动问题。
一、GPIO 的核心概念与工作模式
什么是 GPIO?
GPIO 就是通用输入输出端口,既可以输出高低电平控制 LED、继电器等外设,也可以读取外部按键、传感器的电平状态。课程里用电源正负极和高低电平的关系举例,让我一下子就明白了 “高电平是逻辑 1、低电平是逻辑 0” 的本质,也看懂了芯片手册里的输入高低电平参数表。
四种工作模式详解
课程里重点讲解了 Ai8051U 的四种 GPIO 工作模式,这是我之前学 51 时一直没搞懂的地方:
准双向口模式(00):和传统 51 单片机一样,带弱上拉,既能输出也能输入,是最常用的模式。
推挽输出模式(01):可以提供 20mA 的驱动电流,适合直接驱动 LED。
高阻输入模式(10):用于读取外部信号,防止电流流入损坏芯片。
开漏模式(11):需要外接上拉电阻,适合 I2C 等总线通信场景。
二、按键输入检测与消抖实现
按键电路原理
实验箱上的按键是一端接地,另一端接单片机引脚的电路,没按下时引脚是高电平,按下后被拉低为低电平。课程里的电路图和引脚电平变化讲解,让我清楚了按键检测的基本逻辑。
机械按键的抖动问题
课程里展示了按键按下和松开时的电平抖动波形,也讲了抖动会导致单片机误判多次按下的问题。解决方法也很简单:延时 20ms 消抖 + 再次确认电平状态,再加上等待按键松开的逻辑,就能实现稳定的按键检测。
三种按键控制任务
课程里的三个课后任务,让我从易到难掌握了按键控制的逻辑:
按下灯亮、松开灯灭:基础的电平检测
按下灯灭、松开灯亮:电平取反的应用
按一下灯亮、再按一下灯灭:按键翻转逻辑,需要用变量记录状态
三、学习感悟与后续计划
以前学按键控制,都是照着网上的消抖代码抄,从来没有真正理解过为什么要延时、为什么要再次确认。今天跟着教程,从 GPIO 模式配置到按键电路原理,再到消抖的底层逻辑,一步步走下来,终于把这个知识点吃透了。
接下来我会把课程里的三个课后任务都实现出来,写一个带消抖的按键控制流水灯程序,把今天学到的 GPIO 输入输出知识真正用起来。
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2026-05-27 13:23:11
已绑定手机

1

主题

7

回帖

33

积分

新手上路

积分
33
发表于 2026-5-22 14:53:02 | 显示全部楼层
【第 7 集打卡】学习心得:定时器中断与单片机 “多任务”
看了定时器中断这一核心知识点,解决了我之前一直困惑的 “延时阻塞主循环” 问题,也第一次体会到了单片机伪多任务的魅力,收获满满!
一、为什么要学定时器中断?
课程一开始就点破了我之前踩过的坑:用delay_ms()实现 LED 三秒闪烁时,这三秒内按下按键完全没有反应。原因很简单:单片机是单核的,delay_ms()会一直占用 CPU,主循环里的按键扫描代码根本得不到执行机会。而定时器中断的出现,完美解决了这个问题 —— 它可以在后台精准计时,计时结束后自动打断主程序,执行预设的中断服务函数,完全不影响主循环的正常运行。
二、定时器工作原理:从寄存器到公式
定时器的核心流程定时器本质上就是一个不断累加计数的计数器,从设定值开始计数,一直数到最大值(16 位定时器就是 65536)时,就会触发溢出中断,自动执行中断服务函数。而自动重载模式下,计数器溢出后会自动重新加载设定值,不用每次都手动赋值,特别适合周期性任务。
关键寄存器详解
TMOD寄存器:用来设置定时器的工作模式,比如 16 位自动重载模式、定时 / 计数模式。
AUXR寄存器:控制定时器的时钟分频,既可以选择传统的 12 分频模式,也可以选择不分频的 1T 模式,大幅提升定时精度。
TM0PS寄存器:8 位预分频寄存器,可以进一步降低定时器时钟频率,实现更长的定时时间。
TH0/TL0寄存器:定时器的计数初值,课程里给了详细的计算公式,只要代入系统时钟、定时时间和分频参数,就能算出需要设置的初值,再也不用对着寄存器瞎猜了。
中断的开启与关闭定时器中断不是默认开启的,需要配置ET0=1(开启定时器 0 中断)和EA=1(开启总中断),同时启动TR0=1,定时器才会开始计数并触发中断。
三、从理论到实践:LED 闪烁 + 按键计数
课程里的示例任务,让我真正感受到了定时器中断的强大:
主循环里只做按键扫描和计数,按下按键就用printf打印次数。
定时器中断里处理 LED 闪烁,每 3 秒自动翻转一次 LED 状态。
两个任务完全互不干扰,按键按下瞬间就能响应,LED 也能稳定闪烁,完美实现了 “同时” 处理多个任务的效果。
四、函数的定义、声明与调用规范
课程里顺带讲解了 C 语言函数的写法规范:先声明、再定义、最后调用,这样可以避免编译报错,也让代码结构更清晰。这对后续写模块化的代码非常有帮助,以后我也会养成这种规范的写法。
五、学习感悟与后续计划
以前学定时器,总是对着寄存器配置死记硬背,从来没有真正理解过它的工作原理。今天跟着教程,从定时器的本质到寄存器配置,再到公式计算和实际应用,一步步走下来,终于把这个知识点吃透了。
定时器中断是单片机开发的 “万能钥匙”,以后做 PWM 控制、串口通信、定时采集数据等项目,都离不开它。接下来我会把课程里的示例代码改一改,实现按键控制 LED 闪烁频率的功能,进一步熟悉定时器的使用,为后续的进阶项目打好基础。
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2026-05-27 13:23:11
已绑定手机

1

主题

7

回帖

33

积分

新手上路

积分
33
发表于 3 天前 | 显示全部楼层
【第 8 集打卡】学习心得:定时器周期性调度与模块化编程
课程让我从定时器的基础应用,进阶到了 “多任务调度” 和模块化编程,不仅学会了用一个定时器同时管理多个周期任务,还掌握了 C 语言模块化开发的规范,收获非常大。
一、用一个定时器实现多周期任务调度
课程最核心的内容,就是如何用一个定时器实现多个不同周期的任务,比如 LED1 每 0.3 秒闪烁、LED2 每 0.6 秒闪烁、LED3 每 0.9 秒闪烁。
基础实现思路:1ms 时基 + 变量计数
首先把定时器配置成 1ms 中断一次,然后在中断里给一个全局变量自增。主循环里判断这个变量的值,当计数达到 300 时,翻转 LED1;达到 600 时,翻转 LED2;达到 900 时,翻转 LED3。这种方法的关键是,所有任务都基于同一个 1ms 时基,互不干扰,而且完全不阻塞主循环。
进阶写法:结构体数组任务调度
课程里还教了更高级的结构体数组写法,把每个任务的状态、计数、目标时间和执行函数都封装到结构体里,再用数组统一管理。这样添加新任务时,只需要在数组里加一个元素,不用修改主循环的判断逻辑,代码的可维护性大幅提升。
typedef struct {
    u8 Run;           // 任务状态:运行/停止
    u16 TIMCount;     // 定时计数器
    u16 TRITime;      // 重载计数目标
    void (*TaskHook)(void); // 任务函数指针
} TASK_COMPONENTS;
这种写法让我第一次体会到了 “面向对象” 的思想,把任务的数据和行为都封装在一起,代码结构一下子就清晰了。
二、按键检测的新方法:无阻塞计数消抖
课程里纠正了我之前写按键程序的一个坏习惯:用while(!key)等待按键松开,这样会阻塞主循环,影响其他任务的执行。
正确的做法是在 1ms 定时器中断里,给按键按下的次数计数。如果连续 50ms 都检测到按键按下,才判定为有效按键;一旦检测到按键松开,计数就清零。这样既实现了软件消抖,又完全不阻塞主循环,主程序可以同时处理 LED 闪烁和按键检测,互不影响。
三、模块化编程:.c 和.h 文件的规范写法
课程里还教了如何把代码按功能模块拆分,比如把初始化代码放到config.c,按键检测放到key.c,LED 控制放到led.c,每个模块都配套一个.h头文件。
头文件的标准格式
头文件必须加上防止重复包含的宏定义:
#ifndef __XXX_H
#define __XXX_H   
// 函数声明、宏定义
#endif
这样可以避免头文件被重复包含导致的编译错误。
模块化开发的好处
把不同功能拆分成独立的模块后,代码的可读性和可维护性大幅提升,后续修改和调试也更方便。而且写好的模块可以直接在其他项目里复用,不用每次都重新写一遍,效率高了很多。
四、学习感悟与后续计划
今天的课程让我从 “写单个功能代码”,进阶到了 “写结构清晰、可复用的工程级代码”。定时器调度和模块化编程,是单片机开发中从入门到进阶的关键一步。
以前写代码,所有功能都堆在main.c里,不仅杂乱无章,而且稍微复杂一点的项目就会出错。现在学会了模块化拆分和任务调度,以后写多任务项目时,思路会清晰很多。
接下来我会把课程里的示例代码改成一个完整的多任务工程,用结构体数组管理 LED 闪烁、按键控制和串口打印三个任务,进一步熟悉调度的逻辑。同时,我也会把模块化的写法用到后续的项目里,养成规范的编程习惯。
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-5-30 04:44 , Processed in 0.129530 second(s), 78 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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