新手上路
- 积分
- 47
- 金钱
- 47
- 注册时间
- 2011-11-18
- 在线时间
- 3 小时
|

楼主 |
发表于 2011-11-18 18:31:58
|
显示全部楼层
回复【2楼】正点原子:
---------------------------------
绑定已经有思路可以先放一放,问题是不能下载进去(用其他工具可以下载),找了一份源码(用官网STBLLIB.lib做的),
中途出错,要么是COM_Open打不开串口,要么是STBL_Init_BL初始化bootloader失败,不知何解?
作者也联系不上,贴源码出来,请原子指点,另外STBL_GET_ID是读取序列号吗?
using namespace std;
#include "stbllib.h"
#pragma comment(lib,"stbllib.lib")//
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
int ret=0;
int com =pnCOM1;
char filename[512] = "D:\\ss.bin" ;
TARGET_SetComIntType(0);
for(com=pnCOM1;com<9;com++)
{
// 设置串口为COM1-9,波特率为56000 ,8BIT, 校验模式EVEN , 停止位1
SetCOMSettings(com, br56000 ,db8BITS,ptEVEN , sb1BITS );
ret = COM_Open() ;
if(ret == SUCCESS )
break;
}
if(ret == SUCCESS )
cout<< "com" << com <<" open ok [ok]\n" ;
else
{
cout << "com open error \n" ;
return nRetCode ;
}
//打开串口
ret = COM_is_Open() ;
if(ret != TRUE)
{
cout << "com can not open " <<endl ;
return nRetCode;
}
unsigned long id = 0 ;
char size = 8;
//初始化芯片的Bootloader程
ret = STBL_Init_BL() ;
if(ret == SUCCESS )
{
cout ><< "st bootloader init [ok] \n" ;
}
else
{
cout <<"st bootlaoder init error \n" ;
return nRetCode ;
}
//ret = sizeof(id) ;
Commands cmd = { 0};
BYTE vir = 0 ;
//获取Bootloader的版本号,和支持的命令
ret = STBL_GET( &vir , &cmd ) ;
if(ret == SUCCESS )
{
cout << "st bootloader version " << (int )vir /16 << "." << (int )vir%16 <<endl ;
}
else
{
cout ><< "get cmd error \n";
}
//得到芯片的PID
ret = STBL_GET_ID((unsigned char *)&size ,(unsigned char *)&id ) ;
if(ret == SUCCESS )
{
cout << "st pid: "<<id ><<endl ;
}
else
{
cout << "stbl get id error " << ret ;
}
return nRetCode;
}
|
|