forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-05-23 e5ec6ffc2fa0c07785c9d797c3fd74fd3031059f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#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