|
楼主 |
发表于 2011-10-22 05:06:09
|
显示全部楼层
应大伙的要求,我做了一个Q_Shell的Demo工程(stm32f103VE,MDK4.x,串口1,超级终端,波特率115200),
演示了如何调试main.c中注_册的函数和变量以及如何存取寄存器。大伙可以直接拿来试用,并
可以作为一个移植的参考。
main.c中的内容如下:
#include "Uart.h"
#include "Q_Shell.h"
unsigned char Var1;
unsigned short Var2;
unsigned int Var3;
QSH_VAR_REG(Var1,"unsigned char Var1","u8");
QSH_VAR_REG(Var2,"unsigned char Var2","u16");
QSH_VAR_REG(Var3,"unsigned char Var3","u32");
unsigned int Add(unsigned a,unsigned b)
{
return (a+b);
}
QSH_FUN_REG(Add, "unsigned int Add(unsigned a,unsigned b)");
unsigned int PutString(char *Str)
{
if(*Str=='\0')
return 0;
printf("%s\r\n",Str);
return 1;
}
QSH_FUN_REG(PutString, "unsigned int PutString(char *Str)");
int main(void)
{
Var1=1;
Var2=2;
Var3=3;
COM1_Init();
while(1);
}
Demo流程:
输入密码123456,密码正确,获得使用Q_Shell的权限;
输入lv(),查看所有注_册变量;
输入lf(),查看所有注_册函数;
输入get(Var1),获得Var1的值;
输入set(Var1),Q_Shell会检查到set的参数个数不为2,故报错;
输入set(Var,99),Q_Shell会检查到Var没有注_册,故报错;
输入set(Var1,99),给Var1赋值99并回显Var1的值;
输入Add(1,2),相当于调用执行Add(1,2),并回显函数返回值;
输入PutString("Happy every day."),相当于调用执行PutString("Happy every day."),并返回函数返回值;
输入read(0xe000e014),读取位于0xe000e014地址处的寄存器的值
输入write(0xe000e014,0xffffeeee),给位于0xe000e014地址处的寄存器的赋值0xffffeeee,并回显
与该Demo流程对应的终端输出截图如下:
(原文件名:调试函数或变量.JPG)
(原文件名:调试寄存器.JPG)
点击此处下载 ourdev_687232VALDA7.rar(文件大小:301K) (原文件名:Q_Shell_Demo.rar) |
|