可以指定編譯環(huán)境,定制庫嗎?

現(xiàn)在我使用KEIL MDK 4.12+STM32(Cortex-M3) 看了一下,沒有專門的庫。能夠提供嗎?

網(wǎng)站上有提供KEIL3 Cortex-M3的庫文件, 你可以試一下 看不可以使用, 如果是CH375 下載CH375LIB CH375LIB\ARM32\FILELIBM_CX 如果是CH374 下載CH374LIB CH374LIB\ARM32\LIBM_CX


為何我編譯始終找不到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 /* 文件讀寫的數(shù)據(jù)的復(fù)制方式,0為"外部子程序",1為"內(nèi)部復(fù)制" */ #define LIB_CFG_INT_EN 0 /* CH375的INT#引腳連接方式,0為"查詢方式",1為"中斷方式" */

/* 單片機的RAM有限,其中CH375子程序用512字節(jié),剩余RAM部分可以用于文件讀寫緩沖 */ #define DISK_BASE_BUF_LEN 2048 /* 默認的磁盤數(shù)據(jù)緩沖區(qū)大小為512字節(jié),建議選擇為2048甚至4096以支持某些大扇區(qū)的U盤,為0則禁止在.H文件中定義緩沖區(qū)并由應(yīng)用程序在pDISK_BASE_BUF中指定 */ #define FILE_DATA_BUF_LEN 0x0800 /* 外部RAM的文件數(shù)據(jù)緩沖區(qū),緩沖區(qū)長度不小于一次讀寫的數(shù)據(jù)長度 */ /* 如果準備使用雙緩沖區(qū)交替讀寫,那么不要定義FILE_DATA_BUF_LEN,而是在參數(shù)中指定緩沖區(qū)起址,用CH375FileReadX代替CH375FileRead,用CH375FileWriteX代替CH375FileWrite */

/* PA.1, CH375的中斷線INT#引腳,連接CH375的INT#引腳,用于查詢中斷狀態(tài) */

#define CH375_INT_WIRE GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)

#define NO_DEFAULT_CH375_F_ENUM 1 /* 未調(diào)用CH375FileEnumer程序故禁止以節(jié)約代碼 */ #define NO_DEFAULT_CH375_F_QUERY 1 /* 未調(diào)用CH375FileQuery程序故禁止以節(jié)約代碼 */

#include "ch375hfm.h"

//UINT8 FILE_DATA_BUF[FILE_DATA_BUF_LEN];

void mDelay1uS( ) /* 至少延時1uS,根據(jù)單片機主頻調(diào)整 */ { UINT32 i; for ( i = 0xff; i != 0; i -- ); }

void CH375_PORT_INIT( ) /* 由于使用通用I/O模塊并口讀寫時序,所以進行初始化 */ { CH375_Init();

}

void xWriteCH375Cmd( UINT8 mCmd ) /* 外部定義的被CH375程序庫調(diào)用的子程序,向CH375寫命令 */ { CH375_Wr(0x100|mCmd); }

void xWriteCH375Data( UINT8 mData ) /* 外部定義的被CH375程序庫調(diào)用的子程序,向CH375寫數(shù)據(jù) */ { CH375_Wr(mData); }

UINT8 xReadCH375Data( void ) /* 外部定義的被CH375程序庫調(diào)用的子程序,從CH375讀數(shù)據(jù) */ { UINT8 mData; mData=CH375_Rd(); return( mData ); }

/* 延時指定毫秒時間,根據(jù)單片機主頻調(diào)整,不精確 */ void mDelaymS( UINT8 ms ) { delay(ms); }

/* 檢查操作狀態(tài),如果錯誤則顯示錯誤代碼并停機 */ void mStopIfError( UINT8 iError ) { if ( iError == ERR_SUCCESS ) return; /* 操作成功 */ printf( "Error: %02X\n", (UINT16)iError ); /* 顯示錯誤 */ while ( 1 ) { mDelaymS( 100 ); } }

另: 例子中的main函數(shù)我放置在另外一個main.c文件中了。


FILE_DATA_BUF在頭文件中定義的??赡苁瞧渌腃文件沒有聲明導(dǎo)致報錯的。你看一下ch375hfm.h這里面有定義。你根據(jù)自己的工程修改一下


我感覺是

/* 該頭文件可以為CH375子程序庫分配必要的I/O及內(nèi)存資源,并產(chǎn)生必要的與硬件有關(guān)的目標代碼, 如果該文件是被工程項目的多個源程序包含作為頭文件,那么應(yīng)該只允許一個頭文件分配資源和產(chǎn)生代碼, 除此之外的頭文件應(yīng)該被事先定義CH375HF_NO_CODE,從而禁止該頭文件產(chǎn)生重復(fù)的目標代碼,例如: #define CH375HF_NO_CODE 1 #include CH375HF?.H */ #ifdef CH375HF_NO_CODE

當(dāng)我仿照示例把main和必要的xReadCH375xxx等命令放到一個c文件中,可以運行。

放到兩個文件 ch375hfm.c 包含主程序要實現(xiàn)的命令 xReadCH375xxx等 代碼包括 #include "ch375hfm.h"

main.c 包含測試的程序 包括如下代碼 #define CH375HF_NO_CODE 1 #include "ch375hfm.h"

就運行不對。

這個問題是不是太低級了?也沒找到答案。


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频