Keil4 CH375HFM.h 报错

我把官网上的CH375LIB\ARM32\FILELIBM_KL\CH375HFM.h添加到我的C文件后,编译时报错“..\RUN\FCU6D.axf: Error: L6366E: CH375MAI.O attributes are not compatible with the provided cpu and fpu attributes .”

“..\RUN\FCU6D.axf: Error: L6242E: Cannot link object CH375MAI.O as its attributes are incompatible with the image attributes.”

请教这是什么原因?

这应该是你的库用错了,需要根据你的内核指令、编译器以及数据格式来确定库的版本。一般STM32使用的是

FILELIBM_CX: 增强版U盘文件级子程序库,KEIL V3.11,小端数据格式,Cortex-M3内核指令



我用串口控制CH375B,能不能用串口助手模拟单片机发指令给CH375B,CH375B根据收到的指令进行相应的回复呢?还有这种指令流该怎么写,比如读CMD_GetVer,是不是0x57,0xAB,0x0A就可以了


我加了FILELIBM_CX里面的CH375HFM.h后,编译的时候报错

“..\RUN\FCU6D.axf: Error: L6218E: Undefined symbol xReadCH375Cmd (referred from main.o).”

“..\RUN\FCU6D.axf: Error: L6218E: Undefined symbol xReadCH375Data (referred from main.o).”

“..\RUN\FCU6D.axf: Error: L6218E: Undefined symbol xWriteCH375Cmd (referred from main.o).”

“..\RUN\FCU6D.axf: Error: L6218E: Undefined symbol xWriteCH375Data (referred from CH375MAI.O).”

请问我还要作一下什么处理就可以了?



CH375串口是9位数据模式的,最高位用来区分是数据还是命令的。也没有同步码,不能像你那样直接发。


需要你来定义外部的接口读写函数,因为库里面会用到这几个函数。


请问“CH375HFM.h”库里面的函数哪里可以找到详细的说明,比如我调用了“CH375Init()”,我不清楚对CH375作了一些什么操作,能有一个说明就好了,我调用CH375Init(),编译没有问题,但调试的时候程序就死在这里了,我不知道为什么?


CH375LibInit()这个函数是初始化CH375芯片,具体说明你可以参考一下CH375EVT里面的CH375HF.PDF(U盘文件级子程序库说明文档)。最好在这个函数之前做一下测试命令确保通讯接口正常。

xWriteCH375Cmd(CMD_CHECK_EXIST);    
xWriteCH375Data(0x55);
i = xReadCH375Data();



现在我写xWriteCH375Cmd(CMD_GET_IC_VER)会返回B7,但是

xWriteCH375Cmd(CMD_CHECK_EXIST);    
xWriteCH375Data(0x55);
i = xReadCH375Data();

就没有回复了,我的硬件接法是TXD,RXD,GND,我发同步码0x57,0xAB就会回复0x5F,不发同步码只发xWriteCH375Cmd(CMD_GET_IC_VER)返回B7,CH375B有回复说明它能和单片机通信上了,但我试别的指令回复就不是我想要的了,不知是什么原因?



CH375串口是9位数据模式的,最高位用来区分是数据还是命令的。也没有同步码,不能像你那样直接发。你可以参考一下下面的代码:
void CH375_PORT_INIT( ) {
    SCON = 0xD0; // 设置串口为9位数据
    PCON = 0x80;
    TMOD = 0x20;
    TH1 = 0xf3;  // 24MHz晶振, 9600bps
    TR1 = 1;
    TI = 1;
//  RI = 0;
//设置波特率和其它串口参数
}

void xWriteCH375Cmd( UINT8 mCmd ) {
    TI = 0;
    TB8 = 1;
    SBUF = mCmd;
    while ( TI == 0 );
}

void xWriteCH375Data( UINT8 mData ) {
    TI = 0;
    TB8 = 0;
    SBUF = mData;
    while ( TI == 0 );
}

UINT8 xReadCH375Data( void ) {
    while ( RI == 0 );
    RI = 0;
    return( SBUF );
}


只有登录才能回复,可以选择微信账号登录