#ifndef __USMART_H #define __USMART_H #include "usmart_str.h" ////////////////////////////////////////////////////////////////////////////////// //±¾³ÌÐòÖ»¹©Ñ§Ï°Ê¹Óã¬Î´¾­×÷ÕßÐí¿É£¬²»µÃÓÃÓÚÆäËüÈκÎÓÃ; //ALIENTEK STM32¿ª·¢°å //ÕýµãÔ­×Ó@ALIENTEK //¼¼ÊõÂÛ̳:www.openedv.com //°æ±¾£ºV3.1 //°æÈ¨ËùÓУ¬µÁ°æ±Ø¾¿¡£ //Copyright(C) ÕýµãÔ­×Ó 2011-2021 //All rights reserved //******************************************************************************** //Éý¼¶ËµÃ÷ //V1.4 //Ôö¼ÓÁ˶ԲÎÊýΪstringÀàÐ͵ĺ¯ÊýµÄÖ§³Ö.ÊÊÓ÷¶Î§´ó´óÌá¸ß. //ÓÅ»¯ÁËÄÚ´æÕ¼ÓÃ,¾²Ì¬ÄÚ´æÕ¼ÓÃΪ79¸ö×Ö½Ú@10¸ö²ÎÊý.¶¯Ì¬ÊÊÓ¦Êý×Ö¼°×Ö·û´®³¤¶È //V2.0 //1,ÐÞ¸ÄÁËlistÖ¸Áî,´òÓ¡º¯ÊýµÄÍêÕû±í´ïʽ. //2,Ôö¼ÓÁËidÖ¸Áî,´òӡÿ¸öº¯ÊýµÄÈë¿ÚµØÖ·. //3,ÐÞ¸ÄÁ˲ÎÊýÆ¥Åä,Ö§³Öº¯Êý²ÎÊýµÄµ÷ÓÃ(ÊäÈëÈë¿ÚµØÖ·). //4,Ôö¼ÓÁ˺¯ÊýÃû³¤¶Èºê¶¨Òå. //V2.1 20110707 //1,Ôö¼Ódec,hexÁ½¸öÖ¸Áî,ÓÃÓÚÉèÖòÎÊýÏÔʾ½øÖÆ,¼°Ö´ÐнøÖÆ×ª»». //×¢:µ±dec,hex²»´ø²ÎÊýµÄʱºò,¼´É趨ÏÔʾ²ÎÊý½øÖÆ.µ±ºó¸ú²ÎÊýµÄʱºò,¼´Ö´ÐнøÖÆ×ª»». //Èç:"dec 0XFF" Ôò»á½«0XFFתΪ255,ÓÉ´®¿Ú·µ»Ø. //Èç:"hex 100" Ôò»á½«100תΪ0X64,ÓÉ´®¿Ú·µ»Ø //2,ÐÂÔöusmart_get_cmdnameº¯Êý,ÓÃÓÚ»ñȡָÁîÃû×Ö. //V2.2 20110726 //1,ÐÞÕýÁËvoidÀàÐͲÎÊýµÄ²ÎÊýͳ¼Æ´íÎó. //2,ÐÞ¸ÄÊý¾ÝÏÔʾ¸ñʽĬÈÏΪ16½øÖÆ. //V2.3 20110815 //1,È¥µôÁ˺¯ÊýÃûºó±ØÐë¸ú"("µÄÏÞÖÆ. //2,ÐÞÕýÁË×Ö·û´®²ÎÊýÖв»ÄÜÓÐ"("µÄbug. //3,ÐÞ¸ÄÁ˺¯ÊýĬÈÏÏÔʾ²ÎÊý¸ñʽµÄÐ޸ķ½Ê½. //V2.4 20110905 //1,ÐÞ¸ÄÁËusmart_get_cmdnameº¯Êý,Ôö¼Ó×î´ó²ÎÊý³¤¶ÈÏÞÖÆ.±ÜÃâÁËÊäÈë´íÎó²ÎÊýʱµÄËÀ»úÏÖÏó. //2,Ôö¼ÓUSMART_ENTIM2_SCANºê¶¨Òå,ÓÃÓÚÅäÖÃÊÇ·ñʹÓÃTIM2¶¨Ê±Ö´ÐÐscanº¯Êý. //V2.5 20110930 //1,ÐÞ¸Äusmart_initº¯ÊýΪvoid usmart_init(u8 sysclk),¿ÉÒÔ¸ù¾ÝϵͳƵÂÊ×Ô¶¯É趨ɨÃèʱ¼ä.(¹Ì¶¨100ms) //2,È¥µôÁËusmart_initº¯ÊýÖеÄuart_initº¯Êý,´®¿Ú³õʼ»¯±ØÐëÔÚÍⲿ³õʼ»¯,·½±ãÓû§×ÔÐйÜÀí. //V2.6 20111009 //1,Ôö¼ÓÁËread_addrºÍwrite_addrÁ½¸öº¯Êý.¿ÉÒÔÀûÓÃÕâÁ½¸öº¯Êý¶ÁдÄÚ²¿ÈÎÒâµØÖ·(±ØÐëÊÇÓÐЧµØÖ·).¸ü¼Ó·½±ãµ÷ÊÔ. //2,read_addrºÍwrite_addrÁ½¸öº¯Êý¿ÉÒÔͨ¹ýÉèÖÃUSMART_USE_WRFUNSΪÀ´Ê¹Äܺ͹رÕ. //3,ÐÞ¸ÄÁËusmart_strcmp,ʹÆä¹æ·¶»¯. //V2.7 20111024 //1,ÐÞÕýÁË·µ»ØÖµ16½øÖÆÏÔʾʱ²»»»ÐеÄbug. //2,Ôö¼ÓÁ˺¯ÊýÊÇ·ñÓзµ»ØÖµµÄÅжÏ,Èç¹ûûÓзµ»ØÖµ,Ôò²»»áÏÔʾ.Óзµ»ØÖµÊ±²ÅÏÔʾÆä·µ»ØÖµ. //V2.8 20111116 //1,ÐÞÕýÁËlistµÈ²»´ø²ÎÊýµÄÖ¸Áî·¢Ëͺó¿ÉÄܵ¼ÖÂËÀ»úµÄbug. //V2.9 20120917 //1,ÐÞ¸ÄÁËÐÎÈ磺void*xxx(void)ÀàÐͺ¯Êý²»ÄÜʶ±ðµÄbug¡£ //V3.0 20130425 //1,ÐÂÔöÁË×Ö·û´®²ÎÊý¶ÔתÒå·ûµÄÖ§³Ö¡£ //V3.1 20131120 //1,Ôö¼ÓruntimeϵͳָÁî,¿ÉÒÔÓÃÓÚͳ¼Æº¯ÊýÖ´ÐÐʱ¼ä. //Ó÷¨: //·¢ËÍ:runtime 1 ,Ôò¿ªÆôº¯ÊýÖ´ÐÐʱ¼äͳ¼Æ¹¦ÄÜ //·¢ËÍ:runtime 0 ,Ôò¹Ø±Õº¯ÊýÖ´ÐÐʱ¼äͳ¼Æ¹¦ÄÜ ///runtimeͳ¼Æ¹¦ÄÜ,±ØÐëÉèÖÃ:USMART_ENTIMX_SCAN Ϊ1,²Å¿ÉÒÔʹÓÃ!! ///////////////////////////////////////////////////////////////////////////////////// //USMART×ÊÔ´Õ¼ÓÃÇé¿ö@MDK 3.80A@2.0°æ±¾£º //FLASH:4K~K×Ö½Ú(ͨ¹ýUSMART_USE_HELPºÍUSMART_USE_WRFUNSÉèÖÃ) //SRAM:72×Ö½Ú(×îÉÙµÄÇé¿öÏÂ) //SRAM¼ÆË㹫ʽ: SRAM=PARM_LEN+72-4 ÆäÖÐPARM_LEN±ØÐë´óÓÚµÈÓÚ4. //Ó¦¸Ã±£Ö¤¶ÑÕ»²»Ð¡ÓÚ100¸ö×Ö½Ú. ////////////////////////////////////////////Óû§ÅäÖòÎÊý//////////////////////////////////////////////////// #define MAX_FNAME_LEN 30 //º¯ÊýÃû×î´ó³¤¶È£¬Ó¦¸ÃÉèÖÃΪ²»Ð¡ÓÚ×º¯ÊýÃûµÄ³¤¶È¡£ #define MAX_PARM 10 //×î´óΪ10¸ö²ÎÊý ,Ð޸Ĵ˲ÎÊý,±ØÐëÐÞ¸Äusmart_exeÓëÖ®¶ÔÓ¦. #define PARM_LEN 200 //ËùÓвÎÊýÖ®ºÍµÄ³¤¶È²»³¬¹ýPARM_LEN¸ö×Ö½Ú,×¢Òâ´®¿Ú½ÓÊÕ²¿·ÖÒªÓëÖ®¶ÔÓ¦(²»Ð¡ÓÚPARM_LEN) #define USMART_ENTIMX_SCAN 1 //ʹÓÃTIMµÄ¶¨Ê±ÖжÏÀ´É¨ÃèSCANº¯Êý,Èç¹ûÉèÖÃΪ0,ÐèÒª×Ô¼ºÊµÏÖ¸ôÒ»¶Îʱ¼äɨÃèÒ»´Îscanº¯Êý. //×¢Òâ:Èç¹ûÒªÓÃruntimeͳ¼Æ¹¦ÄÜ,±ØÐëÉèÖÃUSMART_ENTIMX_SCANΪ1!!!! #define USMART_USE_HELP 1 //ʹÓðïÖú£¬¸ÃÖµÉèΪ0£¬¿ÉÒÔ½ÚÊ¡½ü700¸ö×Ö½Ú£¬µ«Êǽ«µ¼ÖÂÎÞ·¨ÏÔʾ°ïÖúÐÅÏ¢¡£ #define USMART_USE_WRFUNS 1 //ʹÓöÁдº¯Êý,ʹÄÜÕâÀï,¿ÉÒÔ¶ÁÈ¡ÈκεØÖ·µÄÖµ,»¹¿ÉÒÔд¼Ä´æÆ÷µÄÖµ. ///////////////////////////////////////////////END/////////////////////////////////////////////////////////// #define USMART_OK 0 //ÎÞ´íÎó #define USMART_FUNCERR 1 //º¯Êý´íÎó #define USMART_PARMERR 2 //²ÎÊý´íÎó #define USMART_PARMOVER 3 //²ÎÊýÒç³ö #define USMART_NOFUNCFIND 4 //δÕÒµ½Æ¥Å亯Êý #define SP_TYPE_DEC 0 //10½øÖƲÎÊýÏÔʾ #define SP_TYPE_HEX 1 //16½øÖƲÎÊýÏÔʾ //º¯ÊýÃûÁбí struct _m_usmart_nametab { void * func; //º¯ÊýÖ¸Õë const u8* name; //º¯ÊýÃû(²éÕÒ´®) }; //usmart¿ØÖƹÜÀíÆ÷ struct _m_usmart_dev { struct _m_usmart_nametab *funs; //º¯ÊýÃûÖ¸Õë void (*init)(u8); //³õʼ»¯ u8 (*cmd_rec)(u8*str); //ʶ±ðº¯ÊýÃû¼°²ÎÊý void (*exe)(void); //Ö´ÐÐ void (*scan)(void); //ɨÃè u8 fnum; //º¯ÊýÊýÁ¿ u8 pnum; //²ÎÊýÊýÁ¿ u8 id; //º¯Êýid u8 sptype; //²ÎÊýÏÔʾÀàÐÍ(·Ç×Ö·û´®²ÎÊý):0,10½øÖÆ;1,16½øÖÆ; u16 parmtype; //²ÎÊýµÄÀàÐÍ u8 plentbl[MAX_PARM]; //ÿ¸ö²ÎÊýµÄ³¤¶ÈÔÝ´æ±í u8 parm[PARM_LEN]; //º¯ÊýµÄ²ÎÊý u8 runtimeflag; //0,²»Í³¼Æº¯ÊýÖ´ÐÐʱ¼ä;1,ͳ¼Æº¯ÊýÖ´ÐÐʱ¼ä,×¢Òâ:´Ë¹¦ÄܱØÐëÔÚUSMART_ENTIMX_SCANʹÄܵÄʱºò,²ÅÓÐÓà u32 runtime; //ÔËÐÐʱ¼ä,µ¥Î»:0.1ms,×î´óÑÓʱʱ¼äΪ¶¨Ê±Æ÷CNTÖµµÄ2±¶*0.1ms }; extern struct _m_usmart_nametab usmart_nametab[]; //ÔÚusmart_config.cÀïÃæ¶¨Òå extern struct _m_usmart_dev usmart_dev; //ÔÚusmart_config.cÀïÃæ¶¨Òå void usmart_init(u8 sysclk);//³õʼ»¯ u8 usmart_cmd_rec(u8*str); //ʶ±ð void usmart_exe(void); //Ö´ÐÐ void usmart_scan(void); //ɨÃè u32 read_addr(u32 addr); //¶Áȡָ¶¨µØÖ·µÄÖµ void write_addr(u32 addr,u32 val);//ÔÚÖ¸¶¨µØÖ·Ð´ÈëÖ¸¶¨µÄÖµ u32 usmart_get_runtime(void); //»ñÈ¡ÔËÐÐʱ¼ä void usmart_reset_runtime(void);//¸´Î»ÔËÐÐʱ¼ä void gp30_set_cycle_time(uint8_t cycle_flag,uint16_t T_cycle_time, uint8_t tof_rate_flag,uint8_t tof_rate); void gp30_set_amp_end(uint8_t detection_hit); #endif