#include "ls1c102_ptimer.h"
#include "ls1x_common.h"
#include "ls1x_gpio.h"
#include "ls1x_exti.h"
#include "ls1x_latimer.h"
#include "ls1x_rtc.h"
#include "ls1c102_touch.h"
#include "ls1x_string.h"
#include "ls1x_wdg.h"
#include "ls1x_uart.h"
#include "ls1x_spi.h"
#include "ls1c102_i2c.h"
#include "Config.h"
#include "ls1c102_touch.h"
extern void cpu_sleep(void);
extern void dma_start(INT32U source, INT32U count, INT32U mode);
extern void dma_reset(void);
unsigned int str2num(unsigned char *);
int do_nothing()
{
return 0;
}
int do_d1(int argc, void *argv[])
{
if((argc < 2)||(argc > 3))
{
printf("\n usage: d1 <addr> <num>\n\r");
return 1;
}
uint32_t addr;
int i, num;
addr = str2num(argv[1]);
if(argc == 2) num = 1;
else num = str2num(argv[2]);
for(i=0; i<num; i++)
{
if((i%8) == 0)
printf("\n 0x%08x:\t", addr+i);
printf(" %02x ", *(volatile uint8_t*)(addr+i));
}
return 0;
}
int do_d4(int argc, void *argv[])
{
if((argc < 2)||(argc > 3))
{
printf("\n usage: d4 <addr> <num>\n\r");
return 1;
}
unsigned int addr;
int i, num;
addr = str2num(argv[1]);
if(argc == 2) num = 1;
else num = str2num(argv[2]);
for(i=0; i<num; i++)
{
if((i%4) == 0)
printf("\n0x%08x:\t", addr+i*4);
printf(" %08x ", *(volatile unsigned int*)(addr+i*4));
}
return 0;
}
int do_m1(int argc, void *argv[])
{
unsigned int addr;
unsigned char value;
if(argc != 3)
{
printf("\n usage: m1 <addr> <value>\n\r");
return 1;
}
addr = str2num(argv[1]);
value = (unsigned char)str2num(argv[2]);
*(volatile unsigned char*)(addr) = value;
return 0;
}
int do_m4(int argc, void *argv[])
{
unsigned int addr;
unsigned int value;
if(argc != 3)
{
printf("\n usage: m4 <addr> <value>\n\r");
return 1;
}
addr = str2num(argv[1]);
value = str2num(argv[2]);
*(volatile unsigned int*)(addr) = value;
return 0;
}
unsigned int str2num(unsigned char *s)
{
unsigned int num = 0;
unsigned int radix;
unsigned int chr;
unsigned int i;
if((*(s)=='0') && (*(s+1)=='x' || *(s+1)=='X'))
{
i = 2;
radix = 16;
}
else if(*(s)=='0')
{
i = 1;
radix = 8;
}
else
{
i = 0;
radix = 10;
}
for(; *(s+i)!='\0'; i++)
{
chr = *(s+i);
switch(radix){
case 16:
if(chr>='0' && chr<='9')
num = num*radix + (chr - '0');
else if(chr>='a' && chr<='f')
num = num*radix + (chr - 'a' + 10);
else if(chr>='A' && chr<='F')
num = num*radix + (chr - 'A' + 10);
else
printf("illegal hex number...\n");
break;
case 10:
case 8:
if(chr>='0' && chr<('0'+radix))
num = num*radix + (chr - '0');
else
printf("illegal number...\n");
break;
default:
break;
}
}
return num;
}
/*VPWM:0xbfec0020 0x309817b0 single signal period/2 */
/*VPWM:0xbfec0020 0x70a817b0 double signal period/2*/
/*VPWM:0xbfec0020 0x72980ff0 16Khz*/
int v_play(int argc, void *argv[])
{
if(argc != 3)
{
printf("\n usage: v <addr> <num>\n\r");
return 1;
}
unsigned int addr, count;
addr = str2num(argv[1]);
count = str2num(argv[2]);
dma_reset();
printf("VPWM dma ad test started \n");
dma_start(addr, count, 0x1);
printf("VPWM dma ad test end\n");
return 0;
}
// touch show
int touch_reg_show()
{
printf("\nTsensor:\n");
printf("TS_Ctrl = 0x%8x\n", TS_CTRL);
printf("TS_OscTh = 0x%8x\n", TS_OSCTH);
printf("TS_PollTim = 0x%8x\n", TS_POLLTIM);
printf(" ChnAttr CntRes\n");
int i;
for (i=0; i<12; i++)
printf("[%2d] = 0x%8x 0x%8x\n", i, TS_CHNATTR(i), TS_CNTRES(i));
return 0;
}
int touch_value_show()
{
printf("\n 00 01 02 03 04 05 06 07 08 09 10 11\n");
int i;
printf("basval");
for (i=0; i<12 ; i++)
printf(" %4d", TOUCH_GetBaseVal(i));
printf("\ncntval");
for (i=0; i<12; i++)
printf(" %4d", TOUCH_GetCountValue(i));
return 0;
}
int touch_test(int argc, void *argv[])
{
if (!strcmp("init",argv[1]))
{
if (argc != 3)
{
printf("\n touch init <down_th>.");
return 1;
}
printf("\n Touch Init");
INT8U down_th = str2num(argv[2]);
TOUCH_Init(down_th);
}
else if (!strcmp("scan",argv[1]) & argc==2)
{
printf("\n Touch Scan");
TOUCH_EnableSingleScan();
Printf_CountVal();
}
else if (!strcmp("down",argv[1]))
{
printf("\n Touch DownTh");
INT8U down_th = str2num(argv[2]);
INT8U channel;
if(argc == 3) //All Channel
{
for(channel=0; channel<CHANNEL_NUM; channel++)
{
TOUCH_SetDownTh(channel, down_th);
}
}
else if (argc == 4) //Single Channel
{
channel = str2num(argv[3]);
{
TOUCH_SetDownTh(channel, down_th);
}
}
else
{
printf("\n touch down <down_th> <channel>");
return 1;
}
}
else if (!strcmp("poll",argv[1]) & argc==2)
{
printf("\n Touch Poll.");
TOUCH_EnablePollScan();
}
else if (!strcmp("show",argv[1]) & argc==2)
{
touch_reg_show();
touch_value_show();
}
else
{
printf("\n Input Error.");
printf("\nUsage: touch init <down_th> \
\n touch down <down_th> <channel> \
\n touch scan \
\n touch poll \
\n touch show");
return 1;
}
return 0;
}
int hpet(int argc, void *argv[])
{
printf("\r\n hpet timer start....\n");
uint32_t periodic,cmp,stp;
if(argc < 4)
{
TIM_Cmd(0);
TIM_ITConfig(0);
printf("\r\n Usage: hpet <periodic> <start_ms> <sec>");
return 1;
}
periodic = str2num(argv[1]);
cmp = str2num(argv[2]);
stp = str2num(argv[3]);
TIM_InitTypeDef TIM_InitStruct;
TIM_StructInit(&TIM_InitStruct);
TIM_InitStruct.TIME_PERIODIC = periodic << 2;
TIM_InitStruct.TIME_CMP = cmp * 7999;
TIM_InitStruct.TIME_STP = stp * 8000000;
TIM_Init(&TIM_InitStruct);
return 0;
}
int latimer(int argc, void *argv[])
{
uint32_t sec;
printf("\r\n core timer start....argc:%d\n",argc);
if(argc < 2)
{
Set_Timer_stop();
printf("\r\n Usage: latimer <sec>");
return 1;
}
sec = str2num(argv[1]);
//Set_Timer_Init(sec*8000000);
Set_Timer_Init(sec*10667000);
return 0;
}
int delay(int argc, void *argv[])
{
uint32_t flags,val;
if(argc < 3)
{
printf("\r\n Usage: delay <mode:1:us,2:ms,3:s> <val>");
return 1;
}
flags = str2num(argv[1]);
val = str2num(argv[2]);
if (flags == 1)
{
delay_us(val);
printf("\r\n%dus",val);
}
else if (flags == 2) {
delay_ms(val);
printf("\r\n%dms",val);
}else if (flags == 3){
delay_s(val);
printf("\r\n%ds",val);
}else {
printf("\r\n Usage: delay <mode:1:us,2:ms,3:s> <val>");
}
return 0;
}
int wakeup(int argc, void *argv[])
{
uint32_t sec;
printf("\r\nTimer Wake Up start....argc:%d\n",argc);
DisableInt();
if(argc < 2)
{
Wake_Set(0);
printf("\r\n Usage: wakeup <sec>");
return 1;
}
sec = str2num(argv[1]);
Wake_Set(sec);
cpu_sleep();
return 0;
}
uint32_t a_to_n(uint8_t chr) //ascii to number
{
if (chr < 0x30 || chr > 0x39)
{
printf("\r\nwrong range of number!\r\n");
return -1;
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
I2C通信模块的设计和“AT24C64 型号的 型EEPROM 芯片通信”实践 (179个子文件)
1c102_demo.bin 14KB
1c102_cmd.c 22KB
ls1c102_i2c.c 14KB
main_20240301190519.c 12KB
main_20240301190512.c 12KB
main_20240301164746.c 12KB
main_20240301164552.c 12KB
main_20240301164550.c 12KB
main_20240301194419.c 12KB
main.c 12KB
main_20240301194417.c 12KB
main_20240301194415.c 12KB
main_20240301194410.c 12KB
main_20240301194409.c 12KB
main_20240301194406.c 12KB
main_20240301190701.c 12KB
main_20240301194400.c 12KB
ls1x_uart.c 11KB
main_20240301163754.c 11KB
main_20240301163752.c 11KB
main_20240301163751.c 11KB
main_20240301162746.c 11KB
ls1x_string.c 10KB
1c102_Interrupt_20240301193021.c 9KB
1c102_Interrupt_20240301193011.c 9KB
1c102_Interrupt_20240301193022.c 9KB
1c102_Interrupt_20240301193029.c 9KB
1c102_Interrupt_20240301193033.c 9KB
1c102_Interrupt_20240301193038.c 9KB
1c102_Interrupt_20240301193041.c 9KB
1c102_Interrupt_20240301193043.c 9KB
1c102_Interrupt.c 9KB
1c102_Interrupt_20240301192957.c 9KB
1c102_Interrupt_20240301192956.c 9KB
1c102_Interrupt_20240301192918.c 9KB
1c102_Interrupt_20240301163832.c 9KB
1c102_Interrupt_20240301163833.c 9KB
1c102_Interrupt_20240301163830.c 9KB
1c102_Interrupt_20240301163818.c 9KB
1c102_Interrupt_20240301163827.c 9KB
1c102_Interrupt_20240301162907.c 9KB
1c102_Interrupt_20240301163435.c 9KB
1c102_Interrupt_20240301163441.c 9KB
1c102_Interrupt_20240301163821.c 9KB
1c102_Interrupt_20240301162856.c 9KB
1c102_Interrupt_20240301162854.c 9KB
1c102_Interrupt_20240301162858.c 9KB
1c102_Interrupt_20240301162830.c 9KB
1c102_Interrupt_20240225192724.c 9KB
ls1x_flash.c 9KB
ls1x_clock.c 8KB
ls1x_spi.c 8KB
ls1x_printf.c 6KB
ls1c102_touch.c 6KB
soc_i2c.c 5KB
ls1c102_vpwm.c 5KB
ls1c102_ptimer.c 4KB
calIn8M.c 4KB
Buffer.c 3KB
ls1x_exti.c 3KB
soc_printf_20240203211553.c 3KB
soc_printf_20240301164834.c 3KB
soc_printf_20240301164836.c 3KB
soc_printf_20240301164841.c 3KB
soc_printf_20240301164906.c 3KB
soc_printf_20240301164852.c 3KB
soc_printf_20240301164904.c 3KB
soc_printf_20240301164910.c 3KB
soc_printf_20240301164900.c 3KB
soc_AT24CXX.c 3KB
soc_printf_20240301164912.c 3KB
soc_printf.c 3KB
touch.c 3KB
UserGpio.c 2KB
ls1x_common.c 2KB
soc_gpio.c 2KB
ls1x_latimer.c 2KB
soc_pwm.c 1KB
ls1x_rtc.c 1KB
ls1x_logo.c 1KB
soc_hpet.c 910B
uartTest.c 797B
ls1x_pmu.c 723B
soc_uart_20240301113123.c 720B
soc_uart_20240301164803.c 693B
soc_uart.c 693B
ls1x_gpio.c 545B
Soroll.c 377B
ls1x_wdg.c 275B
i2c_AT24CXX.coe 34KB
1c102_demo.elf 35KB
ls1x.h 22KB
ls1c102_i2c.h 10KB
csrdef.h 10KB
tools-asm.h 9KB
ls1x_uart.h 8KB
soc_i2c.h 7KB
ls1x_exti.h 7KB
ls1x_clock.h 6KB
ls1x_gpio.h 6KB
共 179 条
- 1
- 2
资源评论
森森Techdaily
- 粉丝: 154
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功