貌似 STVD没有波形这个功能。仿真时只能看相关寄存器。 可以参考下面的例子:
首先要在STVD中对COSMIC STM8编译器进行设置。 如下图所示,运行ST Visual Develop 集成开发环境,选择菜单"Tools ->Options",在出现的对话框中选择"Toolset"选项卡。在"Toolset"下拉菜单,选中"STM8S Cosmic",设置编译器的安装路径"Root path",然后选择"确定"。本例中选择的"Root path" 是:C:\Program Files\COSMIC\CXSTM8_16K。至此,就完成了COSMIC C编译器的设置完成。
图1
----软件仿真
要进行软件仿真,则要进行软件设置,选择菜单" Debug instrument ->Target Settings",进入了设置界面。在" Debug session"里面选择"Simulator",这样就完成了软件仿真设置。
打开相关调试文件
1. 打开测试文件test.stw(本教程是用test.stw的工程文件)
2. 载入后进入了编程画面,进入仿真界面,只要按菜单栏上的"Debug ->Start Debugging",或者按菜单栏上的蓝色按钮,就进入了仿真界面进行仿真。
(红色框框就是仿真按钮)
3. 软件仿真需要设置相应的寄存器的,在" Debug instrument"菜单下,可以设置相应的MCU设置。
----使用STLink III仿真器,硬件仿真
要进行硬件仿真,也要进行软件设置,选择菜单" Debug instrument ->Target Settings",进入了设置界面。在" Debug session"里面选择您所使用的仿真器,本例子是用的STLink,所以选择"Swim ST-Link",然后在"Target Port Selection"里面选择USB,接着按OK,这样就完成了硬件仿真设置。
打开相关调试文件
1. 打开测试文件test.stw(本教程是用test.stw的工程文件)
2. 硬件仿真需要设置相应的MCU型号的,如果MCU型号设置与实际不相符则无法进行仿真。载入了源文件之后,在" Project ->Settings ->MCU Selection"设置MUC型号。(修改过MCU型号后需要编译多一次)
3. 设置完MCU型号后,要进入仿真界面,只要按菜单栏上的"Debug ->Start Debugging",或者按菜单栏上的蓝色按钮,就进入了仿真界面进行仿真。
(红色框框就是仿真按钮)
● STM8之调试程序
下面简单介绍使用ST Visual Develop进行仿真调试
调试控制栏
调试控制栏可以控制程序的执行状态,所有的调试控制都可以由菜单,快捷键和调试工具栏实现。
1.开始调试(Start Debugging)
此命令将启动调试模式,并使所有的调试控制命令处于有效。此命令将连接调试平台,装载目标文件并执行复位 *** 作。
2.停止调试(Stop Debugging)
此命令将停止调试过程,并断开与调试平台的连接,进入编辑模式。
3.光标跳转到当前程序处(Go To PC)
让光标跳转到当前运行的程序语句行处。
4.全速运行(Run)(Ctrl+F5)
调试菜单中的运行命令将启动(重启动)程序。程序将一直运行直到被用户停止或遇到一个断点。只有当程序处于停止运行状态时才能执行此命令。
5.复位(Reset)( Ctrl+ SHIFT+F5 )
此命令可以让目标程序复位。当程序正在运行时,无法执行此命令。如果用户是在源级模式中,程序会在复位完成后,跳回到第一条用户的源代码语句处。复位命令执行后,所有窗口中的信息都将更新。
6.重新开始应用程序(Restart Application)
此命令可以让目标程序复位并且条状到主函数。当程序正在运行时,无法执行此命令。此复位命令执行后,所有窗口中的信息都将更新。
7.继续运行(continue)
调试菜单中的暂停命令让暂停或者停留在断点的程序继续运行下去。
8.暂停(stop)(SHIFT+F5)
调试菜单中的暂停命令将停止程序运行。当程序停止时,所有窗口中的信息都将更新。只有当程序处在运行状态时才能执行此命令。
9.逐过程(Step Into)(F11)
调试菜单中的逐过程命令只执行一条指令。如果此条指令包含一个函数调用/子程序调用,该函数/子程序也会同时执行。如果在逐过程命令中遇到用户设置的断点,程序运行将被挂起。在逐过程命令执行完毕后,所有窗口中的信息才会被更新。
a.跳跃(Step Over)(F10)
调试菜单中的跳跃命令会使程序不进入子程序运行,直到当前函数结束。如果遇到用户设置的断点,程序运行将被挂起。当程序处在最外层(如主函数)时,此时执行跳出命令,程序将继续运行,直到遇到一个断点或被用户停止。在该命令执行完成后,所有窗口中的信息都将更新。
b.汇编语言逐过程(Step Into ASM)(Alt+F11)
调试菜单中的逐过程命令只执行一条指令。如果此条指令包含一个函数调用/子程序调用,该函数/子程序也会同时执行。如果在逐过程命令中遇到用户设置的断点,程序运行将被挂起。在逐过程命令执行完毕后,所有窗口中的信息才会被更新。
c. 汇编语言跳出(Step Over ASM)(Alt+F10)
调试菜单中的跳出命令会使子函数程序一直运行,直到当前函数的汇编语言结束。如果遇到用户设置的断点,程序运行将被挂起。当程序处在最外层(如主函数)时,此时执行跳出命令,程序将继续运行,直到遇到一个断点或被用户停止。在该命令执行完成后,所有窗口中的信息都将更新。
d.跳出(Step Out)(Ctrl+F11)
调试菜单中的跳出命令会使在子函数程序一直运行,直到当前函数的结束。如果遇到用户设置的断点,程序运行将被挂起。当程序处在最外层(如主函数)时,此时执行跳出命令,程序将继续运行,直到遇到一个断点或被用户停止。在该命令执行完成后,所有窗口中的信息都将更新。
e.运行到断点处(Run To Cursor)
调试菜单中的运行到断点处命令,将使程序运行到源代码的断点处停止。
f.运行到光标处(Run To Cursor)
调试菜单中的运行到光标处命令,将使程序运行到源代码窗口中光标指示的语句处停止。此时如果遇到用户的断点,程序的运行将不会被挂起。如果程序运行永远达不到光标指示处的语句,程序将一直继续运行,直到被用户停止。当此命令结束后,所有窗口中的信息都将更新。由于此命令是与光标位置有关,所以只有当源代码窗口激活时才有效。
添加函数定义#ifdef USE_FULL_ASSERT
/**
* @brief Reports the name of the source file and the source line number
* where the assert_param error has occurred.
* @param file: pointer to the source file name
* @param line: assert_param error line source number
* @retval None
*/
void assert_failed(uint8_t* file, uint32_t line)
{
/* User can add his own implementation to report the file name and line number,
ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
/* Infinite loop */
while (1)
{
}
}
#endif
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)