STM32嵌入式应用系统
可视化的代码跟踪调试
人靠衣装马靠鞍,狗配铃铛跑的欢”。利用各种可视化调试前端软件(后端依然依赖gcc、gdb)进行程序代码的跟踪查错,提供工作效率。
Ubuntu上安装KDBG3.0.1
我使用的是ubuntu18版的,安装的时候可以直接输入以下命令进行安装
sudo apt-get install kdbg

输入kdbg即可进入界面


若安装的是最新版本的ubuntu,会提示无法定位软件包 kdbg,这时可以参考一下别人的博客解决问题,在此不再过多陈述https://blog.csdn.net/weixin_43820951/article/details/108817882
可视化前端 Insight。有点older,不推荐
insight概述:
Insight是一个Tcl/Tk编写的gdb的图形用户接口,它是由在Red hat以及Cygnus的工程师写的。Red hat大方的将其捐赠给大众使用,甚至不时的提供人力继续完善它的功能。Insight项目始于1994年,至今已经颇为成熟,它能很好的发挥大部分gdb的强大功能。
编写这个词条的目的,不是为了真的怎样教大家使用这个软件,因为这个软件已经相当的完善,不需要介绍就能轻松上手,主要是为了那些在internet上盲目搜索在linux下c,c++开发用什么调试器好的人提供一个hint!免得他们走歪路,或者甚至看到gdb那种单板机式的调试界面后退缩,甚至从此离开linux的人们.我可以很负责任的说,相对于xxgdb,ddd等基于gdb的的gui调试器来说,insight绝对是最棒,最易用的。
当然在linux下开发c,c++应用程序并非必须用gdb来调试,随着当今java的兴起,很多java IDE都提供c,c++开发功能,著名的有Eclipse(由iBM赞助的java IDE),NetBeans(Sun的java官方IDE),当然在安装eclipse和netbeans的时候你应该选择c/c++开发模块。
安装步骤如下:
在以下界面进行下载,6.6为稳定版
ftp://sourceware.org/pub/insight/releases .

ftp: 从发行目录下载
先下载cvs
sudo apt install cvs

然后再用以下代码
cvs -z9 -d :pserver:anoncvs@sourceware.org:/cvs/src login
[密码 "anoncvs" ]
cvs -z9 -d :pserver:anoncvs@sourceware.org:/cvs/src co -r gdb_6_6-branch insight
CVS:在gdb-6.6的分支下检查一个只读拷贝

好了,安装结束,想使用insight,很简单,直接在命令行中打入insight就可以了,进入insight以後,你可以在他的file菜单下选择要调试的程序名,或者
insight ./foo
基于跨平台多类型代码编辑器VScode
方式一:
桌面上找到应用中心


直接点击安装即可
方法二
- 从vscode官网下载最新版本,deb包下载地址:https://code.visualstudio.com/docs?dv=linux64
使用
wget 下载地址
进行下载
2. 安装:dpkg -i 安装包
打开后界面如下

安装vscode的C\C++插件
1、 在vscode中安装C++的插件,按ctrl+p调出命令行,在上面输入ext install cpptools,或在也可以只输入ext install然后按空格

下面会弹出很多插件在C\C++插件右下面有三个蓝色框的最右边那个就是下载安装插件的。

接下来就是漫长的等待安装过程(因为网络的问题所以漫长)。

安装成功后会有提示要重启vscode,重启后就可以了。
配置调试和编译文件,launch.json和task.json
首先我们在安装好了插件之后,就可以在vscode打开我们的源码文件了并且调试了,不过要注意vscode要调试的话只能打开包含源码文件的文件夹,不能打开单个文件调试。(我新建了一个main.cpp放在了test文件夹中)
代码如下
#include<iostream>
using namespace std;
int main()
{
cout<<"Hello World";
return 0;
}
}

在vscode中打开test文件夹

看到vscode在最左边第四个好像虫子的图标,这个就是调试的,点一下,然后看到最上面有个齿轮那里,点一下出来一个面板,选择刚刚装好的c++插件。

然后就自带生成出来一个.json文件

回到之前的cpp编辑界面,按F5进行调试,会弹出找不到任务"task g++",选择 “Configure Task”

将task的文件内容替换,内容替换如下
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++ build active file",
"command": "/usr/bin/g++",
"args": [
"-g",
"${fileDirname}/test.c",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "/usr/bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Generated task by Debugger"
}
],
"version": "2.0.0"
}
到cpp编辑界面执行程序

点击代码行的数字前面设置断点

按绿色箭头进行调试

Proteus仿真运行stm32程序流水灯实验
创建工程
1.点击创建新工程,输入工程名、安装路径。

选择从选中的模板中创建原理图

选择不创建PCB布版设计

选择创建固件项目,其中:系列选择Cortex-M3,Controller选择STM32F103R6,点击下一步,然后创建成功。

配置原件
创建项目完成后就如下图所示,显示出自己所选的型号,STM32F103R6,系统并以配置好电源。

添加实验所需灯,点击左边P,然后进入下图,在关键字中输入LED-YELLOW,并点击确认选中

添加实验所需电阻,点击左边P,然后进入下图,在关键字中输入RES,并点击确认选中

将灯和电阻分别添加到原理图,然后右键电阻,编辑电阻,设置其阻值为50(默认阻值过大,不更换led电流达不到,亮不起来)。

配置好以上,然后连接电路如下

配置hex文件
进入keil 5中选择Option for Target,然后勾选Create HEX file,生成hex文件

配置芯片
双击stm32f103r6芯片,然后进入Program File 选择刚才生成的hex文件,并配置Crystal Frequency改成8M(设置晶振为8M)

实验结果


1150

被折叠的 条评论
为什么被折叠?



