购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.4 工程训练

2.4.1 Keil C251集成开发环境的应用

1.工程训练目标

(1)学会在Keil C251集成开发环境(以下简称Keil C251)中配置STC单片机的开发环境。

(2)学会通过Keil C251输入、编辑与编译单片机应用程序,生成单片机应用程序的机器代码文件。

(3)学会通过Keil C251模拟调试单片机应用程序。

2.关联知识

2.1节相关内容。

3.任务概述

1)任务目标与电路设计

任务目标:实现流水灯控制。当开关合上时,流水灯左移;当开关断开时,流水灯右移。左移时间间隔为1s,右移时间间隔为0.5s。

电路设计:从P3.2引脚输入开关信号,开关断开时输入高电平,开关合上时输入低电平;P1口输出信号控制8只LED,输出高电平时LED亮。

2)参考源程序

参考源程序见2.1节中的demo.c。

4.任务实施

(1)下载与安装Keil C251。

(2)给Keil C251添加单片机型号、单片机头文件与仿真驱动。

(3)新建项目文件夹project241。

(4)应用Keil C251输入、编辑与编译用户程序,生成用户程序的机器代码。

①新建名为project241.uvprojx的项目,存储类型按默认设置即可。

②新建程序文件,内容见2.1节中的demo.c,名称改为“project241.c”。

注意: 保存时应注意选择文件类型,若编辑的是汇编语言程序,以.ASM为扩展名保存;若编辑的是C51程序,以.c为扩展名保存。

③将project241.c添加到当前项目中。

④设置编译环境。

a.CPU Mode:Source(251 native)。

b.Memory Model:XSmall。

c.Code Rom Size:Large。

d.HEX format:HEX-386。

e.勾选“Create HEX File”选项。

⑤进行编译与连接,生成机器代码文件。

⑥查看当前项目文件夹中是否有project241.hex文件。

(5)调试用户程序。

①从编辑、编译界面切换到调试界面。

②调出P1与P3控制窗口。

③单击全速运行按钮,观察P1端口中“√”(高电平)的移动方向与移动时间间隔。

④设置P3.2输入为低电平(去掉P3.2位的“√”),观察P1端口中“√”(高电平)的移动方向与移动时间间隔。

5.训练拓展

(1)单步调试用户程序。

(2)跟踪调试用户程序。

(3)设置断点,利用断点调试用户程序。

2.4.2 STC32G12K128单片机的在线编程与在线调试

1.工程训练目标

(1)学习利用STC-ISP向STC单片机下载用户程序。

(2)利用Keil μVision4集成开发环境与实验箱进行STC单片机的在线仿真。

2.关联知识

2.1节、2.2节和2.3节相关内容。

3.任务概述

1)任务目标与电路设计

任务目标:实现流水灯控制。当开关合上时,流水灯左移;当开关断开时,流水灯右移。左移间隔时间为1s,右移时间间隔为0.5s。

电路设计:从P3.3引脚输入开关信号,开关断开时输入高电平,开关合上时输入低电平;从P6输出信号控制8只LED灯,输出低电平时LED灯亮;用P4.0选通控制LED灯的电源,P4.0为高电平时切断电源,P4.0为低电平时接通电源。

2)软件设计

(1)程序说明。一是由于单片机复位后除P3.0、P3.1外的I/O端口都处于高阻状态,在使用I/O功能前,必须将I/O端口的工作模式设置为准双向端口或其他需要的工作模式;二是根据CPU时钟频率的不同,需要设置访问程序存储器与扩展RAM的等待时间。为此,为了方便编程,统一设计一个初始化程序文件,即sys_inti.c,初始化函数为sys_inti,在主程序文件中,用包含语句将sys_inti.c包含进来,在主函数中调用sys_inti即可。

(2)sys_inti.c中程序如下:

(3)project242.c中程序如下:

4.任务实施

(1)新建项目文件夹project242。

(2)利用Keil C251创建项目project242.uvproj。

(3)新建sys_inti.c系统初始化文件。

(4)新建project242.c用户程序,将project242.c添加到当前项目中,设置编译环境,生成机器代码文件project242.hex。

(5)应用STC-ISP,向实验箱中的单片机下载用户程序的机器代码文件project242.hex。

①用双公头USB线连接PC与实验箱。

②打开STC-ISP。

③选择目标单片机的型号。

④选择要下载的程序文件project242.hex。

⑤选择单片机程序运行的时钟频率(24MHz)。

⑥建立PC与单片机之间的USB通信。按住SW17(P3.2)按键,按一下SW19(电源开关)按键,当观察到扫描串行端口窗口出现“STC USB Writer(HID1)”信息时,松开SW17按键,完成PC与单片机之间的USB通信的建立。

⑦单击“下载/编程”按钮,启动用户程序的下载,程序下载完成后自动运行。

(6)在线调试用户程序。

①直接观察。默认时,SW18输出的是高电平,观察流水灯(P6控制的LED灯)的运行情况,这时流水灯应该右移,间隔时间约500ms。

②按住SW18按键,SW18输出的是低电平,观察流水灯(P6控制的LED灯)的运行情况,这时流水灯应该左移,间隔时间约1000ms。

2.4.3 STC32G12K128单片机的不停电程序下载

1.工程训练目标

学会在用户程序开发中实现用户程序不停电下载。

2.关联知识

使用STC-USB通信,使用USB库函数包COMM,相应的USB库函数和头文件在此文件夹中。

3.任务概述

1)任务目标与电路设计

电路设计同2.4.2小节,在2.4.2小节任务目标的基础上,实现不停电下载程序。

2)C语言程序

本任务的程序可直接在project242.c的基础上修改(加粗部分)而成。

(1)预编译部分:

(2)主函数部分:

4.任务实施

(1)新建项目文件夹project243。

(2)将USB库函数包(COMM文件夹)复制到project243文件夹所在的目录(文件夹)中。

(3)将project242中的sys_inti.c与project242.c两个文件复制到project243文件夹中,并将project242.c重命名为project243.c。

(4)利用Keil C251新建项目project243,并存储在project243文件夹中。

(5)将project243.c文件添加到当前项目中,将COMM文件夹中的stc_usb_hid_32g库文件添加到当前项目中。

(6)打开project243.c文件,参考上述程序说明添加USB调试代码。

(7)设置编译环境,编译、生成机器代码文件project243.hex。

(8)利用普通USB下载程序方法将project243.hex文件下载到实验箱的单片机中,并调试。

(9)设置USB自定义下载功能。在STC-ISP界面的左边中部,选择“收到用户命令后复位到ISP监控程序区”选项,并设置相关参数与勾选相关选项,如图2.53所示。设置完毕后,当下载程序代码变化时,系统将自动启动自定义下载,实现不停电下载,这将大大提高工作效率。

图2.53 自定义下载设置(不停电下载)

2.4.4 STC32G12K128单片机SWD端口的在线仿真

1.工程训练目标

学会用STC-USB Link1对STC32G12K128单片机进行在线仿真。

2.关联知识

STC-USB Link1的工具外观与引脚如图2.54所示。

图2.54 STC-USB Link1工具的外观与引脚

3.任务概述

1)任务目标与电路设计

电路设计同2.4.2小节,在2.4.2小节任务目标的基础上,实现在线仿真。

2)硬件连接

硬件连接如图2.55所示。

图2.55 在线仿真硬件连线

3)C语言程序

C语言程序同2.4.2小节。

4.任务实施

(1)将STC-USB Link1工具连接到PC后,STC-ISP会立即识别并在界面中显示“STC-USB Link1(LNK1)”,如图2.56所示。实验箱中的J9用短路帽短接。

注意: 实验箱电源应接SWD仿真器的VCC。

(2)制作仿真芯片,如图2.57所示。

①运行STC-ISP,进入“Keil仿真设置”标签页。

②选择“单片机型号”为“STC32G12K128-Beta”。

③选择“使用SWD口进行仿真P3.0/P3.1”。

④单击“将所选目标单片机设置为仿真芯片”按钮,下载完成后,芯片就具有仿真功能了。

图2.56 STC-ISP 识别到STC-USB Link1工具后的界面

图2.57 制作仿真芯片

(3)运行Keil C251,打开project242项目。

(4)进入设置编译环境界面,按图2.58、图2.59所示步骤进行SWD的仿真设置。

图2.58 SWD的仿真设置(1)

图2.59 SWD的仿真设置(2)

(5)进入仿真界面,在“Command”信息框中将显示仿真版本号等信息,如图2.60所示。

图2.60 仿真版本号等信息

(6)进行在线仿真,可同时在Keil C251和实验箱中观察仿真结果。

①全速运行调试。

②单步运行调试。

③断点调试。 FjMc5H1vle+TILIcZh1WKdxU6IbrXlTZnaEVvDmQyEMhhl6MQc9twt8Ny0ej/JMv

点击中间区域
呼出菜单
上一章
目录
下一章
×