那怕遍体鳞伤,也要勇往直前。
实验一:PRINTF_USB 直接输出数据 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 直接打印数据程序中的C语言打开,在main函数段,找到并复制”printf_usb(“hello world!\r\n”);粘贴到本实验对应主函数位置。 5.12. 将不需要的有关查询语句注释掉(不要册除,保证原程序的完整性)。 5.13. 在相应头文件位置复制粘贴: 5.13.1. #include”ai8051u.h” 5.13.2. #include”ai_usb.h” 5.13.3. 用TAB键将代码对齐,规范代码风格 5.13.4. 如果遇到程序较大,可以使用4分屏命令:windows->spilot,方便编辑程序,不需要用就退出:windows->close all。 5.13.5. 编译程序显示:0 error,0 warning,表示编译成功。 5.14. 回到AiCube 界面:进行设置: 5.14.1. 单片机型号:AI8051U-32K64 5.14.2. 通信方式:USB-CDC 5.14.3. 最低波特率:2400 5.14.4. 最高波特率:115200 5.14.5. 起始地址:勾选“清除代码缓冲区”、“清除EEPROM缓冲区” 5.14.6. 硬件配置: 5.14.6.1. IRC调节模式:勾选“不调节,使用内部预置频率” 5.14.6.2. IRC 预置频率:40MHZ 5.14.6.3. 勾选:振荡器放大增益>(12MHZ以上建议选择)。 5.14.6.4. 勾选:上电复位使用较长延时 5.14.6.5. 勾选:允许低电压复位(禁止低电压中断) 5.14.7. 打开程序:E:\AI8051U PROJECTS\OBJECT\Printf_usb.hex 5.15. 先用普通USB下载 5.15.1. 参照AI8051U实验箱1.2使用说明,对照实物(本人无实验箱,只能做前半部分) 5.15.2. 硬件连接:用USB线将PC与实验箱连接上 5.15.3. 先按下P3.2(接地)、接着按下电源按键(断电)再松开电源按键上电。 5.15.4. 出现:ISP下载软件上USB-CDC跳转为(HID1)USB-Writer(自动识别、已经通信了)。 5.15.5. 此时,系统与端口3.2 无关了,可松开P3.2按键,进入程序下载模式。 5.15.6. 打开程序:找到objects->printf_usb.hex 5.15.7. 点击”下载/编程“:此时可在软件右下方窗口显示:下载成功!并提示:1秒后自动跳转USB-CDC串口助手 5.15.8. 1秒后,软件右上方USB-CDC串口助手打开,且不停下载显示“hello world!”。 5.15.9. 在右上方窗口左下角处点击“关闭串口”,程序立即停止下载。 5.16. USB不停电下载(注:第1次下载须先普通下载后才能进入不停电下载): 5.17. ISP下载软件里,除了硬件设置外,还要在软件项目进行设置: 5.17.1. 在ISP下载软件中,选择”收到用户命令后复位到ISP监控程序区” 5.17.1.1. 勾选:USB-CDC(串口模式) 5.17.1.2. 勾选:使用默认的内部自定”@STCISP#” 5.17.1.3. 勾选:下次下载使用HID接口进行ISP下载 5.17.1.4. 勾选:每次下载前先发送自定义命令。 5.17.1.5. 勾选:每次下载前都重新装载目标文件 5.17.1.6. 勾选:当目标文件变化时自动装载并发送下载命令。 5.17.2. 软件设置后,USB连线连接PC与硬件实验箱。 5.17.3. 按下P3.2按键(接地)、接着按下电源按键(断电)再松开电源按键给板子上电。 5.17.4. 出现:(HID1)usb-writer(串行接口通信了) 5.17.5. 此时系统与端口P3.2无关了了,可松开P3.2按键,进入程序下载模式 5.17.6. 下面操作与USB普通下载相同。 5.18. 不停电下载与普通下载的区别: 5.18.1. 当源代码发生改变,软件仍然可以等待并下载。 5.18.2. 点击下载/编程:下载模式由USB-CDC转变为(HID1)USB-WRITER。 谢谢老师们。
|