#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(uint8_t 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 uint8_t* name; //º¯ÊýÃû(²éÕÒ´®)
|
};
|
//usmart¿ØÖƹÜÀíÆ÷
|
struct _m_usmart_dev
|
{
|
struct _m_usmart_nametab *funs; //º¯ÊýÃûÖ¸Õë
|
|
void (*init)(uint8_t); //³õʼ»¯
|
uint8_t (*cmd_rec)(uint8_t*str); //ʶ±ðº¯ÊýÃû¼°²ÎÊý
|
void (*exe)(void); //Ö´ÐÐ
|
void (*scan)(void); //ɨÃè
|
uint8_t fnum; //º¯ÊýÊýÁ¿
|
uint8_t pnum; //²ÎÊýÊýÁ¿
|
uint8_t id; //º¯Êýid
|
uint8_t sptype; //²ÎÊýÏÔʾÀàÐÍ(·Ç×Ö·û´®²ÎÊý):0,10½øÖÆ;1,16½øÖÆ;
|
u16 parmtype; //²ÎÊýµÄÀàÐÍ
|
uint8_t plentbl[MAX_PARM]; //ÿ¸ö²ÎÊýµÄ³¤¶ÈÔÝ´æ±í
|
uint8_t parm[PARM_LEN]; //º¯ÊýµÄ²ÎÊý
|
uint8_t 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(uint8_t sysclk);//³õʼ»¯
|
uint8_t usmart_cmd_rec(uint8_t*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
|