You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
485 lines
14 KiB
485 lines
14 KiB
////////////////////////////////////////////////////////////////////////////
|
|
///@copyright Copyright (c) 2018, 传控科技 All rights reserved.
|
|
///-------------------------------------------------------------------------
|
|
/// @file bsp_gc6133.c.c
|
|
/// @brief bsp @ driver config
|
|
///-------------------------------------------------------------------------
|
|
/// @version 1.0
|
|
/// @author CC
|
|
/// @date 20180331
|
|
/// @note cc_AS_stc02
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
///#include "bsp_drv.h"
|
|
///#include "bsp_func.h"
|
|
#include "bsp_cam_isr.h"
|
|
#include "bsp_cam.h"
|
|
#include "msp_uart1.h"
|
|
#include "msp_iicMx.h"
|
|
////#include "cw63xx.h"
|
|
#include "c_lib.h"
|
|
#include "c_bit.h"
|
|
#include "debug_drv.h"
|
|
#include "TTSS_time_stc.h"
|
|
|
|
TS_clk_ data ts_clk;
|
|
|
|
/************
|
|
|
|
TS_P_rf TS_paer_value=
|
|
{
|
|
0xad,
|
|
0x0123,
|
|
// 0x00,///U16 paperNum:12; //12bit纸张数据
|
|
///U8 cameraIndex:2; //摄像头编号
|
|
///U8 cameraWorking:1; //是否正常工作
|
|
///U8 reserved: 1; //保留
|
|
0x56,///U8 cameraBoardPower; //电量
|
|
0xcc
|
|
|
|
};
|
|
void L0_p_send(void)
|
|
{
|
|
unsigned char *p;
|
|
TS_paer_value.r123.cameraBoardPower = 0;
|
|
TS_paer_value.filter1 = 0x0a;
|
|
// TS_paer_value.r123.paperNum = 0x1234;
|
|
p = (unsigned char *)&TS_paer_value.r123;
|
|
TS_paer_value.ocr = *p;
|
|
|
|
p ++;
|
|
TS_paer_value.ocr += *p;
|
|
p ++;
|
|
TS_paer_value.ocr += *p;
|
|
|
|
//TS_paer_value.ocr = 0x88;
|
|
|
|
/// L0_Uart0_Init4800();
|
|
L0_uart0_sendArray( (unsigned char *)&TS_paer_value,5);
|
|
//L0_uart0_init();
|
|
|
|
}
|
|
********/
|
|
|
|
//// mclk out init 系统时钟输出配置,可以提供给其他外设作为时钟
|
|
void L0_MCLKO_init(void)
|
|
{
|
|
BITN_1(P_SW2,EAXFR);
|
|
CLKSEL = CLKSET_IRC;
|
|
MCLKOCR = MCLKOCR_P54|MCLKOCR_DIV;
|
|
D_stdIO_P5(BITN4);///BITN_0(P5M1,BITN4);BITN_1(P5M0,BITN4);/// 01 推挽
|
|
/// BITN_0(P_SW2,EAXFR);// P_SW2 = 0x80;
|
|
}
|
|
|
|
|
|
|
|
void GC032A_port_init(void)
|
|
{
|
|
/***** volatile unsigned short j;
|
|
|
|
for(j = 0;j < D_row_max;j ++)
|
|
{
|
|
ts_task_GC032a.buf[j] = 0;
|
|
}
|
|
*****/
|
|
|
|
|
|
///00 准双向口 灌电流20mA 拉电流270-150uS
|
|
///01 推挽输出 20mA 加限流
|
|
///10 高阻
|
|
///11 开漏 open-Drain 内部上拉电阻断开 开漏模式既可以度外部状态也可以对外输出高低电平
|
|
|
|
//p3.6 --HSYNC
|
|
// BITN_0(P3M1,BITN6);BITN_0(P3M0,BITN6);
|
|
///P3.7 -- VSYNC
|
|
// BITN_0(P3M1,BITN7);BITN_0(P3M0,BITN7);
|
|
L0_GC032A_standby();
|
|
|
|
}
|
|
|
|
|
|
////>>>>>>>>>>>>>>>>>>>>>_s_task_GC032A_>>>>>>>>>>>>>>>>>>>>>>
|
|
|
|
TS_task_GC032A_ ts_task_GC032a;
|
|
|
|
void L2_task_GC032A_init(void)
|
|
{
|
|
|
|
L1_task_init(&ts_task_GC032a.task);
|
|
L3_task_s_go(ts_task_GC032a,D_task_init);
|
|
//L3_task_s_go(ts_task_GC032a,0);
|
|
/// ts_task_GC032a.line_onf = 1;
|
|
ts_task_GC032a.fisrt = 0; //发送完成一次有效数据后,时钟开始分频
|
|
|
|
ts_clk.pclk_n = 0;
|
|
ts_task_GC032a.HS_n = 0;
|
|
|
|
ts_task_GC032a.m = 0;
|
|
|
|
|
|
|
|
D_CAM_IO_INIT();
|
|
L0_cam_INT_init();
|
|
|
|
L0_IICMx_INIT(D_iicch_gc032a,1);
|
|
|
|
ts_iicm.t0[D_iicch_gc032a]= 0;///模拟iic的时候低电平和高电平的时间经常不确定
|
|
ts_iicm.t1[D_iicch_gc032a]= 1;///使用iic前需要配置iic的速率 根据规格书的要求
|
|
/********
|
|
while(0)
|
|
{
|
|
Lc_delay_ms(400);
|
|
L2_IICMx_Read1Reg1D(D_iicch_gc032a,D_i2c_addr_gc032A,0xf6);
|
|
|
|
}*******/
|
|
}
|
|
|
|
///L2_task_GC032A_handle(&ts_task_GC032a);
|
|
#if 1
|
|
#define GC032a_L0_uart0_uc L1_uartD_senduc
|
|
///#define GC032a_L0_uart0_uc(x);
|
|
#define L0_uart0_sendArraylong(x,y,z) L1_uartD_sendArrayLong(x,y,z)
|
|
|
|
#define GC032a_L0_uart0_sendArray(x,Y) L1_uartD_sendArray(x,Y)
|
|
#else
|
|
|
|
#define GC032a_L0_uart0_uc(x);
|
|
#define GC032a_L0_uart0_sendArray(x,Y)
|
|
#endif
|
|
#define D_task_GC032A_line1 0x81
|
|
#define D_task_GC032A_line2 0x82
|
|
#define D_task_GC032A_line3 0x83
|
|
#define D_paper_gate 0x20//0x10+
|
|
|
|
|
|
///20221112_184132 CCmodify 只有在打印的时候使用
|
|
#define D_send_us(x) DR_pdata_n = x;GC032a_L0_uart0_uc(DR_pdata_n_H);GC032a_L0_uart0_uc(DR_pdata_n_L);
|
|
#define D_uart0_free() (0 == ts_uart[0].now)
|
|
#define D_uart0_busy() (0 != ts_uart[0].now)
|
|
|
|
|
|
static unsigned char GC032A_init_flag = 1;
|
|
////L2_task_GC032A_handle(&ts_task_GC032a);
|
|
|
|
vU16 data gdataUs02,gdataUs03,gdataUs05;///
|
|
///////
|
|
////gRccUs03;
|
|
|
|
/*************/
|
|
|
|
void L2_task_GC032A_handle(TS_task_GC032A_ *s)
|
|
{
|
|
vU16 i = 0;
|
|
TTSS_Task_init():
|
|
//PWDN引脚拉低(0 -- 正常工作,1 -- 休眠)
|
|
L0_GC032A_standby();
|
|
D_cam_DVDD_off();
|
|
GC032a_L0_uart0_uc(0x31);
|
|
printf("TTSS_Task_init");
|
|
L2_task_go(D_task_GC032A_init_DVDD);
|
|
TTSS_Task_step(D_task_GC032A_init_DVDD):
|
|
L0_GC032A_work();
|
|
//IOVDD上电,并延时50us以上;
|
|
D_cam_DVDD_on();
|
|
|
|
for(i = 0;i < 640;i ++)
|
|
{
|
|
ts_task_GC032a.buf[1][i] = 0x20;
|
|
}
|
|
|
|
//L1_uartD_senduc(0x39);
|
|
L2_task_go(D_task_GC032A_init_AVDD);
|
|
//L1_task_Tdelay(D_Tdelay_10ms);
|
|
TTSS_Task_step(D_task_GC032A_init_AVDD):
|
|
//AVDD28上电,并延时0us以上
|
|
D_cam_AVDD_on();
|
|
L2_task_go(D_task_GC032A_init_pwdn);
|
|
TTSS_Task_step(D_task_GC032A_init_pwdn):
|
|
//提供032A系统频率
|
|
L0_MCLKO_init();
|
|
//PWDN引脚拉高,延时,拉低
|
|
L0_GC032A_standby();
|
|
|
|
|
|
L2_task_go(D_task_GC032A_init_pwdn_wait);
|
|
L1_task_Tdelay(D_Tdelay_10ms);
|
|
TTSS_Task_step(D_task_GC032A_init_pwdn_wait):
|
|
L0_GC032A_work();
|
|
GC032a_L0_uart0_uc('r');
|
|
printf(" L0_GC032A_work ");
|
|
gRccUs03 = 0;
|
|
D_cam_led_on();
|
|
L2_task_go(D_task_GC032A_write_reg);
|
|
L1_task_Tdelay(D_Tdelay_10ms);
|
|
|
|
//while(9);
|
|
TTSS_Task_step(D_task_GC032A_write_reg):
|
|
//设置摄像头参数
|
|
if(0 != GC6133_init_reg_tbl[gRccUs03][0])
|
|
{
|
|
L0_GC032A_write(GC6133_init_reg_tbl[gRccUs03][0],GC6133_init_reg_tbl[gRccUs03][1]);
|
|
gRccUs03 ++;
|
|
/// printf("\r\n gRccUs03 = %d (%X)= %x ",gRccUs03,(int)GC6133_init_reg_tbl[gRccUs03][0],(int)GC6133_init_reg_tbl[gRccUs03][1]);
|
|
/// printf("\r\n%d:(%2X)= %2X ",gRccUs03,(int)GC6133_init_reg_tbl[gRccUs03][0],(int)GC6133_init_reg_tbl[gRccUs03][1]);
|
|
///L1_uartD_senduc(s->usN);
|
|
L2_task_go(D_task_GC032A_write_reg);
|
|
L1_task_Cdelay(D_Cdelay_200us);
|
|
}else
|
|
{
|
|
L2_task_go(D_task_GC032A_div);
|
|
//L1_task_Tdelay(D_Tdelay_1s);
|
|
L1_task_Tdelay(250);
|
|
}
|
|
TTSS_Task_step(D_task_GC032A_div):
|
|
if(0 == s->fisrt)
|
|
{
|
|
s->fisrt = 1;
|
|
GC032a_L0_uart0_uc(0x3c);
|
|
D_VSYNCS_open();
|
|
///D_HSYNCS_open();
|
|
L0_GC032A_write(0xfa,D_0xfa);
|
|
}
|
|
L2_task_go(D_task_GC032A_start_time);
|
|
TTSS_Task_step(D_task_GC032A_start_time):
|
|
D_cam_led_on();
|
|
GC032a_L0_uart0_uc(0x3D);
|
|
|
|
printf(" D_task_GC032A_start_time ");
|
|
GC032A_init_flag = 0;
|
|
s->status = 0;
|
|
L2_task_go(D_task_GC032A_wait);
|
|
L1_task_Tdelay(D_Tdelay_10ms);
|
|
TTSS_Task_step(D_task_GC032A_wait):
|
|
|
|
if(1 == s->vs_ok)
|
|
{
|
|
s->vs_ok = 0;///s->m
|
|
printf("\r\nf\r\n ----------------------------------------------------------------- \r\n\r\n\r\n");
|
|
|
|
}
|
|
if(1 == s->hs_ok)
|
|
{
|
|
s->hs_ok = 0;///s->m
|
|
///DR_Hs_count --;
|
|
if((ts_clk.hs_n-1)%D_480_div == s->m)
|
|
{
|
|
///D_HSYNCS_close();
|
|
///printf("\r\n%x ",s->pclk_max);//,DR_Hs_count
|
|
|
|
printf("\r\nU%5d %3d %3X %d",ts_task_GC032a.VS_max,ts_clk.hs_n-1,s->pclk_max,(int)s->m);//,DR_Hs_count
|
|
s->pclk_max = 0;
|
|
//ts_task_GC032a.buf[0][ts_task_GC032a.pclk_n]
|
|
// L1_uartD_sendArrayhex(ts_task_GC032a.buf[0],100);///
|
|
/// ////hex /// ///
|
|
L1_uartD_sendArray(ts_task_GC032a.buf[0],640);////////
|
|
// L1_uartD_sendArray(ts_task_GC032a.buf[1],640);
|
|
///
|
|
|
|
D_HSYNCS_open();
|
|
}
|
|
|
|
|
|
|
|
////printf("\r\n%d %d %d",DR_Hs_count,s->pclk_max,s->pclk_n);
|
|
/// s->pclk_n = 0;
|
|
|
|
/***
|
|
0D 0A 20 32 34 09 32 30 37 09 32 38 31 09 13 21 13 20 15 21 16 25 1B 2F 25 4E 45 84 5B 97 62 98 61 A0 69 A5 66 A6 64 A0 5F 87 38 3C 1E 2A 1B 28 1B 28 1D 29 1E 29 1D 2A 1E 2B 20 2A 1E 2B 20 2E 1F 2F 21 30 21 30 22 32 23 31 21 31 23 37 2B 5A 6D C3 89 C0 7E B8 77 AF 6B A3 5A 7E 4B 75 2E 4F 2E 5C 2C 5D 43 79 40 75 39 58 20 37 20 2F 28 34 29 31 26 2B 27 2A 1B 2A 32 74 42 4C 2B 3C 29 38 25 32 1F 2A 1E 2E 20 33 23 34 26 34 25 39 28 3B 29 3F 2A 41 2C 41 2D 44 30 46 2D 44 2C 42 2D 47 2E 46 2E 4A 30 47 30 49 2F 4A 2E 48 2F 47 2F 49 32 4A 31 49 32 4B 30 4A 30 48 31 4B 34 50 3D 77 61 9E 69 9F 6C A6 71 BA 7E BD 7B BB 7F BC 78 A4 64 96 59 81 57 87 57 82 4D 74 42 5F 3B 61 38 4E 2F 47 2B 47 2B 43 2A 40 2A 3F 29 40 2A 41 28 3E 27 3B 26 38 26 3F 29 3E 24 2B 16 21 16 23 16 27 25 42 2A 47 2D 47 2A 42 2F 51 31 4B 30 48 2D 3E 2B 41 31 51 3E 5E 41 5E 40 5B 37 53 3A 58 3F 6B 47 6C 48 6D 48 72 47 71 49 72 4A 70 4B 73 4B 70 46 6E 46 65 41 66 45 6D 44 63 40 61 47 6F 46 64 42 5E 3C 5B 3B 5B 3D 5B 3D 59 3D 5A 3D 5C 3C 58 3A 58 3A 57 39 59 3D 59 5B 3B 5D 3A 5B 3A 59 39 5A 3A 59 39 5B 38 5A 3A 58 3A 59 3A 57 39 5B 3C 59 39 5B 3C 59 3A 5A 3D 5A 3B 5A 3D 59 3B 59 3B 5B 3D 5A 3C 5B 3D 5B 3D 5B 3D 59 3D 59 3B 5B 3D 5C 3B 59 3B 5C 3E 5A 3C 5C 3E 5A 3D 5B 3C 5A 3D 5C 3C 5A 3E 5A 3C 5C 3E 5D 3F 5D 3E 5F 3D 5A 3E 5B 3E 5D 3C 5B 3F 5C 3E 5D 3E 5D 40 5E 3D 5C 3D 5A 3D 5B 3E 5C 3D 5B 3E 5E 3C 5E 41 5C 3C 5D 3E 5D 3D 5B 3B 59 3E 5B 40 5B 3E 59 3F 5F 3D 5D 40 5A 3E 5A 3C 5D 3E 5C 41 59 3C 5A 3E 5B 3D 5C 40 5E 3C 5A 3C 5B 3E 5A 3B 5C 3D 5D 3C 5A 3B 5A 3A 59 3A 5D 3D 59 3C 5D 3C 5A 3C 58 3C 5A 3F 58 3A 58 3B 5A 3B 59 3D 59 3C 57 3B 58 3B 55 3B 58 3C 56 39 55 3A 54 3B 54 3B 56 38 56 3A 54 3A 54 39 53 38 54 3B 54 3A 55 3B 54 3A 55 3A 57 38 54 3B 53 38 4F 39 51 38 51 38 50 39 54 38 51 37 54 37 4F 37 4E 38 50 36 4E 38 50 35 51 38 4C 37 51 37 4E 37 4B 36 4F 34 4D 35 4E 35 4D 35 4D 36 50 34 4E 35 4F 36 4C 33 4F 32 4C 33 4E 36 4B 33 4C 35 4F 36 52 37 4B 36 4B 34 4A 35 4C 35 4D 34
|
|
|
|
|
|
printf("\r\nclk= %d \r\n",s->pclk_max);
|
|
printf("\r\n22clk= %d \r\n",s->pclk_n);s->pclk_n = 0;
|
|
/// L1_uartD_sendArrayhex(ts_task_GC032a.buf,s->pclk_max);
|
|
|
|
printf("\r\nHS= %d \r\n",s->HS_max);
|
|
/// L1_uartD_ushexArray(ts_task_GC032a.HS,s->HS_max);
|
|
/// L1_uartD_ushexArray(ts_task_GC032a.HS,12);
|
|
|
|
**/
|
|
}
|
|
TTSS_Task_step(D_task_GC032A_send1):
|
|
|
|
|
|
TTSS_Task_step(D_task_GC032A_sleep):
|
|
////CAL 10MS 433 10MS 总共20ms / 1160ms/vs 取行数消耗10ms
|
|
/////1160-10 - 20 = 1130ms
|
|
D_cam_led_on();//printf("\r\n D_task_GC032A_sleep ");
|
|
L2_task_go(D_task_GC032A_wait);
|
|
TTSS_Task_end();
|
|
}
|
|
|
|
void L1_GC032A_sleep(unsigned char onf)
|
|
{
|
|
if(onf)
|
|
{
|
|
/// 进入standby:
|
|
L0_GC032A_write(0xfc,0x03);
|
|
L0_GC032A_write(0xf7,0x00);
|
|
L0_GC032A_write(0xf9,0xcf);
|
|
L0_GC032A_write(0xf3,0x00);
|
|
}else
|
|
{
|
|
/// 退出standby:
|
|
L0_GC032A_write(0xfc,0x02);
|
|
L0_GC032A_write(0xf7,0x01);
|
|
L0_GC032A_write(0xf9,0xce);
|
|
L0_GC032A_write(0xf3,0xff);
|
|
}
|
|
}
|
|
|
|
void L3_GC032A_debug(u8 filter)
|
|
{
|
|
|
|
U8 i,val[16];
|
|
if(filter == ts_debug_rec.filter)
|
|
{///filter num d1 d2 d3 ....dn
|
|
//// FD 08 11 22 33 44 55 66 77 88 Lc_delay_ms(1);
|
|
|
|
/// L1_uartD_sendArrayhex(TS_s2b_debug.sp,TS_debug_rec.R1);
|
|
|
|
printf("\r\n GC032A ok");
|
|
|
|
switch (ts_debug_rec.ocr)
|
|
{
|
|
|
|
case 0x11:
|
|
//// FI R1 R2 R3 OCR
|
|
///// FC 11 F6 04 11
|
|
/// r2 寄存器 R3 数量 ,val
|
|
L0_GC032A_read(ts_debug_rec.R2,val,ts_debug_rec.R3);
|
|
|
|
Lc_delay_ms(400);
|
|
L2_IICMx_Read1Reg1D(D_iicch_gc032a,D_i2c_addr_gc032A,0xf6);
|
|
|
|
printf("\r\n GC032A_read reg(%2X) num= %d ",(int)ts_debug_rec.R2,(int)ts_debug_rec.R3);
|
|
L1_uartD_sendArrayhex(val, ts_debug_rec.R3);
|
|
break;
|
|
//读取摄像头配置参数
|
|
|
|
//1/ 2 3 4 5 6 7 8 9 10 11 12 13
|
|
break;
|
|
case 0x12:
|
|
//设置当前页面01
|
|
L0_GC032A_write(ts_debug_rec.R2,ts_debug_rec.R3);
|
|
L1_uartD_senduc(ts_debug_rec.R2);
|
|
L1_uartD_senduc(ts_debug_rec.R3);
|
|
//1 2 3 4 5 6 7 8 9 10 11 12 13
|
|
break;
|
|
case 0x05:
|
|
L1_uartD_senduc(0x81);
|
|
///1.standby
|
|
L1_GC032A_sleep(0);
|
|
break;
|
|
case 0x15:
|
|
L1_GC032A_sleep(1);///standby
|
|
L1_uartD_senduc(0x80);
|
|
break;
|
|
case 0x35:
|
|
L0_GC032A_standby();// led 17.1-16.9ma standby 6.2ma
|
|
L1_uartD_senduc(0x31);
|
|
break;
|
|
case 0x36:
|
|
/// 退出standby:
|
|
L0_GC032A_work();
|
|
L1_uartD_senduc(0x30);
|
|
break;
|
|
case 6:
|
|
D_cam_led_off();
|
|
break;
|
|
case 7:
|
|
D_cam_led_on();
|
|
|
|
break;
|
|
|
|
|
|
default:
|
|
printf(" pp error\r\n ");
|
|
|
|
break;
|
|
};
|
|
|
|
printf("333");
|
|
}
|
|
}
|
|
|
|
#if 0
|
|
//// fe 01 reg data 0cx
|
|
void L3_GC032A_fun(U8 *pPara)
|
|
{
|
|
U8 i,val[2];
|
|
|
|
TS_pp_debug_ *p = pPara;
|
|
switch(p->ocr)
|
|
{
|
|
case 0x00:
|
|
L0_GC032A_read(p->R2,val,p->R3);
|
|
/// L1_uartD_senduc(p->cmd);
|
|
L1_uartD_senduc(p->R2);
|
|
L1_uartD_senduc(p->R3);
|
|
L1_uartD_senduc('G');
|
|
for(i = 0;i < p->R3;i++)
|
|
{
|
|
L1_uartD_senduc(val[i]);
|
|
}
|
|
break;
|
|
//读取摄像头配置参数
|
|
case 0x01:
|
|
/// sysreg FE 01 FE 33 44 //读取当前页面
|
|
/// sysreg FE 01 F0 33 44 //读取id = 0x23
|
|
L0_GC032A_read(p->R2,&i,1);
|
|
L1_uartD_senduc(i);
|
|
break;
|
|
//修改摄像头配置参数
|
|
case 0x02:
|
|
/// fe 02 r2 r3 xx 设置寄存器(r2) = r3
|
|
/// sysreg FE 02 FE 01 44 //设置当前页面01
|
|
L0_GC032A_write(p->R2,p->R3);
|
|
L1_uartD_senduc(p->R2);
|
|
L1_uartD_senduc(p->R3);
|
|
break;
|
|
//启动摄像头进行拍照;
|
|
case 0x03:/// sysreg FE 03 03 04 05 //设置是否发送一line数据(数据分为一帧=640Line = 640line*480pclk )
|
|
///ts_task_GC032a.task.sh = D_task_GC032A_start_time;
|
|
if(1== ts_task_GC032a.line_onf)
|
|
{
|
|
ts_task_GC032a.line_onf = 0;
|
|
L1_uartD_senduc(0x30|ts_task_GC032a.line_onf);Lc_delay_ms(2);
|
|
}else
|
|
{
|
|
ts_task_GC032a.line_onf = 1;
|
|
L1_uartD_senduc(0x30|ts_task_GC032a.line_onf);Lc_delay_ms(2);
|
|
}
|
|
L1_uartD_senduc(0x30|ts_task_GC032a.line_onf);
|
|
break;
|
|
case 0x05:
|
|
L1_uartD_senduc(0x81);
|
|
///1.standby
|
|
L1_GC032A_sleep(0);
|
|
break;
|
|
case 0x15:
|
|
L1_GC032A_sleep(1);///standby
|
|
L1_uartD_senduc(0x80);
|
|
break;
|
|
case 0x35:
|
|
L0_GC032A_standby();// led 17.1-16.9ma standby 6.2ma
|
|
L1_uartD_senduc(0x31);
|
|
break;
|
|
case 0x36:
|
|
/// 退出standby:
|
|
L0_GC032A_work();
|
|
L1_uartD_senduc(0x30);
|
|
break;
|
|
case 6:
|
|
D_cam_led_off();
|
|
break;
|
|
case 7:
|
|
D_cam_led_on();
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
};
|
|
}
|
|
|
|
#endif
|
|
|
|
|