可以指定编译环境,定制库吗?
现在我使用KEIL MDK 4.12+STM32(Cortex-M3)
看了一下,没有专门的库。能够提供吗?
网站上有提供KEIL3 Cortex-M3的库文件, 你可以试一下 看不可以使用,
如果是CH375 下载CH375LIB CH375LIB\ARM32\FILELIBM_CX
如果是CH374 下载CH374LIB CH374LIB\ARM32\LIBM_CX
Email:ljj@wch.cn Tel:02552638359
为何我编译始终找不到FILE_DATA_BUF的定义啊。
参考ARM32下的exam1和exam6中的例子写了ch375hfm.c也包含了filelibm_CX.lib
急!在线等
ps:我的ch375hfm.c

#include
#include
//#include "ch375.h"

#include "stm32f10x.h"


#define LIB_CFG_FILE_IO 1 /* 文件读写的数据的复制方式,0为"外部子程序",1为"内部复制" */
#define LIB_CFG_INT_EN 0 /* CH375的INT#引脚连接方式,0为"查询方式",1为"中断方式" */



/* 单片机的RAM有限,其中CH375子程序用512字节,剩余RAM部分可以用于文件读写缓冲 */
#define DISK_BASE_BUF_LEN 2048 /* 默认的磁盘数据缓冲区大小为512字节,建议选择为2048甚至4096以支持某些大扇区的U盘,为0则禁止在.H文件中定义缓冲区并由应用程序在pDISK_BASE_BUF中指定 */
#define FILE_DATA_BUF_LEN 0x0800 /* 外部RAM的文件数据缓冲区,缓冲区长度不小于一次读写的数据长度 */
/* 如果准备使用双缓冲区交替读写,那么不要定义FILE_DATA_BUF_LEN,而是在参数中指定缓冲区起址,用CH375FileReadX代替CH375FileRead,用CH375FileWriteX代替CH375FileWrite */


/* PA.1, CH375的中断线INT#引脚,连接CH375的INT#引脚,用于查询中断状态 */

#define CH375_INT_WIRE GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)

#define NO_DEFAULT_CH375_F_ENUM 1 /* 未调用CH375FileEnumer程序故禁止以节约代码 */
#define NO_DEFAULT_CH375_F_QUERY 1 /* 未调用CH375FileQuery程序故禁止以节约代码 */


#include "ch375hfm.h"


//UINT8 FILE_DATA_BUF[FILE_DATA_BUF_LEN];


void mDelay1uS( ) /* 至少延时1uS,根据单片机主频调整 */
{
UINT32 i;
for ( i = 0xff; i != 0; i -- );
}

void CH375_PORT_INIT( ) /* 由于使用通用I/O模块并口读写时序,所以进行初始化 */
{
CH375_Init();

}

void xWriteCH375Cmd( UINT8 mCmd ) /* 外部定义的被CH375程序库调用的子程序,向CH375写命令 */
{
CH375_Wr(0x100|mCmd);
}

void xWriteCH375Data( UINT8 mData ) /* 外部定义的被CH375程序库调用的子程序,向CH375写数据 */
{
CH375_Wr(mData);
}

UINT8 xReadCH375Data( void ) /* 外部定义的被CH375程序库调用的子程序,从CH375读数据 */
{
UINT8 mData;
mData=CH375_Rd();
return( mData );
}


/* 延时指定毫秒时间,根据单片机主频调整,不精确 */
void mDelaymS( UINT8 ms )
{
delay(ms);
}

/* 检查操作状态,如果错误则显示错误代码并停机 */
void mStopIfError( UINT8 iError )
{
if ( iError == ERR_SUCCESS ) return; /* 操作成功 */
printf( "Error: %02X\n", (UINT16)iError ); /* 显示错误 */
while ( 1 ) {
mDelaymS( 100 );
}
}







另:
例子中的main函数我放置在另外一个main.c文件中了。
这人很懒,什么都没留下
FILE_DATA_BUF在头文件中定义的。可能是其他的C文件没有声明导致报错的。你看一下ch375hfm.h这里面有定义。你根据自己的工程修改一下
Email:lht@wch.cn Tel:02589692339
我感觉是

/* 该头文件可以为CH375子程序库分配必要的I/O及内存资源,并产生必要的与硬件有关的目标代码,
如果该文件是被工程项目的多个源程序包含作为头文件,那么应该只允许一个头文件分配资源和产生代码,
除此之外的头文件应该被事先定义CH375HF_NO_CODE,从而禁止该头文件产生重复的目标代码,例如:
#define CH375HF_NO_CODE 1
#include CH375HF?.H
*/
#ifdef CH375HF_NO_CODE


当我仿照示例把main和必要的xReadCH375xxx等命令放到一个c文件中,可以运行。

放到两个文件
ch375hfm.c 包含主程序要实现的命令 xReadCH375xxx等
代码包括
#include "ch375hfm.h"



main.c 包含测试的程序
包括如下代码
#define CH375HF_NO_CODE 1
#include "ch375hfm.h"

就运行不对。

这个问题是不是太低级了?也没找到答案。
这人很懒,什么都没留下
只有登录才能回复,可以选择微信账号登录