如何与STM32CubeIDE和STM32一起使用半主机
使用STM32CubeIDE调试STM32设备时,如何使用半托管?一个使用Nucleo-STM32F401板和OpenOCD的半托管的例子。摘要半主机可以用于使运行在STM32上的代码与主机通信。。。
使用STM32CubeIDE调试STM32设备时,如何使用半托管?
使用Nucleo-STM32F401进行半托管的示例板和OpenOCD。
-
总结
-
使用STM32CubeIDE的半托管
注1:ST-LINK GDB服务器不支持半托管!
注2:如果首选SEGGER J-LINK半托管,请参阅SEGGER文档。
-
更新STM32CubeIDE项目
-
删除默认系统调用.c
-
-
-
更新main.c
-
#包括<stdio.h>extern void initialize_monitor_handles(void);
在main()函数和一些用于半托管的变量的开头添加对initialize_monitor_handles()函数的调用。
int main(void){/*用户代码开始1*/initialize_monitor_handles();char s[50];char*p;FILE*fp;p=s;
在main()函数中添加一些semihosting命令。示例:使用scanf、printf、fopen、fclose和fprintf。
/*无限循环*//*用户代码开始时*/printf(“你好,世界!\n”);fp=fopen(“c:\\dev\\mytest.txt”,“w”);while(1){printf(“输入字符串:\n”);scanf(“%s”,p);printf(”接收字符串:“);printf(p);print f(”\n“);fprintf(fp,p),fprintf“);fclose(fp);HAL_Delay(500);fp=fopen(”c:\dev\\mytest.txt“,”a“);/*用户代码结束,同时*/*用户代码开始3*/}
-
-
更新GCC链接器配置
-
在杂项中添加其他标志“-specs=rdimon.specs”
-
-
建筑
-
-
使用半主机调试
-
创建/更新OpenOCD调试配置
-
注意:ST-LINKGDB服务器不支持半托管。
在调试配置-启动选项卡中添加“monitor arm semihosting enable”初始化命令。
-
-
调试
-
示例:输入“TEST”和“123456”
Open On Chip Debugger 0.10.0+dev-01288-g7491fb4(2020-10-27-17:36)根据GNU GPL v2许可。有关错误报告,请阅读http://openocd.org/doc/doxygen/bugs.html信息:在6666端口上侦听tcl连接信息:在4444端口上侦听telnet连接信息:STLINK V2J37M26(API v2)VID:PID 0483:374B信息:目标电压:3.244649….由于调试请求,半主机已启用目标暂停,当前模式:线程xPSR:0x1000000 pc:0x8000860 msp:0x20018000,半主机配置PLL信息:无法匹配请求的速度8000 kHz,使用4000 kHz信息:无法匹配请求的速度8000 kHz,使用4000 kHz消息:在0x08000194处填充图像部分0,12字节目标由于调试请求而停止,当前模式:线程xPSR:0x01000000 pc:0x08000a04 msp:0x20018000,半托管Hello,World!输入字符串:TEST接收字符串:TEST-输入字符串:123456接收字符串:12345输入字符串:停止调试会话以分析日志文件。
-
分析调试会话
上一篇: 如何使用STM32的PWM和RC滤波器生成正弦波Part1 下一篇: 使用定时器定期触发ADC转换
