找回密码
 立即注册
查看: 241|回复: 5

学用STC公司AI8051U芯片讲义4

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:583
  • 最近打卡:2025-10-16 07:15:35

27

主题

123

回帖

447

积分

中级会员

积分
447
发表于 2025-9-19 13:11:16 | 显示全部楼层 |阅读模式
新学期伊始,不忘助力国产替代初心,手头没有试验箱,先用“擎天柱”带领大一同学,跟随冲哥视频,学用STC AI8051U芯片讲义。
第四节,自动生成多文件项目代码,温习C/C++语言
本节课任务是学用AICube自动生成程序,温习c语言变量作用域
一、更新STC烧录工具和USB库,自动生成项目文件
1. 下载资料。STC烧录工具最新版是AiCube-ISP-V6.96CUSB最新库文件是20250716版;
2. 更新更新keil头文件。解压运行烧录工具(AiCube-ISP-V6.96C.exe),按下图顺序操作找到keil安装目录(keil_v5),更新头文件。
图片1.png
3. 打开AiCube自动生成项目代码。参考下图顺序,点击启动烧录工具AiCube.设置好单片机型号、项目名称、保存路径,这里项目类型设置为多代码文件项目。
图片2.png
点击确定后,勾选USB,通用串行总线和TIMER0,定时器0选相框,USB库函数设置“与printf函数关联”为是。
图片3.png
定时器0开启中断使能,如下图,点击自动生成代码按钮弹出提示项目创建成功提示,再点确定后会关联启动keil打开所生成的项目文件。
图片4.png
AiCube自动生成的项目包含三个c文件和usb库,查看各个文件内容,发现大量注释,分门别类提示放置用户的变量、函数,包含头文件等等,点击编译,编译器提示0错误0警告。足见AiCube功能强大方便。在看代码时,遇到不清楚函数、变量等,可鼠标右键点击追溯函数、变量定义,具体操作参考下图。
图片5.png
二、温习验证c语言变量生命周期
1. 移植AI8051U实验箱多任务代码。个人觉得官方推荐的实验箱代码:27-通过定时器周期性调度任务综合例程相当好。先拷贝其中Sources\src\Task.cSources\inc\Task.hdemo项目相应目录下。对照我刚才AiCube自动生成的项目,Task.c拷贝到G:\STCproject\AI8051U_PROJECT\demo\Sources\目录下,Task.h拷贝到G:\STCproject\AI8051U_PROJECT\demo\Sources\inc目录,下,路径可参考下图。
图片6.png
2. 将Task.c添加到项目中。展开demo,鼠标右键点击AiCube添加现存文件task.c,参考下图操作。
图片7.png
3. 主函数添加代码。main.c文件要在13#include "config.h"下面添加一句,#include "Task.h",即包含了Task.c的头文件,在第49行“在此添加主函数中用户主循环代码”下一行添加任务处理回调函数Task_Pro_Handler_Callback();备注:Task.c任务函数功能请参考上一节课解析。
图片8.png
4. 添加任务函数和变量。task.c文件添加一个数组变量,这里就拷贝27-通过定时器周期性调度任务综合例程app_Display.c文件的t_dispiay[]标准字库数组,定义一个用于验证变量display_index,再定义一个任务函数Test_Demo()驱动擎天柱p2端口led灯。task.h文件申明一下任务函数Test_Demo()timer.c文件第13#include "config.h"下面添加一句,#include "Task.h";在第61下面添加一句任务标记回调函数:Task_Marks_Handler_Callback();
5. 烧录验证。编译烧录看到擎天柱LED在闪烁,说明task.c文件display_index变量是全局变量,生命周期是程序运行到结束。
三、分析理解Keil多文件项目中变量生命周期
C/C++语言中,变量的作用域和链接性是两个独立但相互关联的概念。变量display_indextask.c文件中定义为全局变量,具有外部链接性,只要通过适当的声明可以在程序的任何地方被访问
1.作用域(Scope):决定变量在源代码中可见的范围全局变量在文件顶层定义,作用域为整个文件函数内部定义的变量作用域仅限于该函数内
2.链接性(Storage Class):决定变量在不同编译单元间的可见性外部链接(external linkage):默认情况下,未使用static关键字修饰的全局变量具有外部链接性,可在程序各处访问
3.内部链接 internal linkage:使用static关键字修饰的全局变量仅在当前文件内可见
task.c文件中的全局变量display_index没有使用static关键字修饰,因此它具有外部链接性。这使得即使主函数main.c文件未在头文件中声明extern int display_index,也能通过调用task.c文件中的函数Test_Demo()间接访问和修改display_index的值。因为函数Test_Demo()在定义时已经能够访问task.c文件中的全局变量display_index,且函数Test_Demo()的实现代码与display_index的存储位置已建立直接关联。
函数Test_Demo()作为task.c文件的接口,封装了对全局变量display_index的操作其核心机制在于函数封装作用主函数main.c文件调用Test_Demo()时,实际执行的是task.c文件中已绑定display_index变量地址的函数代码。函数Test_Demo()的作用域包含task.c文件的所有全局变量,因此可以直接访问和修改display_index的值,无需额外声明。这种机制是C/C++语言设计的基本特性之一,它允许通过函数封装实现对全局状态的修改,同时保持代码的模块化和可维护性。
附件内容:课件讲义、程序源代码、擎天柱验证视频

擎天柱闪灯验证变量.mp4

1.37 MB, 下载次数: 11

04自动生成多文件项目代码,温习CC 语言AiCube.rar

387.69 KB, 下载次数: 8

学用STC公司AI8051U芯片讲义4.docx

931.6 KB, 下载次数: 12

回复

使用道具 举报 送花

3

主题

1880

回帖

608

积分

等待验证会员

积分
608
发表于 2025-9-19 13:12:00 | 显示全部楼层
回复:学用STC公司AI8051U芯片讲义4

尊敬的各位同学、老师,以及关注国产芯片发展的朋友们:

感谢您分享的关于使用STC AI8051U芯片进行教学的系列讲义。作为一款国产嵌入式AI芯片,STC AI8051U在教学和项目实践中具有良好的可操作性和应用前景。本文将围绕您提到的第四讲内容——“使用AICube自动生成多文件项目代码并温习C语言变量作用域”进行简要分析与补充说明,供教学参考。

一、关于AICube工具与项目自动生成

AICube是STC为AI8系列芯片配套开发的集成开发环境(IDE)与代码生成工具。其核心优势在于能够通过图形化配置界面,自动生成结构清晰、模块化良好的C语言项目代码,极大地提升了开发效率,尤其适合教学场景中帮助学生快速上手并理解项目结构。

在第四讲中,建议教师引导学生重点关注以下几点:

1. 熟悉AICube的界面布局与功能配置;
2. 掌握通过配置寄存器或功能模块来自动生成代码的基本流程;
3. 理解生成代码的文件结构,包括主程序文件(main.c)、头文件(.h)、启动文件(startup.s)等;
4. 学会如何在生成代码基础上进行功能扩展与调试。

二、C语言变量作用域温习建议

在多文件项目开发中,变量作用域的理解至关重要。建议教师在教学过程中重点讲解以下内容:

1. 局部变量与全局变量的作用域与生命周期;
2. 静态变量(static)与外部变量(extern)的使用场景;
3. 多文件项目中如何通过头文件共享全局变量;
4. 变量命名规范与模块化设计原则。

三、教学实践建议

针对大一学生初学嵌入式系统的特点,建议采用“讲练结合、循序渐进”的教学方式:

1. 通过AICube演示如何生成一个LED闪烁或按键检测的完整项目;
2. 引导学生观察生成代码的结构,理解各模块之间的调用关系;
3. 布置小任务,如修改变量作用域、添加新功能模块等,以加深理解;
4. 鼓励学生尝试阅读生成代码中的底层驱动部分,为后续深入学习打下基础。

四、国产替代与教学融合的思考

在当前国产替代加速推进的背景下,STC AI8051U作为一款具有AI加速能力的8051内核芯片,其在教学中的应用不仅有助于学生掌握嵌入式开发的基本技能,更能在潜移默化中增强学生对国产技术的信心与认同感。

希望贵校在“擎天柱”教学平台的支持下,结合冲哥视频教程,能够持续推动国产芯片在高校教学中的普及与应用,为培养具有自主创新能力的新一代工程师贡献力量。

如有技术问题或教学资源需求,欢迎联系STC官方技术支持或访问其开发者社区。

祝教学顺利,成果丰硕!

国芯人工智能
2025年4月5日

[本文内容由国芯人工智能辅助生成,仅供参考]
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:560
  • 最近打卡:2025-10-16 05:35:53
已绑定手机

17

主题

768

回帖

2322

积分

金牌会员

积分
2322
发表于 2025-9-19 13:26:46 | 显示全部楼层
介绍的比较详细,适合初学者入门
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:44
  • 最近打卡:2025-10-10 14:30:18

16

主题

133

回帖

1170

积分

版主

积分
1170
发表于 2025-9-19 14:01:02 | 显示全部楼层
请不要重复开贴,逐级在下面回复即可,感谢配合谢谢支持!!!
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:583
  • 最近打卡:2025-10-16 07:15:35

27

主题

123

回帖

447

积分

中级会员

积分
447
发表于 2025-9-19 14:18:39 | 显示全部楼层
好的,帖子是大一新生帮忙挂网的,我回去提醒同学,谢谢。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:44
  • 最近打卡:2025-10-10 14:30:18

16

主题

133

回帖

1170

积分

版主

积分
1170
发表于 2025-9-19 15:26:37 | 显示全部楼层
垂柳*** 发表于 2025-9-19 14:18
好的,帖子是大一新生帮忙挂网的,我回去提醒同学,谢谢。

回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-10-16 10:28 , Processed in 0.130238 second(s), 76 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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