xhljs 发表于 2025-9-13 11:19:05

西西研究员 发表于 2025-9-13 08:36
辛苦您学习打卡时开一个帖子,然后逐级在下面回复打卡即可,感谢配合与支持!!! ...

收到,谢谢老师

xhljs 发表于 2025-9-16 18:22:13

西西研究员 发表于 2025-9-13 08:36
辛苦您学习打卡时开一个帖子,然后逐级在下面回复打卡即可,感谢配合与支持!!! ...

好的谢谢

xhljs 发表于 2025-9-17 07:33:15

实验三:PRINTF_USB_int 打印接收到的数据(中断方式)
1.去官网WWW.STCAI.COM,下载软件工具中的:
1.1.工具软件:Aicube-isp-v6.96A软件、keil中断拓展插件、工具使用说明、触摸按键套件。
1.2.库函数:USB库函数(适用于所有带USB模块的芯片,如AI8051U及其他STC 8位、32位芯片)。
1.3.AI8051U系列32位硬件乘除运算MDU32库函数。
1.4.8系列MDU:16位硬件16位MDU16、32位MDU32C乘除库函数。
1.5.8G-8H系列通用库函数。
1.6.8A8K64D3通用库函数。
1.7.32位MDU库函数。
1.8.32位TFPU库函数。
1.9.32G12k128主控库函数。
1.10.32F系列TFPU库函数。
1.11.AI8051U创新、传统风格库函数。
1.12.AI8051U、32位硬件三角函数和浮点运算的TFPU库函数。
2.打开USB库函数:
2.1.范例程序“
2.1.1.STC-CDC查询、STCCDC中断、STC-hid查询、STC-hid中断(今天用到的是STC-CDC)。
2.2.Usb库函数:
2.2.1.stc_usb_cdc_8h_data.lib
2.2.2.stc_usb_cdc_data_8h_b151.lib
2.2.3.stc_usb_cdc_8h_xdata.lib
2.2.4.stc_usb_cdc_xdata_8h_b151.lib
2.2.5.stc_usb_cdc_32g_data.lib(<64kB)
2.2.6.stc_usb_cdc_data_32g_huge.lib(>64KB)
2.2.7.ai_usb.h
2.2.8.keilkill中断拓展
2.2.9.Stc32_stc8_usb.h
2.2.10.库文件使用说明。
3.AICUBE 项目助手设置界面:
3.1.项目设置:
3.1.1.单片机型号:AI8051U-32Bit
3.1.2.项目名称:test1
3.1.3.项目路径:E:\AI8051U
3.1.4.项目类型:单文件类型
3.1.5.自动打开项目:是
3.1.6.自动备份keil项目文件:是
3.1.7.备份深度:2
3.1.8.编码格:GB2312(新增UTF-8)
3.1.9.Cpu模式:源模式(sourse)
3.1.10.存储器模式:xsmall模式
3.1.11.代码等等小模式:large模式
3.1.12.4字节中断帧:是
3.1.13.使能REMOVEUNUSED:是
3.1.14.创建HEX格式:是
3.1.15.HEX格式:HEX-80(代码>64kB,用HEX-386)
3.2.图形化I/O设置
3.2.1.如右图:芯片管脚功能:
3.2.2.左键选择管脚功能,右键配置管脚模式
3.2.3.可以看到右下输出窗口,显示配置
3.3.点击左侧窗口“PERIPHERAL,外设”下拉的相应端口必须勾选后,才能生效。
3.4.图形化时钟配置(一般默认,不需要设置):
3.4.1.主时钟源:内部PLL输出
3.4.2.系统时钟分频:3
3.4.3.主时钟输出:否
3.4.4.选择内部高速IRC频率:内部预置频率
3.4.5.内部预置频率:40MHZ
3.4.6.启动外部高速晶振:否
3.4.7.启动内部低速IRC:否
3.4.8.启动内部48MHZ高速IRC:否
3.4.9.PLL时钟源:内部高速IRC
3.4.10.PLL输出时钟分频:4分频
3.4.11.PLL输出:8倍频(96MHZ)
3.4.12.高速外设时钟预分频:1
3.4.13.I2S时钟分频:1
3.4.14.PWMA时钟分频:1
3.4.15.PWMB时钟分频:1
3.4.16.TFPU时钟分频:1
3.4.17.设置是否正确,检查有无黄色文本(报错),报错必重新修改设置。黄色报错,蓝色可配置。
3.5.SYS,系统:
3.5.1.GLK 时钟:一定要勾选,保障上一章节“图形化时钟配置”对时钟的所有配置生效。
3.5.2.除时钟配置外,其他如外部中断、定时器/计数器、TFT、总线等,根据电路要求需要设置。
3.6.USB通用串口总线设置:
3.6.1.USB协议:CDC通信设备协议
3.6.2.数据处理方式:查询方式
3.6.3.USB不停电下载:是
3.6.4.ISP下载命令:@STCISP#
3.6.5.等USB主机检测到DEVICE并配置完成:否
3.6.6.中断优先级:最低优先级。
4.保存以上所有设置。
5.实际操作:
5.1.重新打开AIcube项目
5.2.首先勾选“USB通用串行总线”:
5.3.USB具体设置:
5.3.1.USB协议:CDC通信设备协议
5.3.2.USB端口:D-(P3.0),D+(P3.1)
5.3.3.数据处理方式:中断方式
5.3.4.USB不停电下载:是
5.3.5.ISP下载命令:@STCISP#
5.3.6.等USB主机检测到DEVICE并配置完成:否
5.3.7.中断优先级:最高优先级。
5.4.本实操对其他配置暂时不需要用到,不做设置
5.5.保存上述设置。
5.6.生成并打开keil项目
5.7.打开main.c
5.8.先编译一下,0 error,0 warning
5.9.添加头文件和主函数
5.10.必须在对应的begin与end之间添加
5.11.从keil范例程序中:深圳大学上机试验有编好的PRINTF_USB_query 程序中的C语言打开,在main函数段,找到并复制程序段
5.11.1. if (UsbOutBuffer == 6)
          printf_usb("Hello World !\r\n");        //接收到数据6后打印“Hello World !”
      else if (UsbOutBuffer == 7)
          printf_usb("China !\r\n");                //接收到数据7后打印“China !”
粘贴到本实验对应位置。
5.12.在相应头文件位置复制粘贴:
5.12.1.#include”ai8051u.h”
5.12.2.#include”ai_usb.h”
5.12.3.用TAB键将代码对齐,规范代码风格
5.12.4.如果遇到程序较大,可以使用4分屏命令:windows->spilot,方便编辑程序,不需要用就退出:windows->close all。
5.12.5.编译程序显示:0 error,0 warning,表示编译成功。
5.13.回到AiCube 界面:进行设置:
5.13.1.单片机型号:AI8051U-32K64
5.13.2.通信方式:USB-CDC
5.13.3.最低波特率:2400
5.13.4.最高波特率:115200
5.13.5.起始地址:勾选“清除代码缓冲区”、“清除EEPROM缓冲区”
5.13.6.硬件配置:
5.13.6.1.IRC调节模式:勾选“不调节,使用内部预置频率”
5.13.6.2.IRC 预置频率:40MHZ
5.13.6.3.勾选:振荡器放大增益>(12MHZ以上建议选择)。
5.13.6.4.勾选:上电复位使用较长延时
5.13.6.5.勾选:允许低电压复位(禁止低电压中断)
5.13.7.打开编译好的程序:E:\AI8051U PROJECTS\OBJECT\Printf_usb_int.hex
5.14.先用普通USB下载
5.14.1.参照AI8051U实验箱1.2使用说明,对照实物(本人无实验箱,只能做前半部分)
5.14.2.硬件连接:用USB线将PC与实验箱连接上
5.14.3.先按下P3.2(接地)、接着按下电源按键(断电)再松开电源按键上电。
5.14.4.出现:ISP下载软件上USB-CDC跳转为(HID1)USB-Writer(自动识别、已经通信了)。
5.14.5.此时,系统与端口3.2 无关了,可松开P3.2按键,进入程序下载模式。
5.14.6.打开程序:找到objects->printf_usb_int.hex
5.14.7.点击”下载/编程“:此时可在软件右下方窗口显示:下载成功!并提示:1秒后自动跳转USB-CDC串口助手
5.14.8.1秒后,软件右上方USB-CDC串口助手打开,在右侧发送区,点击发送”hello world!“,在接收缓冲区,看到“hello world!”,发送一个接收一个。
5.14.9.在右上方窗口左下角处点击“关闭串口”,程序立即停止下载。
5.15.USB不停电下载(注:第1次下载须先普通下载后才能进入不停电下载):
5.16.ISP下载软件里,除了硬件设置外,还要在软件项目进行设置:
5.16.1.在ISP下载软件中,选择”收到用户命令后复位到ISP监控程序区”
5.16.1.1.勾选:USB-CDC(串口模式)
5.16.1.2.勾选:使用默认的内部自定”@STCISP#”
5.16.1.3.勾选:下次下载使用HID接口进行ISP下载
5.16.1.4.勾选:每次下载前先发送自定义命令。
5.16.1.5.勾选:每次下载前都重新装载目标文件
5.16.1.6.勾选:当目标文件变化时自动装载并发送下载命令。
5.16.2.软件设置后,USB连线连接PC与硬件实验箱。
5.16.3.按下P3.2按键(接地)、接着按下电源按键(断电)再松开电源按键给板子上电。
5.16.4.出现:(HID1)usb-writer(串行接口通信了)
5.16.5.此时系统与端口P3.2无关了了,可松开P3.2按键,进入程序下载模式
5.16.6.下面操作与USB普通下载相同。
5.17.不停电下载与普通下载的区别:
5.17.1.当源代码发生改变,软件仍然可以等待并下载。
5.17.2.点击下载/编程:下载模式由USB-CDC转变为(HID1)USB-WRITER。

xhljs 发表于 2025-9-17 07:50:11

茜茜老师:在本贴上继续发表心得,目前已无页面,需要新增页面吗?

xhljs 发表于 2025-9-17 07:50:59

实验三:PRINTF_USB_int 打印接收到的数据(中断方式)
1.去官网WWW.STCAI.COM,下载软件工具中的:
1.1.工具软件:Aicube-isp-v6.96A软件、keil中断拓展插件、工具使用说明、触摸按键套件。
1.2.库函数:USB库函数(适用于所有带USB模块的芯片,如AI8051U及其他STC 8位、32位芯片)。
1.3.AI8051U系列32位硬件乘除运算MDU32库函数。
1.4.8系列MDU:16位硬件16位MDU16、32位MDU32C乘除库函数。
1.5.8G-8H系列通用库函数。
1.6.8A8K64D3通用库函数。
1.7.32位MDU库函数。
1.8.32位TFPU库函数。
1.9.32G12k128主控库函数。
1.10.32F系列TFPU库函数。
1.11.AI8051U创新、传统风格库函数。
1.12.AI8051U、32位硬件三角函数和浮点运算的TFPU库函数。
2.打开USB库函数:
2.1.范例程序“
2.1.1.STC-CDC查询、STCCDC中断、STC-hid查询、STC-hid中断(今天用到的是STC-CDC)。
2.2.Usb库函数:
2.2.1.stc_usb_cdc_8h_data.lib
2.2.2.stc_usb_cdc_data_8h_b151.lib
2.2.3.stc_usb_cdc_8h_xdata.lib
2.2.4.stc_usb_cdc_xdata_8h_b151.lib
2.2.5.stc_usb_cdc_32g_data.lib(<64kB)
2.2.6.stc_usb_cdc_data_32g_huge.lib(>64KB)
2.2.7.ai_usb.h
2.2.8.keilkill中断拓展
2.2.9.Stc32_stc8_usb.h
2.2.10.库文件使用说明。
3.AICUBE 项目助手设置界面:
3.1.项目设置:
3.1.1.单片机型号:AI8051U-32Bit
3.1.2.项目名称:test1
3.1.3.项目路径:E:\AI8051U
3.1.4.项目类型:单文件类型
3.1.5.自动打开项目:是
3.1.6.自动备份keil项目文件:是
3.1.7.备份深度:2
3.1.8.编码格:GB2312(新增UTF-8)
3.1.9.Cpu模式:源模式(sourse)
3.1.10.存储器模式:xsmall模式
3.1.11.代码等等小模式:large模式
3.1.12.4字节中断帧:是
3.1.13.使能REMOVEUNUSED:是
3.1.14.创建HEX格式:是
3.1.15.HEX格式:HEX-80(代码>64kB,用HEX-386)
3.2.图形化I/O设置
3.2.1.如右图:芯片管脚功能:
3.2.2.左键选择管脚功能,右键配置管脚模式
3.2.3.可以看到右下输出窗口,显示配置
3.3.点击左侧窗口“PERIPHERAL,外设”下拉的相应端口必须勾选后,才能生效。
3.4.图形化时钟配置(一般默认,不需要设置):
3.4.1.主时钟源:内部PLL输出
3.4.2.系统时钟分频:3
3.4.3.主时钟输出:否
3.4.4.选择内部高速IRC频率:内部预置频率
3.4.5.内部预置频率:40MHZ
3.4.6.启动外部高速晶振:否
3.4.7.启动内部低速IRC:否
3.4.8.启动内部48MHZ高速IRC:否
3.4.9.PLL时钟源:内部高速IRC
3.4.10.PLL输出时钟分频:4分频
3.4.11.PLL输出:8倍频(96MHZ)
3.4.12.高速外设时钟预分频:1
3.4.13.I2S时钟分频:1
3.4.14.PWMA时钟分频:1
3.4.15.PWMB时钟分频:1
3.4.16.TFPU时钟分频:1
3.4.17.设置是否正确,检查有无黄色文本(报错),报错必重新修改设置。黄色报错,蓝色可配置。
3.5.SYS,系统:
3.5.1.GLK 时钟:一定要勾选,保障上一章节“图形化时钟配置”对时钟的所有配置生效。
3.5.2.除时钟配置外,其他如外部中断、定时器/计数器、TFT、总线等,根据电路要求需要设置。
3.6.USB通用串口总线设置:
3.6.1.USB协议:CDC通信设备协议
3.6.2.数据处理方式:查询方式
3.6.3.USB不停电下载:是
3.6.4.ISP下载命令:@STCISP#
3.6.5.等USB主机检测到DEVICE并配置完成:否
3.6.6.中断优先级:最低优先级。
4.保存以上所有设置。
5.实际操作:
5.1.重新打开AIcube项目
5.2.首先勾选“USB通用串行总线”:
5.3.USB具体设置:
5.3.1.USB协议:CDC通信设备协议
5.3.2.USB端口:D-(P3.0),D+(P3.1)
5.3.3.数据处理方式:中断方式
5.3.4.USB不停电下载:是
5.3.5.ISP下载命令:@STCISP#
5.3.6.等USB主机检测到DEVICE并配置完成:否
5.3.7.中断优先级:最高优先级。
5.4.本实操对其他配置暂时不需要用到,不做设置
5.5.保存上述设置。
5.6.生成并打开keil项目
5.7.打开main.c
5.8.先编译一下,0 error,0 warning
5.9.添加头文件和主函数
5.10.必须在对应的begin与end之间添加
5.11.从keil范例程序中:深圳大学上机试验有编好的PRINTF_USB_query 程序中的C语言打开,在main函数段,找到并复制程序段
5.11.1. if (UsbOutBuffer == 6)
          printf_usb("Hello World !\r\n");        //接收到数据6后打印“Hello World !”
      else if (UsbOutBuffer == 7)
          printf_usb("China !\r\n");                //接收到数据7后打印“China !”
粘贴到本实验对应位置。
5.12.在相应头文件位置复制粘贴:
5.12.1.#include”ai8051u.h”
5.12.2.#include”ai_usb.h”
5.12.3.用TAB键将代码对齐,规范代码风格
5.12.4.如果遇到程序较大,可以使用4分屏命令:windows->spilot,方便编辑程序,不需要用就退出:windows->close all。
5.12.5.编译程序显示:0 error,0 warning,表示编译成功。
5.13.回到AiCube 界面:进行设置:
5.13.1.单片机型号:AI8051U-32K64
5.13.2.通信方式:USB-CDC
5.13.3.最低波特率:2400
5.13.4.最高波特率:115200
5.13.5.起始地址:勾选“清除代码缓冲区”、“清除EEPROM缓冲区”
5.13.6.硬件配置:
5.13.6.1.IRC调节模式:勾选“不调节,使用内部预置频率”
5.13.6.2.IRC 预置频率:40MHZ
5.13.6.3.勾选:振荡器放大增益>(12MHZ以上建议选择)。
5.13.6.4.勾选:上电复位使用较长延时
5.13.6.5.勾选:允许低电压复位(禁止低电压中断)
5.13.7.打开编译好的程序:E:\AI8051U PROJECTS\OBJECT\Printf_usb_int.hex
5.14.先用普通USB下载
5.14.1.参照AI8051U实验箱1.2使用说明,对照实物(本人无实验箱,只能做前半部分)
5.14.2.硬件连接:用USB线将PC与实验箱连接上
5.14.3.先按下P3.2(接地)、接着按下电源按键(断电)再松开电源按键上电。
5.14.4.出现:ISP下载软件上USB-CDC跳转为(HID1)USB-Writer(自动识别、已经通信了)。
5.14.5.此时,系统与端口3.2 无关了,可松开P3.2按键,进入程序下载模式。
5.14.6.打开程序:找到objects->printf_usb_int.hex
5.14.7.点击”下载/编程“:此时可在软件右下方窗口显示:下载成功!并提示:1秒后自动跳转USB-CDC串口助手
5.14.8.1秒后,软件右上方USB-CDC串口助手打开,在右侧发送区,点击发送”hello world!“,在接收缓冲区,看到“hello world!”,发送一个接收一个。
5.14.9.在右上方窗口左下角处点击“关闭串口”,程序立即停止下载。
5.15.USB不停电下载(注:第1次下载须先普通下载后才能进入不停电下载):
5.16.ISP下载软件里,除了硬件设置外,还要在软件项目进行设置:
5.16.1.在ISP下载软件中,选择”收到用户命令后复位到ISP监控程序区”
5.16.1.1.勾选:USB-CDC(串口模式)
5.16.1.2.勾选:使用默认的内部自定”@STCISP#”
5.16.1.3.勾选:下次下载使用HID接口进行ISP下载
5.16.1.4.勾选:每次下载前先发送自定义命令。
5.16.1.5.勾选:每次下载前都重新装载目标文件
5.16.1.6.勾选:当目标文件变化时自动装载并发送下载命令。
5.16.2.软件设置后,USB连线连接PC与硬件实验箱。
5.16.3.按下P3.2按键(接地)、接着按下电源按键(断电)再松开电源按键给板子上电。
5.16.4.出现:(HID1)usb-writer(串行接口通信了)
5.16.5.此时系统与端口P3.2无关了了,可松开P3.2按键,进入程序下载模式
5.16.6.下面操作与USB普通下载相同。
5.17.不停电下载与普通下载的区别:
5.17.1.当源代码发生改变,软件仍然可以等待并下载。
5.17.2.点击下载/编程:下载模式由USB-CDC转变为(HID1)USB-WRITER。

西西研究员 发表于 2025-9-17 08:39:21

xhljs 发表于 2025-9-17 07:50
茜茜老师:在本贴上继续发表心得,目前已无页面,需要新增页面吗?

在本帖下面继续回复即可,内容和您的提问一样可以出来的,实验二单独开的新帖已删除,请勿重复开贴!

xhljs 发表于 2025-9-17 12:18:58

《32位8051单片机原理及应用》学习心得

第一集 认识单片机 摘要:1) 什么是单片机?2) 它能做什么?3) 新手常见问题解答4) 学习建议 1. 什么是单片机?(1) 定义:单片机(single-chip microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术反具有数据处理能力的央处理器CPU、随机寄存器RAM、只读寄存器ROM、I/O端口种中断系统、定时器/计数器等功能(可能包括显示驱动、脉宽调制电路、模拟多路转换器、A/D转换器)集成到一块硅片上构成一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上个世纪80年代,由当时的4位、8位单片机,发展到现在300M的高速单片机。(2) 外观:引脚数量、封装方式(LQFP、DIP等)。2. 它能做什么?(1) 功能:是一个小的功能减少的计算机,能写入用户程序,能读取引脚上电压信号,能在特定引脚上输出电平信号,能在特定引脚上输出电压、能计算时间,能计数,能做数学运算,能做逻辑运算,能顺序动作,能通信等功能,概括地说能做有规律可循的控制应用。(2) 用途:单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域。大致分为如下几个范畴(可在网络搜索到):① 智能仪表:电压、电流、功率、频率、湿度、温度、流量等的仪器仪表。② 工业控制:工业流水线的智能化、电梯智能化、各种报警系统。③ 家用电器:电饭煲、电冰箱、洗衣机、空调、热水器、彩电等。④ 网络与通信:手机、电话机、楼宇自动通信与呼叫、列车无线通信等。⑤ 医用设备领域:医用呼吸机、监护仪、超声诊断设备、病床呼叫系统。⑥ 模块化系统:电子音乐系统、PLC工控板等。⑦ 汽车电子:发动机控制器、基于CAN总线的汽车发动机智能电子控制器、GPS导航系统、abs防抱死系统、制动系统、胎压检测。 3. 新手常见问题解答:(1) 30岁还能单片机吗?答案:能学。(2) 新手学习51单片机?还是STM32?答案:优先学习51单片机好入手,而且性能越来越强,资源多,特别是STC8051性能稳定。将来还有可STC33面世,性能会超过STM32,就目前STC32的ADC精度已有超填写STM32的。(3) 51单片机淘汰了吗?答案:发展20年,永远不会淘汰。(4) 怎样入门单片机?答案:跟着老师视频从头学到尾,然后做大学生电子竞赛一两个项目,能做好,表示入门了。(5) 怎样才算入门单片机?答案:做项目,对单片机有大概认识,在做项目之前,先做评估,对项目的每个功能要求分析,需要什么资源及配置(关键是选什么型号单片机及外设)能实现。然后具体实施,包括能绘制电路原理图(可在实验板配置),说明单片机入门了。(6) 小学生可以学单片机吗?答案:可以,培养逻辑思维能力。(7) 做一个单片机项目怎样做才能不感觉压力?答案:跟着老师学习,学会查找手册,把所有驱动层的代码写好,剩下的用户功能就不难了,学会到官网查找技术支持或相关案例,这样就不会感到压力了。(8) 汇编有没有必要学?答案:暂时不建议学,以C语言为主,而且维护方便。(9) 单片机用库函数好还是用寄存器好?答案:建议用寄存器更简单、可靠,因为用寄存器,只要官网去对应单片机手册上查找寄存器资料就可以了。但如果用库函数,对不同型号的单片机,其库函数仍然要对照不同型号单片机的寄存器进行调试,反而比较麻烦。而且用寄存器运行频率比库函数更高,以后老师的讲课都是基于寄存器开发。有些人觉得寄存器开发较难,但其实寄存器开发是最简单。(10) STC单片机到底好不好?答案:首先,资料资源是否齐全、准确、论坛案例是否齐全。目前STC资料齐全、官方论坛资源充足。所以,STC单片机比较好。虽然有人说官网风格不是太好,但会越来越好的,技术支持也是比较好的。另外,打卡赠送实验箱,是一个良心企业。在实现功能的情况下,越便宜越好,最合适的单片机才是最好的。(11) 目前还在上班,能否学单片机?答案:肯定可以学。跟着老师学60集,你会变得很优秀。4. 学习建议:(1) 每天抽出1-2小时视频教程学(2) 一定要静得下心,沉得信气(3) 多跟着老师动手。千万别一学就会,一写就废(4) 举一反三,发散思维,时常思考为什么(5) 多看看官网,多看看手册,有问题多联系。进群交流。(6) 逛逛论坛,吸收别人好的东西(开源案例)(7) 尝试着自已做些项目,竞赛题。谢谢老师

xhljs 发表于 2025-9-17 12:21:21

《32位8051单片机原理及应用》第一集,已发帖,请老师审核,谢谢

xhljs 发表于 2025-9-17 12:22:19

西西研究员 发表于 2025-9-17 08:39
在本帖下面继续回复即可,内容和您的提问一样可以出来的,实验二单独开的新帖已删除,请勿重复开贴! ...

《32位8051单片机原理及应用》第一集,已发帖,请老师审核,谢谢

xhljs 发表于 2025-9-17 12:24:50

xhljs 发表于 2025-9-17 12:22
《32位8051单片机原理及应用》第一集,已发帖,请老师审核,谢谢
茜茜老师:怎样册除无用的帖子?
能否,一次发多页帖子?
页: 1 [2] 3 4
查看完整版本: 实验一:PRINTF_USB 直接输出数据