精简项目

删除了不需要的文件,并整理了文件夹
This commit is contained in:
Qiea
2024-11-08 21:35:04 +08:00
parent 46403a5c96
commit 27b41dcd56
251 changed files with 206 additions and 42904 deletions

63
PORTING/USMART/readme.txt Normal file
View File

@@ -0,0 +1,63 @@
USMART V3.1
USMART<52><54><EFBFBD><EFBFBD>ALIENTEK<45><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ɵĴ<C9B5><C4B4>ڵ<EFBFBD><DAB5>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><CDA8> <20><>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>ó<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD>,<2C><>ִ<EFBFBD><D6B4>.<2E><><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><D6A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(10/16<31><36><EFBFBD><EFBFBD>)<29><><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>),<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>10<31><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>֧<EFBFBD>ֺ<EFBFBD><D6BA><EFBFBD><EFBFBD><EFBFBD> <20><>ֵ<EFBFBD><D6B5>ʾ.V2.1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
hex<EFBFBD><EFBFBD>dec<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>.<2E><><EFBFBD>ǿ<EFBFBD><C7BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ʽ<><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĽ<DDB5><C4BD><EFBFBD>ת<EFBFBD><D7AA>.
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"hex 100" <20><><EFBFBD>ڴ<EFBFBD><DAB4>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD> HEX 0X64.
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"dec 0X64" <20><><EFBFBD>ڴ<EFBFBD><DAB4>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD> DEC 100.
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD>
V1.4
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶Բ<EFBFBD><EFBFBD><EFBFBD>Ϊstring<EFBFBD><EFBFBD><EFBFBD>͵ĺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD>.<2E><><EFBFBD>÷<EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
<EFBFBD>Ż<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>ռ<EFBFBD><EFBFBD>,<2C><>̬<EFBFBD>ڴ<EFBFBD>ռ<EFBFBD><D5BC>Ϊ79<37><39><EFBFBD>ֽ<EFBFBD>@10<31><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E><>̬<EFBFBD><CCAC>Ӧ<EFBFBD><D3A6><EFBFBD>ּ<EFBFBD><D6BC>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V2.0
1,<2C>޸<EFBFBD><DEB8><EFBFBD>listָ<74><D6B8>,<2C><>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ.
2,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>idָ<64><D6B8>,<2C><>ӡÿ<D3A1><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ַ.
3,<2C>޸<EFBFBD><DEB8>˲<EFBFBD><CBB2><EFBFBD>ƥ<EFBFBD><C6A5><>ֺ<EFBFBD><D6BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ַ).
4,<2C><><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱥ궨<C8BA><EAB6A8>.
V2.1 20110707
1,<2C><><EFBFBD><EFBFBD>dec,hex<65><78><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>,<2C><>ִ<EFBFBD>н<EFBFBD><D0BD><EFBFBD>ת<EFBFBD><D7AA>.
ע:<3A><>dec,hex<65><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,<2C><><EFBFBD><EFBFBD><E8B6A8>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,<2C><>ִ<EFBFBD>н<EFBFBD><D0BD><EFBFBD>ת<EFBFBD><D7AA>.
<EFBFBD><EFBFBD>:"dec 0XFF" <20><><EFBFBD>Ὣ0XFFתΪ255,<2C>ɴ<EFBFBD><C9B4>ڷ<EFBFBD><DAB7><EFBFBD>.
<EFBFBD><EFBFBD>:"hex 100" <09><><EFBFBD>Ὣ100תΪ0X64,<2C>ɴ<EFBFBD><C9B4>ڷ<EFBFBD><DAB7><EFBFBD>
2,<2C><><EFBFBD><EFBFBD>usmart_get_cmdname<6D><65><EFBFBD><EFBFBD>,<2C><><EFBFBD>ڻ<EFBFBD>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
V2.2 20110726
1,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>void<69><64><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>ͳ<EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD>.
2,<2C>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ʽĬ<CABD><C4AC>Ϊ16<31><36><EFBFBD><EFBFBD>.
V2.3 20110815
1,ȥ<><C8A5><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
2,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD>"("<22><>bug.
3,<2C>޸<EFBFBD><DEB8>˺<EFBFBD><CBBA><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>޸ķ<DEB8>ʽ.
V2.4 20110905
1,<2C>޸<EFBFBD><DEB8><EFBFBD>usmart_get_cmdname<6D><65><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
2,<2C><><EFBFBD><EFBFBD>USMART_ENTIM2_SCAN<41><EFBFBD><EAB6A8>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>ʹ<EFBFBD><CAB9>TIM2<4D><32>ʱִ<CAB1><D6B4>scan<61><6E><EFBFBD><EFBFBD>.
V2.5 20110930
1,<2C>޸<EFBFBD>usmart_init<69><74><EFBFBD><EFBFBD>Ϊvoid usmart_init(u8 sysclk),<2C><><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD>ϵͳƵ<CDB3><C6B5><EFBFBD>Զ<EFBFBD><D4B6>趨ɨ<E8B6A8><C9A8>ʱ<EFBFBD><CAB1>.(<28>̶<EFBFBD>100ms)
2,ȥ<><C8A5><EFBFBD><EFBFBD>usmart_init<69><74><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>uart_init<69><74><EFBFBD><EFBFBD>,<2C><><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF>ʼ<EFBFBD><CABC>,<2C><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD>.
V2.6 20111009
1,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>read_addr<64><72>write_addr<64><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>ַ).<2E><><EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
2,read_addr<64><72>write_addr<64><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>USMART_USE_WRFUNSΪ<53><CEAA>ʹ<EFBFBD>ܺ͹ر<CDB9>.
3,<2C>޸<EFBFBD><DEB8><EFBFBD>usmart_strcmp,ʹ<><CAB9><EFBFBD><EFBFBD><E6B7B6>.
V2.7 20111024
1,<2C><><EFBFBD><EFBFBD><EFBFBD>˷<EFBFBD><CBB7><EFBFBD>ֵ16<31><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾʱ<CABE><CAB1><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>bug.
2,<2C><><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>з<EFBFBD><D0B7><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ж<EFBFBD>,<2C><><EFBFBD><EFBFBD>û<EFBFBD>з<EFBFBD><D0B7><EFBFBD>ֵ,<2C>򲻻<EFBFBD><F2B2BBBB><EFBFBD>ʾ.<2E>з<EFBFBD><D0B7><EFBFBD>ֵʱ<D6B5><CAB1><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><E4B7B5>ֵ.
V2.8 20111116
1,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>list<73>Ȳ<EFBFBD><C8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD><EFBFBD>ܵ<EFBFBD><DCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bug.
V2.9 20120917
1,<2C>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>磺void*xxx(void)<29><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>bug<75><67>
V3.0 20130425
1,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD>֡<EFBFBD>
V3.1 20131120
1,<2C><><EFBFBD><EFBFBD>runtimeϵͳָ<CDB3><D6B8>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD>ƺ<EFBFBD><C6BA><EFBFBD>ִ<EFBFBD><D6B4>ʱ<EFBFBD><CAB1>.
<EFBFBD>÷<EFBFBD>:
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:runtime 1 ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>ʱ<EFBFBD><CAB1>ͳ<EFBFBD>ƹ<EFBFBD><C6B9><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:runtime 0 ,<2C><><EFBFBD>رպ<D8B1><D5BA><EFBFBD>ִ<EFBFBD><D6B4>ʱ<EFBFBD><CAB1>ͳ<EFBFBD>ƹ<EFBFBD><C6B9><EFBFBD>
runtimeͳ<EFBFBD>ƹ<EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:USMART_ENTIMX_SCAN Ϊ1,<2C>ſ<EFBFBD><C5BF><EFBFBD>ʹ<EFBFBD><CAB9>!!
<09><><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>@ALIENTEK
<09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̳:www.openedv.com
<09>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>:2013/11/20
Copyright(C) ALIENTEK 2011-2021

455
PORTING/USMART/usmart.c Normal file
View File

@@ -0,0 +1,455 @@
#include "usmart.h"
#include "usart.h"
#include "sys.h"
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>ѧϰʹ<CFB0>ã<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD>;
//ALIENTEK STM32<33><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>@ALIENTEK
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̳:www.openedv.com
//<2F><EFBFBD><E6B1BE>V3.1
//<2F><>Ȩ<EFBFBD><C8A8><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE><EFBFBD>
//Copyright(C) <20><><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD> 2011-2021
//All rights reserved
//********************************************************************************
//<2F><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
//V1.4
//<2F><><EFBFBD><EFBFBD><EFBFBD>˶Բ<CBB6><D4B2><EFBFBD>Ϊstring<6E><67><EFBFBD>͵ĺ<CDB5><C4BA><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>.<2E><><EFBFBD>÷<EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//<2F>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD>ڴ<EFBFBD>ռ<EFBFBD><D5BC>,<2C><>̬<EFBFBD>ڴ<EFBFBD>ռ<EFBFBD><D5BC>Ϊ79<37><39><EFBFBD>ֽ<EFBFBD>@10<31><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E><>̬<EFBFBD><CCAC>Ӧ<EFBFBD><D3A6><EFBFBD>ּ<EFBFBD><D6BC>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//V2.0
//1,<2C>޸<EFBFBD><DEB8><EFBFBD>listָ<74><D6B8>,<2C><>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ.
//2,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>idָ<64><D6B8>,<2C><>ӡÿ<D3A1><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ַ.
//3,<2C>޸<EFBFBD><DEB8>˲<EFBFBD><CBB2><EFBFBD>ƥ<EFBFBD><C6A5><>ֺ<EFBFBD><D6BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ַ).
//4,<2C><><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱥ궨<C8BA><EAB6A8>.
//V2.1 20110707
//1,<2C><><EFBFBD><EFBFBD>dec,hex<65><78><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>,<2C><>ִ<EFBFBD>н<EFBFBD><D0BD><EFBFBD>ת<EFBFBD><D7AA>.
//ע:<3A><>dec,hex<65><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,<2C><><EFBFBD><EFBFBD><E8B6A8>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,<2C><>ִ<EFBFBD>н<EFBFBD><D0BD><EFBFBD>ת<EFBFBD><D7AA>.
//<2F><>:"dec 0XFF" <20><><EFBFBD>Ὣ0XFFתΪ255,<2C>ɴ<EFBFBD><C9B4>ڷ<EFBFBD><DAB7><EFBFBD>.
//<2F><>:"hex 100" <09><><EFBFBD>Ὣ100תΪ0X64,<2C>ɴ<EFBFBD><C9B4>ڷ<EFBFBD><DAB7><EFBFBD>
//2,<2C><><EFBFBD><EFBFBD>usmart_get_cmdname<6D><65><EFBFBD><EFBFBD>,<2C><><EFBFBD>ڻ<EFBFBD>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//V2.2 20110726
//1,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>void<69><64><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>ͳ<EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD>.
//2,<2C>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ʽĬ<CABD><C4AC>Ϊ16<31><36><EFBFBD><EFBFBD>.
//V2.3 20110815
//1,ȥ<><C8A5><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//2,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD>"("<22><>bug.
//3,<2C>޸<EFBFBD><DEB8>˺<EFBFBD><CBBA><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>޸ķ<DEB8>ʽ.
//V2.4 20110905
//1,<2C>޸<EFBFBD><DEB8><EFBFBD>usmart_get_cmdname<6D><65><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//2,<2C><><EFBFBD><EFBFBD>USMART_ENTIM2_SCAN<41><EFBFBD><EAB6A8>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>ʹ<EFBFBD><CAB9>TIM2<4D><32>ʱִ<CAB1><D6B4>scan<61><6E><EFBFBD><EFBFBD>.
//V2.5 20110930
//1,<2C>޸<EFBFBD>usmart_init<69><74><EFBFBD><EFBFBD>Ϊvoid usmart_init(u8 sysclk),<2C><><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD>ϵͳƵ<CDB3><C6B5><EFBFBD>Զ<EFBFBD><D4B6>趨ɨ<E8B6A8><C9A8>ʱ<EFBFBD><CAB1>.(<28>̶<EFBFBD>100ms)
//2,ȥ<><C8A5><EFBFBD><EFBFBD>usmart_init<69><74><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>uart_init<69><74><EFBFBD><EFBFBD>,<2C><><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF>ʼ<EFBFBD><CABC>,<2C><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD>.
//V2.6 20111009
//1,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>read_addr<64><72>write_addr<64><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>ַ).<2E><><EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//2,read_addr<64><72>write_addr<64><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>USMART_USE_WRFUNSΪ<53><CEAA>ʹ<EFBFBD>ܺ͹ر<CDB9>.
//3,<2C>޸<EFBFBD><DEB8><EFBFBD>usmart_strcmp,ʹ<><CAB9><EFBFBD><EFBFBD><E6B7B6>.
//V2.7 20111024
//1,<2C><><EFBFBD><EFBFBD><EFBFBD>˷<EFBFBD><CBB7><EFBFBD>ֵ16<31><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾʱ<CABE><CAB1><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>bug.
//2,<2C><><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>з<EFBFBD><D0B7><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ж<EFBFBD>,<2C><><EFBFBD><EFBFBD>û<EFBFBD>з<EFBFBD><D0B7><EFBFBD>ֵ,<2C>򲻻<EFBFBD><F2B2BBBB><EFBFBD>ʾ.<2E>з<EFBFBD><D0B7><EFBFBD>ֵʱ<D6B5><CAB1><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><E4B7B5>ֵ.
//V2.8 20111116
//1,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>list<73>Ȳ<EFBFBD><C8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD><EFBFBD>ܵ<EFBFBD><DCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bug.
//V2.9 20120917
//1,<2C>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>磺void*xxx(void)<29><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>bug<75><67>
//V3.0 20130425
//1,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD>֡<EFBFBD>
//V3.1 20131120
//1,<2C><><EFBFBD><EFBFBD>runtimeϵͳָ<CDB3><D6B8>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD>ƺ<EFBFBD><C6BA><EFBFBD>ִ<EFBFBD><D6B4>ʱ<EFBFBD><CAB1>.
//<2F>÷<EFBFBD>:
//<2F><><EFBFBD><EFBFBD>:runtime 1 ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>ʱ<EFBFBD><CAB1>ͳ<EFBFBD>ƹ<EFBFBD><C6B9><EFBFBD>
//<2F><><EFBFBD><EFBFBD>:runtime 0 ,<2C><><EFBFBD>رպ<D8B1><D5BA><EFBFBD>ִ<EFBFBD><D6B4>ʱ<EFBFBD><CAB1>ͳ<EFBFBD>ƹ<EFBFBD><C6B9><EFBFBD>
///runtimeͳ<65>ƹ<EFBFBD><C6B9><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:USMART_ENTIMX_SCAN Ϊ1,<2C>ſ<EFBFBD><C5BF><EFBFBD>ʹ<EFBFBD><CAB9>!!
//V3.2 20140828
//1,<2C>޸<EFBFBD>usmart_get_aparm<72><6D><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>+/-<2D><><EFBFBD>ŵ<EFBFBD>֧<EFBFBD><D6A7>
//2,<2C>޸<EFBFBD>usmart_str2num<75><6D><EFBFBD><EFBFBD><>ָ<EFBFBD><D6B8><EFBFBD>ת<EFBFBD><D7AA>
//V3.3 20160506
//<2F><><EFBFBD><EFBFBD>usmart_exe<78><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>USMART_ENTIMX_SCANΪ0<CEAA><30>ʱ<EFBFBD>򣬱<EFBFBD><F2A3ACB1><EFBFBD><EFBFBD><EFBFBD>bug
/////////////////////////////////////////////////////////////////////////////////////
TIM_HandleTypeDef TIM4_Handler; //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>
u8 *sys_cmd_tab[]=
{
"?",
"help",
"list",
"id",
"hex",
"dec",
"runtime",
};
//<2F><><EFBFBD><EFBFBD>ϵͳָ<CDB3><D6B8>
//0,<2C>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>;<3B><><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
u8 usmart_sys_cmd_exe(u8 *str)
{
u8 i;
u8 sfname[MAX_FNAME_LEN];//<2F><><EFBFBD>ű<EFBFBD><C5B1>غ<EFBFBD><D8BA><EFBFBD><EFBFBD><EFBFBD>
u8 pnum;
u8 rval;
u32 res;
res=usmart_get_cmdname(str,sfname,&i,MAX_FNAME_LEN);//<2F>õ<EFBFBD>ָ<EFBFBD>ָ<EEBCB0><EFBFBD><EEB3A4>
if(res)return USMART_FUNCERR;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
str+=i;
for(i=0;i<sizeof(sys_cmd_tab)/4;i++)//֧<>ֵ<EFBFBD>ϵͳָ<CDB3><D6B8>
{
if(usmart_strcmp(sfname,sys_cmd_tab[i])==0)break;
}
switch(i)
{
case 0:
case 1://<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
printf("\r\n");
#if USMART_USE_HELP
printf("------------------------USMART V3.3------------------------ \r\n");
printf(" USMART<52><54><EFBFBD><EFBFBD>ALIENTEK<45><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ɵĴ<C9B5><C4B4>ڵ<EFBFBD><DAB5>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><CDA8> \r\n");
printf("<EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κκ<CEBA><CEBA><EFBFBD>,<2C><>ִ<EFBFBD><D6B4>.<2E><><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>\r\n");
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><D6A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(10/16<31><36><EFBFBD><EFBFBD><>ָ<EFBFBD><D6B8><EFBFBD>)<29><><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>\r\n"),
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>),<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>10<31><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>֧<EFBFBD><D6A7>\r\n"),
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>ʾ<>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ù<EFBFBD><C3B9><EFBFBD><>ֽ<EFBFBD><D6BD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.\r\n");
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD>:www.openedv.com\r\n");
printf("USMART<EFBFBD><EFBFBD>7<EFBFBD><EFBFBD>ϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>Сд):\r\n");
printf("?: <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ\r\n");
printf("help: <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ\r\n");
printf("list: <20><><EFBFBD>õĺ<C3B5><C4BA><EFBFBD><EFBFBD>б<EFBFBD>\r\n\n");
printf("id: <20><><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD>ID<49>б<EFBFBD>\r\n\n");
printf("hex: <20><><EFBFBD><EFBFBD>16<31><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ,<2C><><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD>+<2B><><EFBFBD>ּ<EFBFBD>ִ<EFBFBD>н<EFBFBD><D0BD><EFBFBD>ת<EFBFBD><D7AA>\r\n\n");
printf("dec: <20><><EFBFBD><EFBFBD>10<31><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ,<2C><><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD>+<2B><><EFBFBD>ּ<EFBFBD>ִ<EFBFBD>н<EFBFBD><D0BD><EFBFBD>ת<EFBFBD><D7AA>\r\n\n");
printf("runtime:1,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD>ʱ;0,<2C>رպ<D8B1><D5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD>ʱ;\r\n\n");
printf("<EFBFBD><EFBFBD>ճ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Իس<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.\r\n");
printf("--------------------------ALIENTEK------------------------- \r\n");
#else
printf("ָ<EFBFBD><EFBFBD>ʧЧ\r\n");
#endif
break;
case 2://<2F><>ѯָ<D1AF><D6B8>
printf("\r\n");
printf("-------------------------<2D><><EFBFBD><EFBFBD><EFBFBD>嵥--------------------------- \r\n");
for(i=0;i<usmart_dev.fnum;i++)printf("%s\r\n",usmart_dev.funs[i].name);
printf("\r\n");
break;
case 3://<2F><>ѯID
printf("\r\n");
printf("-------------------------<2D><><EFBFBD><EFBFBD> ID --------------------------- \r\n");
for(i=0;i<usmart_dev.fnum;i++)
{
usmart_get_fname((u8*)usmart_dev.funs[i].name,sfname,&pnum,&rval);//<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>غ<EFBFBD><D8BA><EFBFBD><EFBFBD><EFBFBD>
printf("%s id is:\r\n0X%08X\r\n",sfname,usmart_dev.funs[i].func); //<2F><>ʾID
}
printf("\r\n");
break;
case 4://hexָ<78><D6B8>
printf("\r\n");
usmart_get_aparm(str,sfname,&i);
if(i==0)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
i=usmart_str2num(sfname,&res); //<2F><>¼<EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
if(i==0) //<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
printf("HEX:0X%X\r\n",res); //תΪ16<31><36><EFBFBD><EFBFBD>
}else if(i!=4)return USMART_PARMERR;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
else //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><E8B6A8><EFBFBD><EFBFBD>
{
printf("16<EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ!\r\n");
usmart_dev.sptype=SP_TYPE_HEX;
}
}else return USMART_PARMERR; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
printf("\r\n");
break;
case 5://decָ<63><D6B8>
printf("\r\n");
usmart_get_aparm(str,sfname,&i);
if(i==0)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
i=usmart_str2num(sfname,&res); //<2F><>¼<EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
if(i==0) //<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
printf("DEC:%lu\r\n",res); //תΪ10<31><30><EFBFBD><EFBFBD>
}else if(i!=4)return USMART_PARMERR;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
else //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><E8B6A8><EFBFBD><EFBFBD>
{
printf("10<EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ!\r\n");
usmart_dev.sptype=SP_TYPE_DEC;
}
}else return USMART_PARMERR; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
printf("\r\n");
break;
case 6://runtimeָ<65><D6B8>,<2C><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>ʱ<EFBFBD><CAB1>
printf("\r\n");
usmart_get_aparm(str,sfname,&i);
if(i==0)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
i=usmart_str2num(sfname,&res); //<2F><>¼<EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
if(i==0) //<2F><>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ݹ<EFBFBD><DDB9><EFBFBD>
{
if(USMART_ENTIMX_SCAN==0)printf("\r\nError! \r\nTo EN RunTime function,Please set USMART_ENTIMX_SCAN = 1 first!\r\n");//<2F><><EFBFBD><EFBFBD>
else
{
usmart_dev.runtimeflag=res;
if(usmart_dev.runtimeflag)printf("Run Time Calculation ON\r\n");
else printf("Run Time Calculation OFF\r\n");
}
}else return USMART_PARMERR; //δ<><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>߲<EFBFBD><DFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}else return USMART_PARMERR; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
printf("\r\n");
break;
default://<2F>Ƿ<EFBFBD>ָ<EFBFBD><D6B8>
return USMART_FUNCERR;
}
return 0;
}
////////////////////////////////////////////////////////////////////////////////////////
//<2F><>ֲע<D6B2><D7A2>:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>stm32Ϊ<32><CEAA>,<2C><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>mcu,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>޸<EFBFBD>.
//usmart_reset_runtime,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,<2C><>ͬ<EFBFBD><CDAC>ʱ<EFBFBD><CAB1><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>־λһ<CEBB><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><D7B0>ֵΪ<D6B5><CEAA><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޶ȵ<DEB6><C8B5>ӳ<EFBFBD><D3B3><EFBFBD>ʱʱ<CAB1><CAB1>.
//usmart_get_runtime,<2C><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><><CDA8><EFBFBD><EFBFBD>ȡCNTֵ<54><D6B5>ȡ,<2C><><EFBFBD><EFBFBD>usmart<72><74>ͨ<EFBFBD><CDA8><EFBFBD>жϵ<D0B6><CFB5>õĺ<C3B5><C4BA><EFBFBD>,<2C><><EFBFBD>Զ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>жϲ<D0B6><CFB2><EFBFBD><EFBFBD><EFBFBD>Ч,<2C><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>޶<EFBFBD>
//ֻ<><D6BB>ͳ<EFBFBD><CDB3>2<EFBFBD><32>CNT<4E><54>ֵ,Ҳ<><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+<2B><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32><><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:2*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CNT*0.1ms.<2E><>STM32<33><32>˵,<2C><>:13.1s<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:TIM4_IRQHandler<65><72>Timer4_Init,<2C><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>MCU<43>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>Ϊ:10Khz<68><7A><EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD>,<2C><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>װ<EFBFBD>ع<EFBFBD><D8B9><EFBFBD>!!
#if USMART_ENTIMX_SCAN==1
//<2F><>λruntime
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD>MCU<43>Ķ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
void usmart_reset_runtime(void)
{
__HAL_TIM_CLEAR_FLAG(&TIM4_Handler,TIM_FLAG_UPDATE);//<2F><><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־λ
__HAL_TIM_SET_AUTORELOAD(&TIM4_Handler,0XFFFF); //<2F><><EFBFBD><EFBFBD>װ<EFBFBD><D7B0>ֵ<EFBFBD><D6B5><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>
__HAL_TIM_SET_COUNTER(&TIM4_Handler,0); //<2F><><EFBFBD>ն<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>CNT
usmart_dev.runtime=0;
}
//<2F><><EFBFBD><EFBFBD>runtimeʱ<65><CAB1>
//<2F><><EFBFBD><EFBFBD>ֵ:ִ<><D6B4>ʱ<EFBFBD><CAB1>,<2C><>λ:0.1ms,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1>Ϊ<EFBFBD><CEAA>ʱ<EFBFBD><CAB1>CNTֵ<54><D6B5>2<EFBFBD><32>*0.1ms
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD>MCU<43>Ķ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
u32 usmart_get_runtime(void)
{
if(__HAL_TIM_GET_FLAG(&TIM4_Handler,TIM_FLAG_UPDATE)==SET)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
usmart_dev.runtime+=0XFFFF;
}
usmart_dev.runtime+=__HAL_TIM_GET_COUNTER(&TIM4_Handler);
return usmart_dev.runtime; //<2F><><EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD>ֵ
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>USMART<52><54><EFBFBD><EFBFBD>,<2C>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ.
//<2F><>ʱ<EFBFBD><CAB1>4<EFBFBD>жϷ<D0B6><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void TIM4_IRQHandler(void)
{
if(__HAL_TIM_GET_IT_SOURCE(&TIM4_Handler,TIM_IT_UPDATE)==SET)//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
{
usmart_dev.scan(); //ִ<><D6B4>usmartɨ<74><C9A8>
__HAL_TIM_SET_COUNTER(&TIM4_Handler,0);; //<2F><><EFBFBD>ն<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>CNT
__HAL_TIM_SET_AUTORELOAD(&TIM4_Handler,100);//<2F>ָ<EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
__HAL_TIM_CLEAR_IT(&TIM4_Handler, TIM_IT_UPDATE);//<2F><><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־λ
}
//ʹ<>ܶ<EFBFBD>ʱ<EFBFBD><CAB1>4,ʹ<><CAB9><EFBFBD>ж<EFBFBD>.
void Timer4_Init(u16 arr,u16 psc)
{
//<2F><>ʱ<EFBFBD><CAB1>4
__HAL_RCC_TIM4_CLK_ENABLE();
HAL_NVIC_SetPriority(TIM4_IRQn,3,3); //<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>3
HAL_NVIC_EnableIRQ(TIM4_IRQn); //<2F><><EFBFBD><EFBFBD>ITM4<4D>ж<EFBFBD>
TIM4_Handler.Instance=TIM4; //ͨ<>ö<EFBFBD>ʱ<EFBFBD><CAB1>4
TIM4_Handler.Init.Prescaler=psc; //<2F><>Ƶ
TIM4_Handler.Init.CounterMode=TIM_COUNTERMODE_UP; //<2F><><EFBFBD>ϼ<EFBFBD><CFBC><EFBFBD><EFBFBD><EFBFBD>
TIM4_Handler.Init.Period=arr; //<2F>Զ<EFBFBD>װ<EFBFBD><D7B0>ֵ
TIM4_Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;
HAL_TIM_Base_Init(&TIM4_Handler);
HAL_TIM_Base_Start_IT(&TIM4_Handler); //ʹ<>ܶ<EFBFBD>ʱ<EFBFBD><CAB1>4<EFBFBD>Ͷ<EFBFBD>ʱ<EFBFBD><CAB1>4<EFBFBD>ж<EFBFBD>
}
#endif
////////////////////////////////////////////////////////////////////////////////////////
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD><EFBFBD><EFBFBD>
//sysclk:ϵͳʱ<CDB3>ӣ<EFBFBD>Mhz<68><7A>
void usmart_init(u8 sysclk)
{
#if USMART_ENTIMX_SCAN==1
Timer4_Init(1000,(u32)sysclk*100-1);//<2F><>Ƶ,ʱ<><CAB1>Ϊ10K ,100ms<6D>ж<EFBFBD>һ<EFBFBD><D2BB><><D7A2>,<2C><><EFBFBD><EFBFBD>Ƶ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>Ϊ10Khz,<2C>Ժ<EFBFBD>runtime<6D><65>λ(0.1ms)ͬ<><CDAC>.
#endif
usmart_dev.sptype=1; //ʮ<><CAAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
}
//<2F><>str<74>л<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,id,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
//*str:<3A>ַ<EFBFBD><D6B7><EFBFBD>ָ<EFBFBD><D6B8>.
//<2F><><EFBFBD><EFBFBD>ֵ:0,ʶ<><CAB6><EFBFBD>ɹ<EFBFBD>;<3B><><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
u8 usmart_cmd_rec(u8*str)
{
u8 sta,i,rval;//״̬
u8 rpnum,spnum;
u8 rfname[MAX_FNAME_LEN];//<2F>ݴ<EFBFBD><DDB4>ռ<EFBFBD>,<2C><><EFBFBD>ڴ<EFBFBD><DAB4>Ž<EFBFBD><C5BD>յ<EFBFBD><D5B5>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD><EFBFBD>
u8 sfname[MAX_FNAME_LEN];//<2F><><EFBFBD>ű<EFBFBD><C5B1>غ<EFBFBD><D8BA><EFBFBD><EFBFBD><EFBFBD>
sta=usmart_get_fname(str,rfname,&rpnum,&rval);//<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĺ<DDB5><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(sta)return sta;//<2F><><EFBFBD><EFBFBD>
for(i=0;i<usmart_dev.fnum;i++)
{
sta=usmart_get_fname((u8*)usmart_dev.funs[i].name,sfname,&spnum,&rval);//<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>غ<EFBFBD><D8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(sta)return sta;//<2F><><EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(usmart_strcmp(sfname,rfname)==0)//<2F><><EFBFBD><EFBFBD>
{
if(spnum>rpnum)return USMART_PARMERR;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
usmart_dev.id=i;//<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>ID.
break;//<2F><><EFBFBD><EFBFBD>.
}
}
if(i==usmart_dev.fnum)return USMART_NOFUNCFIND; //δ<>ҵ<EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD>
sta=usmart_get_fparam(str,&i); //<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(sta)return sta; //<2F><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD>
usmart_dev.pnum=i; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼
return USMART_OK;
}
//usamrtִ<74>к<EFBFBD><D0BA><EFBFBD>
//<2F>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>дӴ<D0B4><D3B4><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>.
//<2F><><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>10<31><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>֧<EFBFBD><D6A7>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>.<2E><><EFBFBD><EFBFBD><EFBFBD>õĺ<C3B5><C4BA><EFBFBD>.һ<><D2BB>5<EFBFBD><35><EFBFBD><EFBFBD><EFBFBD>ҵIJ<D2B5><C4B2><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ټ<EFBFBD><D9BC><EFBFBD>.
//<2F>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4>ڴ<EFBFBD>ӡִ<D3A1><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E><>:"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2...<2E><><EFBFBD><EFBFBD>N)=<3D><><EFBFBD><EFBFBD>ֵ".<2E><><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>ӡ.
//<2F><><EFBFBD><EFBFBD>ִ<EFBFBD>еĺ<D0B5><C4BA><EFBFBD>û<EFBFBD>з<EFBFBD><D0B7><EFBFBD>ֵ<EFBFBD><D6B5>ʱ<EFBFBD><CAB1>,<2C><><EFBFBD><EFBFBD>ӡ<EFBFBD>ķ<EFBFBD><C4B7><EFBFBD>ֵ<EFBFBD><D6B5>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
void usmart_exe(void)
{
u8 id,i;
u32 res;
u32 temp[MAX_PARM];//<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>,ʹ֧֮<D6AE><D6A7><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
u8 sfname[MAX_FNAME_LEN];//<2F><><EFBFBD>ű<EFBFBD><C5B1>غ<EFBFBD><D8BA><EFBFBD><EFBFBD><EFBFBD>
u8 pnum,rval;
id=usmart_dev.id;
if(id>=usmart_dev.fnum)return;//<2F><>ִ<EFBFBD><D6B4>.
usmart_get_fname((u8*)usmart_dev.funs[id].name,sfname,&pnum,&rval);//<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>غ<EFBFBD><D8BA><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
printf("\r\n%s(",sfname);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫִ<D2AA>еĺ<D0B5><C4BA><EFBFBD><EFBFBD><EFBFBD>
for(i=0;i<pnum;i++)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
if(usmart_dev.parmtype&(1<<i))//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
{
printf("%c",'"');
printf("%s",usmart_dev.parm+usmart_get_parmpos(i));
printf("%c",'"');
temp[i]=(u32)&(usmart_dev.parm[usmart_get_parmpos(i)]);
}else //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
temp[i]=*(u32*)(usmart_dev.parm+usmart_get_parmpos(i));
if(usmart_dev.sptype==SP_TYPE_DEC)printf("%ld",temp[i]);//10<31><30><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD><EFBFBD><EFBFBD>ʾ
else printf("0X%X",temp[i]);//16<31><36><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD><EFBFBD><EFBFBD>ʾ
}
if(i!=pnum-1)printf(",");
}
printf(")");
#if USMART_ENTIMX_SCAN==1
usmart_reset_runtime(); //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>ʼ<EFBFBD><CABC>ʱ
#endif
switch(usmart_dev.pnum)
{
case 0://<2F>޲<EFBFBD><DEB2><EFBFBD>(void<69><64><EFBFBD><EFBFBD>)
res=(*(u32(*)())usmart_dev.funs[id].func)();
break;
case 1://<2F><>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
res=(*(u32(*)())usmart_dev.funs[id].func)(temp[0]);
break;
case 2://<2F><>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
res=(*(u32(*)())usmart_dev.funs[id].func)(temp[0],temp[1]);
break;
case 3://<2F><>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
res=(*(u32(*)())usmart_dev.funs[id].func)(temp[0],temp[1],temp[2]);
break;
case 4://<2F><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
res=(*(u32(*)())usmart_dev.funs[id].func)(temp[0],temp[1],temp[2],temp[3]);
break;
case 5://<2F><>5<EFBFBD><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
res=(*(u32(*)())usmart_dev.funs[id].func)(temp[0],temp[1],temp[2],temp[3],temp[4]);
break;
case 6://<2F><>6<EFBFBD><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
res=(*(u32(*)())usmart_dev.funs[id].func)(temp[0],temp[1],temp[2],temp[3],temp[4],\
temp[5]);
break;
case 7://<2F><>7<EFBFBD><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
res=(*(u32(*)())usmart_dev.funs[id].func)(temp[0],temp[1],temp[2],temp[3],temp[4],\
temp[5],temp[6]);
break;
case 8://<2F><>8<EFBFBD><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
res=(*(u32(*)())usmart_dev.funs[id].func)(temp[0],temp[1],temp[2],temp[3],temp[4],\
temp[5],temp[6],temp[7]);
break;
case 9://<2F><>9<EFBFBD><39><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
res=(*(u32(*)())usmart_dev.funs[id].func)(temp[0],temp[1],temp[2],temp[3],temp[4],\
temp[5],temp[6],temp[7],temp[8]);
break;
case 10://<2F><>10<31><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
res=(*(u32(*)())usmart_dev.funs[id].func)(temp[0],temp[1],temp[2],temp[3],temp[4],\
temp[5],temp[6],temp[7],temp[8],temp[9]);
break;
}
#if USMART_ENTIMX_SCAN==1
usmart_get_runtime();//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>ʱ<EFBFBD><CAB1>
#endif
if(rval==1)//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>ֵ.
{
if(usmart_dev.sptype==SP_TYPE_DEC)printf("=%lu;\r\n",res);//<2F><><EFBFBD><EFBFBD>ִ<EFBFBD>н<EFBFBD><D0BD><EFBFBD>(10<31><30><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD><EFBFBD><EFBFBD>ʾ)
else printf("=0X%X;\r\n",res);//<2F><><EFBFBD><EFBFBD>ִ<EFBFBD>н<EFBFBD><D0BD><EFBFBD>(16<31><36><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD><EFBFBD><EFBFBD>ʾ)
}else printf(";\r\n"); //<2F><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>ֵ,ֱ<><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(usmart_dev.runtimeflag) //<2F><>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>ʱ<EFBFBD><CAB1>
{
printf("Function Run Time:%d.%1dms\r\n",usmart_dev.runtime/10,usmart_dev.runtime%10);//<2F><>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>ʱ<EFBFBD><CAB1>
}
}
//usmartɨ<74><EFBFBD><E8BAAF>
//ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD>øú<C3B8><C3BA><EFBFBD><><CAB5>usmart<72>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD>Ҫÿ<D2AA><C3BF>һ<EFBFBD><D2BB>ʱ<EFBFBD><EFBFBD><E4B1BB><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
//<2F>Լ<EFBFBD>ʱִ<CAB1>дӴ<D0B4><D3B4>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C>Ӷ<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>.
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ALIENTEK<45>û<EFBFBD>,<2C><>USART_RX_STA<54><41>USART_RX_BUF[]<5D><>Ҫ<EFBFBD>û<EFBFBD><C3BB>Լ<EFBFBD>ʵ<EFBFBD><CAB5>
void usmart_scan(void)
{
u8 sta,len;
if(USART_RX_STA&0x8000)//<2F><><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD>
{
len=USART_RX_STA&0x3fff; //<2F>õ<EFBFBD><C3B5>˴ν<CBB4><CEBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
USART_RX_BUF[len]='\0'; //<2F><>ĩβ<C4A9><CEB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
sta=usmart_dev.cmd_rec(USART_RX_BUF);//<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
if(sta==0)usmart_dev.exe(); //ִ<>к<EFBFBD><D0BA><EFBFBD>
else
{
len=usmart_sys_cmd_exe(USART_RX_BUF);
if(len!=USMART_FUNCERR)sta=len;
if(sta)
{
switch(sta)
{
case USMART_FUNCERR:
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!\r\n");
break;
case USMART_PARMERR:
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!\r\n");
break;
case USMART_PARMOVER:
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̫<EFBFBD><EFBFBD>!\r\n");
break;
case USMART_NOFUNCFIND:
printf("δ<EFBFBD>ҵ<EFBFBD>ƥ<EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><EFBFBD><EFBFBD>!\r\n");
break;
}
}
}
USART_RX_STA=0;//״̬<D7B4>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
}
#if USMART_USE_WRFUNS==1 //<2F><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>˶<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
//<2F><>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>ֵ
u32 read_addr(u32 addr)
{
return *(u32*)addr;//
}
//<2F><>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ַд<D6B7><D0B4>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ֵ
void write_addr(u32 addr,u32 val)
{
*(u32*)addr=val;
}
#endif

158
PORTING/USMART/usmart.h Normal file
View File

@@ -0,0 +1,158 @@
#ifndef __USMART_H
#define __USMART_H
#include "usmart_str.h"
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>ѧϰʹ<CFB0>ã<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD>;
//ALIENTEK STM32<33><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>@ALIENTEK
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̳:www.openedv.com
//<2F><EFBFBD><E6B1BE>V3.1
//<2F><>Ȩ<EFBFBD><C8A8><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE><EFBFBD>
//Copyright(C) <20><><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD> 2011-2021
//All rights reserved
//********************************************************************************
//<2F><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
//V1.4
//<2F><><EFBFBD><EFBFBD><EFBFBD>˶Բ<CBB6><D4B2><EFBFBD>Ϊstring<6E><67><EFBFBD>͵ĺ<CDB5><C4BA><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>.<2E><><EFBFBD>÷<EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//<2F>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD>ڴ<EFBFBD>ռ<EFBFBD><D5BC>,<2C><>̬<EFBFBD>ڴ<EFBFBD>ռ<EFBFBD><D5BC>Ϊ79<37><39><EFBFBD>ֽ<EFBFBD>@10<31><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E><>̬<EFBFBD><CCAC>Ӧ<EFBFBD><D3A6><EFBFBD>ּ<EFBFBD><D6BC>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//V2.0
//1,<2C>޸<EFBFBD><DEB8><EFBFBD>listָ<74><D6B8>,<2C><>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ.
//2,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>idָ<64><D6B8>,<2C><>ӡÿ<D3A1><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ַ.
//3,<2C>޸<EFBFBD><DEB8>˲<EFBFBD><CBB2><EFBFBD>ƥ<EFBFBD><C6A5><>ֺ<EFBFBD><D6BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ַ).
//4,<2C><><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱥ궨<C8BA><EAB6A8>.
//V2.1 20110707
//1,<2C><><EFBFBD><EFBFBD>dec,hex<65><78><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>,<2C><>ִ<EFBFBD>н<EFBFBD><D0BD><EFBFBD>ת<EFBFBD><D7AA>.
//ע:<3A><>dec,hex<65><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,<2C><><EFBFBD><EFBFBD><E8B6A8>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,<2C><>ִ<EFBFBD>н<EFBFBD><D0BD><EFBFBD>ת<EFBFBD><D7AA>.
//<2F><>:"dec 0XFF" <20><><EFBFBD>Ὣ0XFFתΪ255,<2C>ɴ<EFBFBD><C9B4>ڷ<EFBFBD><DAB7><EFBFBD>.
//<2F><>:"hex 100" <09><><EFBFBD>Ὣ100תΪ0X64,<2C>ɴ<EFBFBD><C9B4>ڷ<EFBFBD><DAB7><EFBFBD>
//2,<2C><><EFBFBD><EFBFBD>usmart_get_cmdname<6D><65><EFBFBD><EFBFBD>,<2C><><EFBFBD>ڻ<EFBFBD>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//V2.2 20110726
//1,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>void<69><64><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>ͳ<EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD>.
//2,<2C>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ʽĬ<CABD><C4AC>Ϊ16<31><36><EFBFBD><EFBFBD>.
//V2.3 20110815
//1,ȥ<><C8A5><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//2,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD>"("<22><>bug.
//3,<2C>޸<EFBFBD><DEB8>˺<EFBFBD><CBBA><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>޸ķ<DEB8>ʽ.
//V2.4 20110905
//1,<2C>޸<EFBFBD><DEB8><EFBFBD>usmart_get_cmdname<6D><65><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//2,<2C><><EFBFBD><EFBFBD>USMART_ENTIM2_SCAN<41><EFBFBD><EAB6A8>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>ʹ<EFBFBD><CAB9>TIM2<4D><32>ʱִ<CAB1><D6B4>scan<61><6E><EFBFBD><EFBFBD>.
//V2.5 20110930
//1,<2C>޸<EFBFBD>usmart_init<69><74><EFBFBD><EFBFBD>Ϊvoid usmart_init(u8 sysclk),<2C><><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD>ϵͳƵ<CDB3><C6B5><EFBFBD>Զ<EFBFBD><D4B6>趨ɨ<E8B6A8><C9A8>ʱ<EFBFBD><CAB1>.(<28>̶<EFBFBD>100ms)
//2,ȥ<><C8A5><EFBFBD><EFBFBD>usmart_init<69><74><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>uart_init<69><74><EFBFBD><EFBFBD>,<2C><><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF>ʼ<EFBFBD><CABC>,<2C><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD>.
//V2.6 20111009
//1,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>read_addr<64><72>write_addr<64><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>ַ).<2E><><EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//2,read_addr<64><72>write_addr<64><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>USMART_USE_WRFUNSΪ<53><CEAA>ʹ<EFBFBD>ܺ͹ر<CDB9>.
//3,<2C>޸<EFBFBD><DEB8><EFBFBD>usmart_strcmp,ʹ<><CAB9><EFBFBD><EFBFBD><E6B7B6>.
//V2.7 20111024
//1,<2C><><EFBFBD><EFBFBD><EFBFBD>˷<EFBFBD><CBB7><EFBFBD>ֵ16<31><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾʱ<CABE><CAB1><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>bug.
//2,<2C><><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>з<EFBFBD><D0B7><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ж<EFBFBD>,<2C><><EFBFBD><EFBFBD>û<EFBFBD>з<EFBFBD><D0B7><EFBFBD>ֵ,<2C>򲻻<EFBFBD><F2B2BBBB><EFBFBD>ʾ.<2E>з<EFBFBD><D0B7><EFBFBD>ֵʱ<D6B5><CAB1><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><E4B7B5>ֵ.
//V2.8 20111116
//1,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>list<73>Ȳ<EFBFBD><C8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD><EFBFBD>ܵ<EFBFBD><DCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bug.
//V2.9 20120917
//1,<2C>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>磺void*xxx(void)<29><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>bug<75><67>
//V3.0 20130425
//1,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD>֡<EFBFBD>
//V3.1 20131120
//1,<2C><><EFBFBD><EFBFBD>runtimeϵͳָ<CDB3><D6B8>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD>ƺ<EFBFBD><C6BA><EFBFBD>ִ<EFBFBD><D6B4>ʱ<EFBFBD><CAB1>.
//<2F>÷<EFBFBD>:
//<2F><><EFBFBD><EFBFBD>:runtime 1 ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>ʱ<EFBFBD><CAB1>ͳ<EFBFBD>ƹ<EFBFBD><C6B9><EFBFBD>
//<2F><><EFBFBD><EFBFBD>:runtime 0 ,<2C><><EFBFBD>رպ<D8B1><D5BA><EFBFBD>ִ<EFBFBD><D6B4>ʱ<EFBFBD><CAB1>ͳ<EFBFBD>ƹ<EFBFBD><C6B9><EFBFBD>
///runtimeͳ<65>ƹ<EFBFBD><C6B9><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:USMART_ENTIMX_SCAN Ϊ1,<2C>ſ<EFBFBD><C5BF><EFBFBD>ʹ<EFBFBD><CAB9>!!
/////////////////////////////////////////////////////////////////////////////////////
//USMART<52><54>Դռ<D4B4><D5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@MDK 3.80A@2.0<EFBFBD><EFBFBD><EFBFBD>
//FLASH:4K~K<>ֽ<EFBFBD><><CDA8>USMART_USE_HELP<4C><50>USMART_USE_WRFUNS<4E><53><EFBFBD><EFBFBD>)
//SRAM:72<37>ֽ<EFBFBD>(<28><><EFBFBD>ٵ<EFBFBD><D9B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
//SRAM<41><4D><EFBFBD>ʽ: SRAM=PARM_LEN+72-4 <20><><EFBFBD><EFBFBD>PARM_LEN<45><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD>4.
//Ӧ<>ñ<EFBFBD>֤<EFBFBD><D6A4>ջ<EFBFBD><D5BB>С<EFBFBD><D0A1>100<30><30><EFBFBD>ֽ<EFBFBD>.
////////////////////////////////////////////<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>////////////////////////////////////////////////////
#define MAX_FNAME_LEN 30 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󳤶ȣ<F3B3A4B6>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EEB3A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3>ȡ<EFBFBD>
#define MAX_PARM 10 //<2F><><EFBFBD><EFBFBD>Ϊ10<31><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ,<2C>޸Ĵ˲<C4B4><CBB2><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>usmart_exe<78><65>֮<EFBFBD><D6AE>Ӧ.
#define PARM_LEN 200 //<2F><><EFBFBD>в<EFBFBD><D0B2><EFBFBD>֮<EFBFBD>͵ij<CDB5><C4B3>Ȳ<EFBFBD><C8B2><EFBFBD><EFBFBD><EFBFBD>PARM_LEN<45><4E><EFBFBD>ֽ<EFBFBD><><EFBFBD>ڽ<EFBFBD><DABD>ղ<EFBFBD><D5B2><EFBFBD>Ҫ<EFBFBD><D2AA>֮<EFBFBD><D6AE>Ӧ(<28><>С<EFBFBD><D0A1>PARM_LEN)
#define USMART_ENTIMX_SCAN 1 //ʹ<><CAB9>TIM<49>Ķ<EFBFBD>ʱ<EFBFBD>ж<EFBFBD><D0B6><EFBFBD>ɨ<EFBFBD><C9A8>SCAN<41><4E><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0,<2C><>Ҫ<EFBFBD>Լ<EFBFBD>ʵ<EFBFBD>ָ<EFBFBD>һ<EFBFBD><D2BB>ʱ<EFBFBD><CAB1>ɨ<EFBFBD><C9A8>һ<EFBFBD><D2BB>scan<61><6E><EFBFBD><EFBFBD>.
//ע<><D7A2>:<3A><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>runtimeͳ<65>ƹ<EFBFBD><C6B9><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>USMART_ENTIMX_SCANΪ1!!!!
#define USMART_USE_HELP 1 //ʹ<>ð<EFBFBD><C3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD>ʡ<EFBFBD><CAA1>700<30><30><EFBFBD>ֽڣ<D6BD><DAA3><EFBFBD><EFBFBD>ǽ<EFBFBD><C7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޷<EFBFBD><DEB7><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>
#define USMART_USE_WRFUNS 1 //ʹ<>ö<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>,ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>Զ<EFBFBD>ȡ<EFBFBD>κε<CEBA>ַ<EFBFBD><D6B7>ֵ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ֵ.
///////////////////////////////////////////////END///////////////////////////////////////////////////////////
#define USMART_OK 0 //<2F>޴<EFBFBD><DEB4><EFBFBD>
#define USMART_FUNCERR 1 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define USMART_PARMERR 2 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define USMART_PARMOVER 3 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define USMART_NOFUNCFIND 4 //δ<>ҵ<EFBFBD>ƥ<EFBFBD><EFBFBD><E4BAAF>
#define SP_TYPE_DEC 0 //10<31><30><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD><EFBFBD><EFBFBD>ʾ
#define SP_TYPE_HEX 1 //16<31><36><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD><EFBFBD><EFBFBD>ʾ
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
struct _m_usmart_nametab
{
void* func; //<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
const u8* name; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD>Ҵ<EFBFBD>)
};
//usmart<72><74><EFBFBD>ƹ<EFBFBD><C6B9><EFBFBD><EFBFBD><EFBFBD>
struct _m_usmart_dev
{
struct _m_usmart_nametab *funs; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
void (*init)(u8); //<2F><>ʼ<EFBFBD><CABC>
u8 (*cmd_rec)(u8*str); //ʶ<><CAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void (*exe)(void); //ִ<><D6B4>
void (*scan)(void); //ɨ<><C9A8>
u8 fnum; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 pnum; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 id; //<2F><><EFBFBD><EFBFBD>id
u8 sptype; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>(<28><><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>):0,10<31><30><EFBFBD><EFBFBD>;1,16<31><36><EFBFBD><EFBFBD>;
u16 parmtype; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 plentbl[MAX_PARM]; //ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>
u8 parm[PARM_LEN]; //<2F><><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>
u8 runtimeflag; //0,<2C><>ͳ<EFBFBD>ƺ<EFBFBD><C6BA><EFBFBD>ִ<EFBFBD><D6B4>ʱ<EFBFBD><CAB1>;1,ͳ<>ƺ<EFBFBD><C6BA><EFBFBD>ִ<EFBFBD><D6B4>ʱ<EFBFBD><CAB1><><D7A2>:<3A>˹<EFBFBD><CBB9>ܱ<EFBFBD><DCB1><EFBFBD><EFBFBD><EFBFBD>USMART_ENTIMX_SCANʹ<4E>ܵ<EFBFBD>ʱ<EFBFBD><CAB1>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u32 runtime; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,<2C><>λ:0.1ms,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1>Ϊ<EFBFBD><CEAA>ʱ<EFBFBD><CAB1>CNTֵ<54><D6B5>2<EFBFBD><32>*0.1ms
};
extern struct _m_usmart_nametab usmart_nametab[]; //<2F><>usmart_config.c<><63><EFBFBD><EFBFBD><E6B6A8>
extern struct _m_usmart_dev usmart_dev; //<2F><>usmart_config.c<><63><EFBFBD><EFBFBD><E6B6A8>
void usmart_init(u8 sysclk);//<2F><>ʼ<EFBFBD><CABC>
u8 usmart_cmd_rec(u8*str); //ʶ<><CAB6>
void usmart_exe(void); //ִ<><D6B4>
void usmart_scan(void); //ɨ<><C9A8>
u32 read_addr(u32 addr); //<2F><>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>ֵ
void write_addr(u32 addr,u32 val);//<2F><>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ַд<D6B7><D0B4>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ֵ
u32 usmart_get_runtime(void); //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
void usmart_reset_runtime(void);//<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
#endif

View File

@@ -0,0 +1,66 @@
#include "usmart.h"
#include "usmart_str.h"
////////////////////////////<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>///////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD>(<28>û<EFBFBD><C3BB>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD>)
#include "delay.h"
#include "debug.h"
#include "cnn_model.h"
#include "cnn.h"
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD>ʼ<EFBFBD><CABC>(<28>û<EFBFBD><C3BB>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD>)
//<2F>û<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫִ<D2AA>еĺ<D0B5><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҵ<EFBFBD>
struct _m_usmart_nametab usmart_nametab[]=
{
(void*)DEBUG,"void DEBUG(void)",
(void*)SDRAM_USED,"void SDRAM_USED(void)",
(void*)modelmym_init,"float* modelmym_init(char* model_name)",
(void*)modelmym_free,"u8 modelmym_free(char* model_name)",
(void*)model_write,"u8 model_write(char* model_name)",
(void*)model_read,"u8 model_read(char* model_name, u32 start, u32 end, u32 gap)",
(void*)model_switchdata,"u8 model_switchdata(char* model_name)",
(void*)model_info,"u8 model_info(char* model_name)",
(void*)model_dataset,"void model_dataset(void)",
(void*)model_init,"void model_init(void)",
(void*)_cnn_run,"void _cnn_run(void)",
};
///////////////////////////////////END///////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƹ<EFBFBD><C6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
//<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܿغ<DCBF><D8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct _m_usmart_dev usmart_dev=
{
usmart_nametab,
usmart_init,
usmart_cmd_rec,
usmart_exe,
usmart_scan,
sizeof(usmart_nametab)/sizeof(struct _m_usmart_nametab),//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
0, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
0, //<2F><><EFBFBD><EFBFBD>ID
1, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>,0,10<31><30><EFBFBD><EFBFBD>;1,16<31><36><EFBFBD><EFBFBD>
0, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.bitx:,0,<2C><><EFBFBD><EFBFBD>;1,<2C>ַ<EFBFBD><D6B7><EFBFBD>
0, //ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>,<2C><>ҪMAX_PARM<52><4D>0<EFBFBD><30>ʼ<EFBFBD><CABC>
0, //<2F><><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>,<2C><>ҪPARM_LEN<45><4E>0<EFBFBD><30>ʼ<EFBFBD><CABC>
};

426
PORTING/USMART/usmart_str.c Normal file
View File

@@ -0,0 +1,426 @@
#include "usmart_str.h"
#include "usmart.h"
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>ѧϰʹ<CFB0>ã<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD>;
//ALIENTEK STM32<33><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>@ALIENTEK
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̳:www.openedv.com
//<2F><EFBFBD><E6B1BE>V3.1
//<2F><>Ȩ<EFBFBD><C8A8><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE><EFBFBD>
//Copyright(C) <20><><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD> 2011-2021
//All rights reserved
//********************************************************************************
//<2F><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
//V1.4
//<2F><><EFBFBD><EFBFBD><EFBFBD>˶Բ<CBB6><D4B2><EFBFBD>Ϊstring<6E><67><EFBFBD>͵ĺ<CDB5><C4BA><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>.<2E><><EFBFBD>÷<EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//<2F>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD>ڴ<EFBFBD>ռ<EFBFBD><D5BC>,<2C><>̬<EFBFBD>ڴ<EFBFBD>ռ<EFBFBD><D5BC>Ϊ79<37><39><EFBFBD>ֽ<EFBFBD>@10<31><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E><>̬<EFBFBD><CCAC>Ӧ<EFBFBD><D3A6><EFBFBD>ּ<EFBFBD><D6BC>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//V2.0
//1,<2C>޸<EFBFBD><DEB8><EFBFBD>listָ<74><D6B8>,<2C><>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ.
//2,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>idָ<64><D6B8>,<2C><>ӡÿ<D3A1><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ַ.
//3,<2C>޸<EFBFBD><DEB8>˲<EFBFBD><CBB2><EFBFBD>ƥ<EFBFBD><C6A5><>ֺ<EFBFBD><D6BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ַ).
//4,<2C><><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱥ궨<C8BA><EAB6A8>.
//V2.1 20110707
//1,<2C><><EFBFBD><EFBFBD>dec,hex<65><78><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>,<2C><>ִ<EFBFBD>н<EFBFBD><D0BD><EFBFBD>ת<EFBFBD><D7AA>.
//ע:<3A><>dec,hex<65><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,<2C><><EFBFBD><EFBFBD><E8B6A8>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,<2C><>ִ<EFBFBD>н<EFBFBD><D0BD><EFBFBD>ת<EFBFBD><D7AA>.
//<2F><>:"dec 0XFF" <20><><EFBFBD>Ὣ0XFFתΪ255,<2C>ɴ<EFBFBD><C9B4>ڷ<EFBFBD><DAB7><EFBFBD>.
//<2F><>:"hex 100" <09><><EFBFBD>Ὣ100תΪ0X64,<2C>ɴ<EFBFBD><C9B4>ڷ<EFBFBD><DAB7><EFBFBD>
//2,<2C><><EFBFBD><EFBFBD>usmart_get_cmdname<6D><65><EFBFBD><EFBFBD>,<2C><><EFBFBD>ڻ<EFBFBD>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//V2.2 20110726
//1,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>void<69><64><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>ͳ<EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD>.
//2,<2C>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ʽĬ<CABD><C4AC>Ϊ16<31><36><EFBFBD><EFBFBD>.
//V2.3 20110815
//1,ȥ<><C8A5><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//2,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD>"("<22><>bug.
//3,<2C>޸<EFBFBD><DEB8>˺<EFBFBD><CBBA><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>޸ķ<DEB8>ʽ.
//V2.4 20110905
//1,<2C>޸<EFBFBD><DEB8><EFBFBD>usmart_get_cmdname<6D><65><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//2,<2C><><EFBFBD><EFBFBD>USMART_ENTIM2_SCAN<41><EFBFBD><EAB6A8>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>ʹ<EFBFBD><CAB9>TIM2<4D><32>ʱִ<CAB1><D6B4>scan<61><6E><EFBFBD><EFBFBD>.
//V2.5 20110930
//1,<2C>޸<EFBFBD>usmart_init<69><74><EFBFBD><EFBFBD>Ϊvoid usmart_init(u8 sysclk),<2C><><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD>ϵͳƵ<CDB3><C6B5><EFBFBD>Զ<EFBFBD><D4B6>趨ɨ<E8B6A8><C9A8>ʱ<EFBFBD><CAB1>.(<28>̶<EFBFBD>100ms)
//2,ȥ<><C8A5><EFBFBD><EFBFBD>usmart_init<69><74><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>uart_init<69><74><EFBFBD><EFBFBD>,<2C><><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF>ʼ<EFBFBD><CABC>,<2C><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD>.
//V2.6 20111009
//1,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>read_addr<64><72>write_addr<64><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>ַ).<2E><><EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//2,read_addr<64><72>write_addr<64><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>USMART_USE_WRFUNSΪ<53><CEAA>ʹ<EFBFBD>ܺ͹ر<CDB9>.
//3,<2C>޸<EFBFBD><DEB8><EFBFBD>usmart_strcmp,ʹ<><CAB9><EFBFBD><EFBFBD><E6B7B6>.
//V2.7 20111024
//1,<2C><><EFBFBD><EFBFBD><EFBFBD>˷<EFBFBD><CBB7><EFBFBD>ֵ16<31><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾʱ<CABE><CAB1><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>bug.
//2,<2C><><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>з<EFBFBD><D0B7><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ж<EFBFBD>,<2C><><EFBFBD><EFBFBD>û<EFBFBD>з<EFBFBD><D0B7><EFBFBD>ֵ,<2C>򲻻<EFBFBD><F2B2BBBB><EFBFBD>ʾ.<2E>з<EFBFBD><D0B7><EFBFBD>ֵʱ<D6B5><CAB1><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><E4B7B5>ֵ.
//V2.8 20111116
//1,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>list<73>Ȳ<EFBFBD><C8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD><EFBFBD>ܵ<EFBFBD><DCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bug.
//V2.9 20120917
//1,<2C>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>磺void*xxx(void)<29><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>bug<75><67>
//V3.0 20130425
//1,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD>֡<EFBFBD>
//V3.1 20131120
//1,<2C><><EFBFBD><EFBFBD>runtimeϵͳָ<CDB3><D6B8>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD>ƺ<EFBFBD><C6BA><EFBFBD>ִ<EFBFBD><D6B4>ʱ<EFBFBD><CAB1>.
//<2F>÷<EFBFBD>:
//<2F><><EFBFBD><EFBFBD>:runtime 1 ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>ʱ<EFBFBD><CAB1>ͳ<EFBFBD>ƹ<EFBFBD><C6B9><EFBFBD>
//<2F><><EFBFBD><EFBFBD>:runtime 0 ,<2C><><EFBFBD>رպ<D8B1><D5BA><EFBFBD>ִ<EFBFBD><D6B4>ʱ<EFBFBD><CAB1>ͳ<EFBFBD>ƹ<EFBFBD><C6B9><EFBFBD>
///runtimeͳ<65>ƹ<EFBFBD><C6B9><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:USMART_ENTIMX_SCAN Ϊ1,<2C>ſ<EFBFBD><C5BF><EFBFBD>ʹ<EFBFBD><CAB9>!!
/////////////////////////////////////////////////////////////////////////////////////
//<2F>Ա<EFBFBD><D4B1>ַ<EFBFBD><D6B7><EFBFBD>str1<72><31>str2
//*str1:<3A>ַ<EFBFBD><D6B7><EFBFBD><31><D6B8>
//*str2:<3A>ַ<EFBFBD><D6B7><EFBFBD><32><D6B8>
//<2F><><EFBFBD><EFBFBD>ֵ:0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
u8 usmart_strcmp(u8 *str1,u8 *str2)
{
while(1)
{
if(*str1!=*str2)return 1;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(*str1=='\0')break;//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
str1++;
str2++;
}
return 0;//<2F><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
//<2F><>str1<72><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>copy<70><79>str2
//*str1:<3A>ַ<EFBFBD><D6B7><EFBFBD><31><D6B8>
//*str2:<3A>ַ<EFBFBD><D6B7><EFBFBD><32><D6B8>
void usmart_strcopy(u8*str1,u8 *str2)
{
while(1)
{
*str2=*str1; //<2F><><EFBFBD><EFBFBD>
if(*str1=='\0')break;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
str1++;
str2++;
}
}
//<2F>õ<EFBFBD><C3B5>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>(<28>ֽ<EFBFBD>)
//*str:<3A>ַ<EFBFBD><D6B7><EFBFBD>ָ<EFBFBD><D6B8>
//<2F><><EFBFBD><EFBFBD>ֵ:<3A>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
u8 usmart_strlen(u8*str)
{
u8 len=0;
while(1)
{
if(*str=='\0')break;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
len++;
str++;
}
return len;
}
//m^n<><6E><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:m^n<>η<EFBFBD>
u32 usmart_pow(u8 m,u8 n)
{
u32 result=1;
while(n--)result*=m;
return result;
}
//<2F><><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>תΪ<D7AA><CEAA><EFBFBD><EFBFBD>
//֧<><D6A7>16<31><36><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>,<2C><><EFBFBD><EFBFBD>16<31><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD>д<EFBFBD><D0B4>,<2C>Ҹ<EFBFBD>ʽΪ<CABD><CEAA>0X<30><58>ͷ<EFBFBD><CDB7>.
//<2F><>֧<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>
//*str:<3A><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ָ<EFBFBD><D6B8>
//*res:ת<><D7AA><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD>ַ.
//<2F><><EFBFBD><EFBFBD>ֵ:0<><30><EFBFBD>ɹ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//1,<2C><><EFBFBD>ݸ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>.2,16<31><36><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>Ϊ0.3,<2C><>ʼ<EFBFBD><CABC>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>.4,ʮ<><CAAE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>Ϊ0.
u8 usmart_str2num(u8*str,u32 *res)
{
u32 t;
u8 bnum=0; //<2F><><EFBFBD>ֵ<EFBFBD>λ<EFBFBD><CEBB>
u8 *p;
u8 hexdec=10;//Ĭ<><C4AC>Ϊʮ<CEAA><CAAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
p=str;
*res=0;//<2F><><EFBFBD><EFBFBD>.
while(1)
{
if((*p<='9'&&*p>='0')||(*p<='F'&&*p>='A')||(*p=='X'&&bnum==1))//<2F><><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD>
{
if(*p>='A')hexdec=16; //<2F>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>ĸ,Ϊ16<31><36><EFBFBD>Ƹ<EFBFBD>ʽ.
bnum++; //λ<><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
}else if(*p=='\0')break; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C>˳<EFBFBD>.
else return 1; //<2F><>ȫ<EFBFBD><C8AB>ʮ<EFBFBD><CAAE><EFBFBD>ƻ<EFBFBD><C6BB><EFBFBD>16<31><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
p++;
}
p=str; //<2F><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD>ĵ<EFBFBD>ַ.
if(hexdec==16) //16<31><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
if(bnum<3)return 2; //λ<><CEBB>С<EFBFBD><D0A1>3<EFBFBD><33>ֱ<EFBFBD><D6B1><EFBFBD>˳<EFBFBD>.<2E><>Ϊ0X<30><58>ռ<EFBFBD><D5BC>2<EFBFBD><32>,<2C><><EFBFBD><EFBFBD>0X<30><58><EFBFBD><EFBFBD><E6B2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷǷ<DDB7>.
if(*p=='0' && (*(p+1)=='X'))//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'0X'<27><>ͷ.
{
p+=2; //ƫ<>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ.
bnum-=2;//<2F><>ȥƫ<C8A5><C6AB><EFBFBD><EFBFBD>
}else return 3;//<2F><>ʼͷ<CABC>ĸ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
}else if(bnum==0)return 4;//λ<><CEBB>Ϊ0<CEAA><30>ֱ<EFBFBD><D6B1><EFBFBD>˳<EFBFBD>.
while(1)
{
if(bnum)bnum--;
if(*p<='9'&&*p>='0')t=*p-'0'; //<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ֵ<EFBFBD>ֵ
else t=*p-'A'+10; //<2F>õ<EFBFBD>A~F<><46>Ӧ<EFBFBD><D3A6>ֵ
*res+=t*usmart_pow(hexdec,bnum);
p++;
if(*p=='\0')break;//<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
}
return 0;//<2F>ɹ<EFBFBD>ת<EFBFBD><D7AA>
}
//<2F>õ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>
//*str:Դ<>ַ<EFBFBD><D6B7><EFBFBD>
//*cmdname:ָ<><D6B8><EFBFBD><EFBFBD>
//*nlen:ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//maxlen:<3A><><EFBFBD>󳤶<EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><EFBFBD><EEB2BB><EFBFBD><EFBFBD>̫<EFBFBD><CCAB><EFBFBD><EFBFBD>)
//<2F><><EFBFBD><EFBFBD>ֵ:0,<2C>ɹ<EFBFBD>;<3B><><EFBFBD><EFBFBD><><CAA7>.
u8 usmart_get_cmdname(u8*str,u8*cmdname,u8 *nlen,u8 maxlen)
{
*nlen=0;
while(*str!=' '&&*str!='\0') //<2F>ҵ<EFBFBD><D2B5>ո<EFBFBD><D5B8><EFBFBD><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
*cmdname=*str;
str++;
cmdname++;
(*nlen)++;//ͳ<><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB3A4>
if(*nlen>=maxlen)return 1;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
}
*cmdname='\0';//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
//<2F><>ȡ<EFBFBD><C8A1>һ<EFBFBD><D2BB><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD><D0BC>кܶ<D0BA><DCB6>ո<EFBFBD><D5B8><EFBFBD>ʱ<EFBFBD>򣬴˺<F2A3ACB4><CBBA><EFBFBD>ֱ<EFBFBD>Ӻ<EFBFBD><D3BA>Կո<D4BF><D5B8><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ո<EFBFBD>֮<EFBFBD><D6AE><EFBFBD>ĵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
//str:<3A>ַ<EFBFBD><D6B7><EFBFBD>ָ<EFBFBD><D6B8>
//<2F><><EFBFBD><EFBFBD>ֵ:<3A><>һ<EFBFBD><D2BB><EFBFBD>ַ<EFBFBD>
u8 usmart_search_nextc(u8* str)
{
str++;
while(*str==' '&&str!='\0')str++;
return *str;
}
//<2F><>str<74>еõ<D0B5><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//*str:Դ<>ַ<EFBFBD><D6B7><EFBFBD>ָ<EFBFBD><D6B8>
//*fname:<3A><>ȡ<EFBFBD><C8A1><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
//*pnum:<3A><><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//*rval:<3A>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ֵ(0,<2C><><EFBFBD><EFBFBD>Ҫ;1,<2C><>Ҫ)
//<2F><><EFBFBD><EFBFBD>ֵ:0,<2C>ɹ<EFBFBD>;<3B><><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
u8 usmart_get_fname(u8*str,u8*fname,u8 *pnum,u8 *rval)
{
u8 res;
u8 fover=0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 *strtemp;
u8 offset=0;
u8 parmnum=0;
u8 temp=1;
u8 fpname[6];//void+X+'/0'
u8 fplcnt=0; //<2F><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD>
u8 pcnt=0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 nchar;
//<2F>жϺ<D0B6><CFBA><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>з<EFBFBD><D0B7><EFBFBD>ֵ
strtemp=str;
while(*strtemp!='\0')//û<>н<EFBFBD><D0BD><EFBFBD>
{
if(*strtemp!=' '&&(pcnt&0X7F)<5)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼5<C2BC><35><EFBFBD>ַ<EFBFBD>
{
if(pcnt==0)pcnt|=0X80;//<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>λ,<2C><><EFBFBD>ǿ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>շ<EFBFBD><D5B7><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
if(((pcnt&0x7f)==4)&&(*strtemp!='*'))break;//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ַ<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*
fpname[pcnt&0x7f]=*strtemp;//<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
pcnt++;
}else if(pcnt==0X85)break;
strtemp++;
}
if(pcnt)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
fpname[pcnt&0x7f]='\0';//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(usmart_strcmp(fpname,"void")==0)*rval=0;//<2F><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>ֵ
else *rval=1; //<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>ֵ
pcnt=0;
}
res=0;
strtemp=str;
while(*strtemp!='('&&*strtemp!='\0') //<2F>˴<EFBFBD><CBB4><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼλ<CABC><CEBB>
{
strtemp++;
res++;
if(*strtemp==' '||*strtemp=='*')
{
nchar=usmart_search_nextc(strtemp); //<2F><>ȡ<EFBFBD><C8A1>һ<EFBFBD><D2BB><EFBFBD>ַ<EFBFBD>
if(nchar!='('&&nchar!='*')offset=res; //<2F><><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD><D5B8><EFBFBD>*<2A><>
}
}
strtemp=str;
if(offset)strtemp+=offset+1;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD>ĵط<C4B5>
res=0;
nchar=0;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>־,0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>;1<><31><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>;
while(1)
{
if(*strtemp==0)
{
res=USMART_FUNCERR;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
break;
}else if(*strtemp=='('&&nchar==0)fover++;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
else if(*strtemp==')'&&nchar==0)
{
if(fover)fover--;
else res=USMART_FUNCERR;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><>յ<EFBFBD>'('
if(fover==0)break;//<2F><>ĩβ<C4A9><CEB2>,<2C>˳<EFBFBD>
}else if(*strtemp=='"')nchar=!nchar;
if(fover==0)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
if(*strtemp!=' ')//<2F>ո<EFBFBD><D5B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD><DABA><EFBFBD><EFBFBD><EFBFBD>
{
*fname=*strtemp;//<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
fname++;
}
}else //<2F>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
{
if(*strtemp==',')
{
temp=1; //ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pcnt++;
}else if(*strtemp!=' '&&*strtemp!='(')
{
if(pcnt==0&&fplcnt<5) //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ,Ϊ<>˱<EFBFBD><CBB1><EFBFBD>ͳ<EFBFBD><CDB3>void<69><64><EFBFBD>͵IJ<CDB5><C4B2><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>.
{
fpname[fplcnt]=*strtemp;//<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
fplcnt++;
}
temp++; //<2F>õ<EFBFBD><C3B5><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>(<28>ǿո<C7BF>)
}
if(fover==1&&temp==2)
{
temp++; //<2F><>ֹ<EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>
parmnum++; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
}
}
strtemp++;
}
if(parmnum==1)//ֻ<><D6BB>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
{
fpname[fplcnt]='\0';//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(usmart_strcmp(fpname,"void")==0)parmnum=0;//<2F><><EFBFBD><EFBFBD>Ϊvoid,<2C><>ʾû<CABE>в<EFBFBD><D0B2><EFBFBD>.
}
*pnum=parmnum; //<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*fname='\0'; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return res; //<2F><><EFBFBD><EFBFBD>ִ<EFBFBD>н<EFBFBD><D0BD><EFBFBD>
}
//<2F><>str<74>еõ<D0B5>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>
//*str:Դ<>ַ<EFBFBD><D6B7><EFBFBD>ָ<EFBFBD><D6B8>
//*fparm:<3A><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ָ<EFBFBD><D6B8>
//*ptype:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;1<><31><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>;0XFF<46><46><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:0,<2C>Ѿ<EFBFBD><D1BE>޲<EFBFBD><DEB2><EFBFBD><EFBFBD><EFBFBD>;<3B><><EFBFBD><EFBFBD>,<2C><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>.
u8 usmart_get_aparm(u8 *str,u8 *fparm,u8 *ptype)
{
u8 i=0;
u8 enout=0;
u8 type=0;//Ĭ<><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 string=0; //<2F><><EFBFBD><EFBFBD>str<74>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ڶ<EFBFBD>
while(1)
{
if(*str==','&& string==0)enout=1; //<2F>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD>,Ŀ<><C4BF><EFBFBD><EFBFBD>Ѱ<EFBFBD><D1B0><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ
if((*str==')'||*str=='\0')&&string==0)break;//<2F><><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3><EFBFBD>ʶ<EFBFBD><CAB6>
if(type==0)//Ĭ<><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>
{
if((*str>='0' && *str<='9')||(*str>='a' && *str<='f')||(*str>='A' && *str<='F')||*str=='X'||*str=='x')//<2F><><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD>
{
if(enout)break; //<2F>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><D6B1><EFBFBD>˳<EFBFBD>.
if(*str>='a')*fparm=*str-0X20; //Сдת<D0B4><D7AA>Ϊ<EFBFBD><CEAA>д
else *fparm=*str; //Сд<D0A1><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>ֲ<EFBFBD><D6B2><EFBFBD>
fparm++;
}else if(*str=='"')//<2F>ҵ<EFBFBD><D2B5>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>Ŀ<EFBFBD>ʼ<EFBFBD><CABC>־
{
if(enout)break;//<2F>ҵ<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>",<2C><>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
type=1;
string=1;//<2F>Ǽ<EFBFBD>STRING <20><><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD>
}else if(*str!=' '&&*str!=',')//<2F><><EFBFBD>ַǷ<D6B7><C7B7>ַ<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
type=0XFF;
break;
}
}else//string<6E><67>
{
if(*str=='"')string=0;
if(enout)break; //<2F>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><D6B1><EFBFBD>˳<EFBFBD>.
if(string) //<2F>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD>
{
if(*str=='\\') //<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>)
{
str++; //ƫ<>Ƶ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>,<2C><><EFBFBD><EFBFBD>ʲô<CAB2>ַ<EFBFBD><><D6B1>COPY
i++;
}
*fparm=*str; //Сд<D0A1><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>ֲ<EFBFBD><D6B2><EFBFBD>
fparm++;
}
}
i++;//ƫ<><C6AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
str++;
}
*fparm='\0'; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*ptype=type; //<2F><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return i; //<2F><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
//<2F>õ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ
//num:<3A><>num<75><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>Χ0~9.
//<2F><><EFBFBD><EFBFBD>ֵ:<3A>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ
u8 usmart_get_parmpos(u8 num)
{
u8 temp=0;
u8 i;
for(i=0;i<num;i++)temp+=usmart_dev.plentbl[i];
return temp;
}
//<2F><>str<74>еõ<D0B5><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//str:Դ<>ַ<EFBFBD><D6B7><EFBFBD>;
//parn:<3A><><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD>.0<EFBFBD><EFBFBD>ʾ<EFBFBD>޲<EFBFBD><EFBFBD><EFBFBD> void<69><64><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:0,<2C>ɹ<EFBFBD>;<3B><><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
u8 usmart_get_fparam(u8*str,u8 *parn)
{
u8 i,type;
u32 res;
u8 n=0;
u8 len;
u8 tstr[PARM_LEN+1];//<2F>ֽڳ<D6BD><DAB3>ȵĻ<C8B5><C4BB><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>PARM_LEN<45><4E><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
for(i=0;i<MAX_PARM;i++)usmart_dev.plentbl[i]=0;//<2F><><EFBFBD>ղ<EFBFBD><D5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȱ<EFBFBD>
while(*str!='(')//ƫ<>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD>ĵط<C4B5>
{
str++;
if(*str=='\0')return USMART_FUNCERR;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
str++;//ƫ<>Ƶ<EFBFBD>"("֮<><D6AE><EFBFBD>ĵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֽ<EFBFBD>
while(1)
{
i=usmart_get_aparm(str,tstr,&type); //<2F>õ<EFBFBD><C3B5><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
str+=i; //ƫ<><C6AB>
switch(type)
{
case 0: //<2F><><EFBFBD><EFBFBD>
if(tstr[0]!='\0') //<2F><><EFBFBD>յ<EFBFBD><D5B5>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD>Ч
{
i=usmart_str2num(tstr,&res); //<2F><>¼<EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
if(i)return USMART_PARMERR; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
*(u32*)(usmart_dev.parm+usmart_get_parmpos(n))=res;//<2F><>¼ת<C2BC><D7AA><EFBFBD>ɹ<EFBFBD><C9B9>Ľ<EFBFBD><C4BD><EFBFBD>.
usmart_dev.parmtype&=~(1<<n); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
usmart_dev.plentbl[n]=4; //<2F>ò<EFBFBD><C3B2><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>Ϊ4
n++; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(n>MAX_PARM)return USMART_PARMOVER;//<2F><><EFBFBD><EFBFBD>̫<EFBFBD><CCAB>
}
break;
case 1://<2F>ַ<EFBFBD><D6B7><EFBFBD>
len=usmart_strlen(tstr)+1; //<2F><><EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD><CBBD><EFBFBD><EFBFBD><EFBFBD>'\0'
usmart_strcopy(tstr,&usmart_dev.parm[usmart_get_parmpos(n)]);//<2F><><EFBFBD><EFBFBD>tstr<74><72><EFBFBD>ݵ<EFBFBD>usmart_dev.parm[n]
usmart_dev.parmtype|=1<<n; //<2F><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
usmart_dev.plentbl[n]=len; //<2F>ò<EFBFBD><C3B2><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>Ϊlen
n++;
if(n>MAX_PARM)return USMART_PARMOVER;//<2F><><EFBFBD><EFBFBD>̫<EFBFBD><CCAB>
break;
case 0XFF://<2F><><EFBFBD><EFBFBD>
return USMART_PARMERR;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
if(*str==')'||*str=='\0')break;//<2F><EFBFBD><E9B5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE>.
}
*parn=n; //<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD>
return USMART_OK;//<2F><>ȷ<EFBFBD>õ<EFBFBD><C3B5>˲<EFBFBD><CBB2><EFBFBD>
}

View File

@@ -0,0 +1,83 @@
#ifndef __USMART_STR_H
#define __USMART_STR_H
#include "sys.h"
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>ѧϰʹ<CFB0>ã<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD>;
//ALIENTEK STM32<33><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>@ALIENTEK
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̳:www.openedv.com
//<2F><EFBFBD><E6B1BE>V3.1
//<2F><>Ȩ<EFBFBD><C8A8><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE><EFBFBD>
//Copyright(C) <20><><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD> 2011-2021
//All rights reserved
//********************************************************************************
//<2F><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
//V1.4
//<2F><><EFBFBD><EFBFBD><EFBFBD>˶Բ<CBB6><D4B2><EFBFBD>Ϊstring<6E><67><EFBFBD>͵ĺ<CDB5><C4BA><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>.<2E><><EFBFBD>÷<EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//<2F>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD>ڴ<EFBFBD>ռ<EFBFBD><D5BC>,<2C><>̬<EFBFBD>ڴ<EFBFBD>ռ<EFBFBD><D5BC>Ϊ79<37><39><EFBFBD>ֽ<EFBFBD>@10<31><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E><>̬<EFBFBD><CCAC>Ӧ<EFBFBD><D3A6><EFBFBD>ּ<EFBFBD><D6BC>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//V2.0
//1,<2C>޸<EFBFBD><DEB8><EFBFBD>listָ<74><D6B8>,<2C><>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ.
//2,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>idָ<64><D6B8>,<2C><>ӡÿ<D3A1><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ַ.
//3,<2C>޸<EFBFBD><DEB8>˲<EFBFBD><CBB2><EFBFBD>ƥ<EFBFBD><C6A5><>ֺ<EFBFBD><D6BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ַ).
//4,<2C><><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱥ궨<C8BA><EAB6A8>.
//V2.1 20110707
//1,<2C><><EFBFBD><EFBFBD>dec,hex<65><78><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>,<2C><>ִ<EFBFBD>н<EFBFBD><D0BD><EFBFBD>ת<EFBFBD><D7AA>.
//ע:<3A><>dec,hex<65><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,<2C><><EFBFBD><EFBFBD><E8B6A8>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,<2C><>ִ<EFBFBD>н<EFBFBD><D0BD><EFBFBD>ת<EFBFBD><D7AA>.
//<2F><>:"dec 0XFF" <20><><EFBFBD>Ὣ0XFFתΪ255,<2C>ɴ<EFBFBD><C9B4>ڷ<EFBFBD><DAB7><EFBFBD>.
//<2F><>:"hex 100" <09><><EFBFBD>Ὣ100תΪ0X64,<2C>ɴ<EFBFBD><C9B4>ڷ<EFBFBD><DAB7><EFBFBD>
//2,<2C><><EFBFBD><EFBFBD>usmart_get_cmdname<6D><65><EFBFBD><EFBFBD>,<2C><><EFBFBD>ڻ<EFBFBD>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//V2.2 20110726
//1,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>void<69><64><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>ͳ<EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD>.
//2,<2C>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ʽĬ<CABD><C4AC>Ϊ16<31><36><EFBFBD><EFBFBD>.
//V2.3 20110815
//1,ȥ<><C8A5><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//2,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD>"("<22><>bug.
//3,<2C>޸<EFBFBD><DEB8>˺<EFBFBD><CBBA><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>޸ķ<DEB8>ʽ.
//V2.4 20110905
//1,<2C>޸<EFBFBD><DEB8><EFBFBD>usmart_get_cmdname<6D><65><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//2,<2C><><EFBFBD><EFBFBD>USMART_ENTIM2_SCAN<41><EFBFBD><EAB6A8>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>ʹ<EFBFBD><CAB9>TIM2<4D><32>ʱִ<CAB1><D6B4>scan<61><6E><EFBFBD><EFBFBD>.
//V2.5 20110930
//1,<2C>޸<EFBFBD>usmart_init<69><74><EFBFBD><EFBFBD>Ϊvoid usmart_init(u8 sysclk),<2C><><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD>ϵͳƵ<CDB3><C6B5><EFBFBD>Զ<EFBFBD><D4B6>趨ɨ<E8B6A8><C9A8>ʱ<EFBFBD><CAB1>.(<28>̶<EFBFBD>100ms)
//2,ȥ<><C8A5><EFBFBD><EFBFBD>usmart_init<69><74><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>uart_init<69><74><EFBFBD><EFBFBD>,<2C><><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF>ʼ<EFBFBD><CABC>,<2C><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD>.
//V2.6 20111009
//1,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>read_addr<64><72>write_addr<64><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>ַ).<2E><><EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//2,read_addr<64><72>write_addr<64><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>USMART_USE_WRFUNSΪ<53><CEAA>ʹ<EFBFBD>ܺ͹ر<CDB9>.
//3,<2C>޸<EFBFBD><DEB8><EFBFBD>usmart_strcmp,ʹ<><CAB9><EFBFBD><EFBFBD><E6B7B6>.
//V2.7 20111024
//1,<2C><><EFBFBD><EFBFBD><EFBFBD>˷<EFBFBD><CBB7><EFBFBD>ֵ16<31><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾʱ<CABE><CAB1><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>bug.
//2,<2C><><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>з<EFBFBD><D0B7><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ж<EFBFBD>,<2C><><EFBFBD><EFBFBD>û<EFBFBD>з<EFBFBD><D0B7><EFBFBD>ֵ,<2C>򲻻<EFBFBD><F2B2BBBB><EFBFBD>ʾ.<2E>з<EFBFBD><D0B7><EFBFBD>ֵʱ<D6B5><CAB1><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><E4B7B5>ֵ.
//V2.8 20111116
//1,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>list<73>Ȳ<EFBFBD><C8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD><EFBFBD>ܵ<EFBFBD><DCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bug.
//V2.9 20120917
//1,<2C>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>磺void*xxx(void)<29><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>bug<75><67>
//V3.0 20130425
//1,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD>֡<EFBFBD>
//V3.1 20131120
//1,<2C><><EFBFBD><EFBFBD>runtimeϵͳָ<CDB3><D6B8>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD>ƺ<EFBFBD><C6BA><EFBFBD>ִ<EFBFBD><D6B4>ʱ<EFBFBD><CAB1>.
//<2F>÷<EFBFBD>:
//<2F><><EFBFBD><EFBFBD>:runtime 1 ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>ʱ<EFBFBD><CAB1>ͳ<EFBFBD>ƹ<EFBFBD><C6B9><EFBFBD>
//<2F><><EFBFBD><EFBFBD>:runtime 0 ,<2C><><EFBFBD>رպ<D8B1><D5BA><EFBFBD>ִ<EFBFBD><D6B4>ʱ<EFBFBD><CAB1>ͳ<EFBFBD>ƹ<EFBFBD><C6B9><EFBFBD>
///runtimeͳ<65>ƹ<EFBFBD><C6B9><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:USMART_ENTIMX_SCAN Ϊ1,<2C>ſ<EFBFBD><C5BF><EFBFBD>ʹ<EFBFBD><CAB9>!!
/////////////////////////////////////////////////////////////////////////////////////
u8 usmart_get_parmpos(u8 num); //<2F>õ<EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼλ<CABC><CEBB>
u8 usmart_strcmp(u8*str1,u8 *str2); //<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
u32 usmart_pow(u8 m,u8 n); //M^N<>η<EFBFBD>
u8 usmart_str2num(u8*str,u32 *res); //<2F>ַ<EFBFBD><D6B7><EFBFBD>תΪ<D7AA><CEAA><EFBFBD><EFBFBD>
u8 usmart_get_cmdname(u8*str,u8*cmdname,u8 *nlen,u8 maxlen);//<2F><>str<74>еõ<D0B5>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EEB3A4>
u8 usmart_get_fname(u8*str,u8*fname,u8 *pnum,u8 *rval); //<2F><>str<74>еõ<D0B5><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 usmart_get_aparm(u8 *str,u8 *fparm,u8 *ptype); //<2F><>str<74>еõ<D0B5>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 usmart_get_fparam(u8*str,u8 *parn); //<2F>õ<EFBFBD>str<74><72><EFBFBD><EFBFBD><EFBFBD>еĺ<D0B5><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
#endif