STM系统应用设计
可视化的代码跟踪调试。
上一次在终端使用gdb调试了程序,这次采用可视化的软件来调试
可视化前端 Kdbg。 参考网址
可视化前端 Insight。有点older,不推荐。参考网址
基于跨平台多类型代码编辑器VScode。 强烈推荐。
参考网址一.
参考网址二
参考网址三
示例代码:
#include <stdio.h>
void ShowRevertNum(int iNum)
{
while(iNum>10)
{
printf("%d",iNum % 10);
iNum = iNum /10;
}
printf("%d\n",iNum);
}
int main(void)
{
int iNum;
printf("Please input a number:");
scanf("%d",&iNum);
printf("After revert:");
ShowRevertNum(iNum);
}
这个程序是输出倒序数,编译没有问题,但是输入100的时候,输出为010,下面开始调试看看是哪里出现了问题
设置断点
F5调试并输入100:
进入了函数,继续F5调试:
连续F5了三次,这个循环已经循环了一次,应该输出了0
继续F5:
F5后发现,程序没有再次经过
printf("%d",iNum % 10);
iNum = iNum /10;
程序推出了循环,在看看上一次循环完成后,iNum已经除10取余了,iNum=10;现在iNum>10不成立,循环终止,并输出iNum;所以结果输出了010。
那么问题很明显了,循环判断语句iNum>10不适用,我们将它改为iNum>=10就好了。
Proteus仿真运行stm32程序
用Proteus建立一个新的工程
点击P输入LED-“你想要的颜色”
比如输入LED-YELLOW找到黄色的灯
输入RES找到一个负载
连接引线