超过460,000+ 应用技术资源下载
null

以太网协议函数

  • 1星
  • 日期: 2017-06-06
  • 大小: 18.54KB
  • 所需积分:1分
  • 下载次数:
  • favicon收藏
  • rep举报
  • 分享
  • free评论
标签: tcpip

以太网通信函数,建立稳定数据传输

文档内容节选

include lpc17xxh include stdioh include ucosiih include lpc17xxgpioh include lpc17xxpinselh include macoincludeh include lpc17xxnvich include lpc17xxuarth include lpc17xxwdth include usarth include emach include publich include delayh include lcdh include adch include dht11h include BH1750h include ds18b20h include 74HC595h include Strhandlerh include stringh define TCPCLIENTRXBUFSIZE 27 接收缓冲区长度 define UARTRINGBUFSIZE 256 define UARTRXBUFSIZE 27 static struct netconn conn newconn uint8t rxcou......

#include "lpc17xx.h" #include #include #include "lpc17xx_gpio.h" #include "lpc17xx_pinsel.h" #include "maco_include.h" #include "lpc17xx_nvic.h" #include "lpc17xx_uart.h" #include "lpc17xx_wdt.h" #include "usart.h" #include "emac.h" #include "public.h" #include "delay.h" #include "lcd.h" #include "adc.h" #include "dht11.h" #include "BH1750.h" #include "ds18b20.h" #include "74HC595.h" #include "Strhandler.h" #include #define TCP_CLIENT_RX_BUFSIZE 27 //接收缓冲区长度 #define UART_RING_BUFSIZE 256 #define UART_RX_BUFSIZE 27 static struct netconn *conn, *newconn; uint8_t rx_count=0; uint16_t relay_value=0; uint16_t table[]={0x0000,0x0001,0x0002,0x0004,0x0008,0x0010,0x0020,0x0040,0x0080,0x0100,0x0200,0x0400,0x0800,0x1000,0x2000,0x400,0x800}; uint8_t Tx_flag=0,Rx_flag=0,control_flag=0,tcp_flag=0; OS_CPU_SR cpu_sr; OS_EVENT *task1_Sem; OS_EVENT *task2_Sem; OS_EVENT *task3_Sem; OS_EVENT *task4_Sem; OS_STK Task_Timer_Stk[TASK_TIMER_STK_SIZE]; OS_STK GstkLed1[TASK_LED1_STK_SIZE]; /* 任务的堆栈 */ OS_STK Gstk2[TASK_2_STK_SIZE]; /* 任务的堆栈 */ OS_STK Gstk3[TASK_3_STK_SIZE]; /* 任务的堆栈 */ OS_STK Gstk4[TASK_4_STK_SIZE]; /* 任务的堆栈 */ OS_STK Gstk5[TASK_5_STK_SIZE]; /* 任务的堆栈 */ OS_STK Gstk6[TASK_6_STK_SIZE]; /* 任务的堆栈 */ OS_STK Gstk7[TASK_7_STK_SIZE]; /* 任务的堆栈 */ OS_STK Gstk8[TASK_8_STK_SIZE]; /* 任务的堆栈 */ OS_STK Gstk9[TASK_9_STK_SIZE]; /* 任务的堆栈 */ OS_STK Gstk10[TASK_10_STK_SIZE]; /* 任务的堆栈 */ uint8_t temp_adc[7],temp_lx[7],temp_hum[8]="70%22.0",temp_tem[4]; uint8_t tcp_client_recvbuf[TCP_CLIENT_RX_BUFSIZE]; //TCP客户端接收数据缓冲区 uint8_t rx_buffer[UART_RX_BUFSIZE]; uint8_t level_adc[]="20.0",level_lx[]="01000",level_hum[]="19",level_tem[]="20.0" ; uint8_t relay_num[4]; /* LED pin in byte style on P1 */ typedef struct { char port; char pin; } t_led; t_led led[] = { { 0, 8 }, {0, 0 }, { 0, 1}, { 2, 13}}; void LED_Init (void) { int temp; PINSEL_CFG_Type PinCfg; PinCfg.Funcnum = 0; PinCfg.OpenDrain = 0; PinCfg.Pinmode = 0; for ( temp = 0; temp < sizeof(led)/sizeof(t_led); temp++) { PinCfg.Portnum = led[temp].port; PinCfg.Pinnum = led[temp].pin; PINSEL_ConfigPin(&PinCfg); /* Set direction to output*/ GPIO_SetDir(led[temp].port,(1<b[0]) return 1; else if(c==1) return 0; else return Compare_arg(a+1,b+1,c-1); } void relay_driver(uint16_t relay_number){ HC595_Send(relay_number); } void taskLed1 (void *parg) { INT8U err; (void)parg; while (1) { uint8_t j; // OSSemPend(task1_Sem,200,&err); ledOn(0); /* 点亮LED1 */ delay_nms(500);//OSTimeDly(OS_TICKS_PER_SEC / 2); /* 延时0.5秒 */ ledOff(0); /* 关闭LED1 */ OSTimeDlyHMSM(0,0,3,0); // OSTaskResume(9); // OSTaskResume(11); // OSSemPost(task1_Sem); } } void task4 (void *parg) { INT8U err; (void)parg; while (1) { uint8_t i; conversion(temp_lx); // lcd_pos(3,4); // for(i=0;i<7;i++) // { // lcd_wdat(temp_lx[i]); // } OSTimeDlyHMSM(0,0,0,500); } } void task5 (void *parg) { INT8U err; (void)parg; while (1) { uint8_t i; ADC_handler(temp_adc); // lcd_pos(4,4); // for(i=0;i<7;i++) // { // lcd_wdat(temp_adc[i]); // } OSTimeDlyHMSM(0,0,0,500); } } void task3 (void *parg) { INT8U err; (void)parg; while (1) { uint8_t i; ReadDHT11(temp_hum); OSTimeDlyHMSM(0,0,0,500); } } void task6 (void *parg) { INT8U err; (void)parg; while (1) { DS18B20_Temperature_Get(temp_tem); OSTimeDlyHMSM(0,0,0,500); } } /*看门狗定时函数*/ void task8 (void *parg) { INT8U err; (void)parg; while (1) { if (WDT_ReadTimeOutFlag()) // 清除 WDT定时溢出标志位 WDT_ClrTimeOutFlag(); // 初始化WDT WDT_Init(WDT_CLKSRC_PCLK, WDT_MODE_RESET); // 启动WTD并喂狗 WDT_Start(5000000); OSTimeDlyHMSM(0,0,2,0); } } /*LCD显示函数*/ void task9 (void *parg) { INT8U err; (void)parg; while (1) { uint8_t j,i; lcd_wcmd(0x30); lcd_pos(1,0); for(j=0;j<8;j++) { lcd_wdat(DIS1[j]); // delay_nms(30); } lcd_pos(2,0); for(j=0;j<8;j++) { lcd_wdat(DIS2[j]); // delay_nms(30); } lcd_pos(3,0); for(j=0;j<8;j++) { lcd_wdat(DIS3[j]); // delay_nms(30); } lcd_pos(4,0); for(j=0;j<8;j++) { lcd_wdat(DIS4[j]); // delay_nms(30); } lcd_pos(5,0); for(j=0;j<8;j++) { lcd_wdat(DIS8[j]); // delay_nms(30); } lcd_pos(1,4); for(i=0;i<4;i++) { lcd_wdat(temp_tem[i]); } lcd_pos(2,4); for(i=0;i<3;i++) { lcd_wdat(temp_hum[i]); } lcd_pos(3,4); for(i=0;i<7;i++) { lcd_wdat(temp_lx[i]); } lcd_pos(4,4); for(i=0;i<7;i++) { lcd_wdat(temp_adc[i]); } lcd_pos(5,4); for(i=0;i<4;i++) { lcd_wdat(temp_hum[i+3]); } lcd_wcmd(0x34); //切换到扩展指令 lcd_wcmd(0x03); //允许输入滚动地址 lcd_wcmd(0x40); //垂直滚动屏幕的内容 OSTimeDlyHMSM(0,0,2,0); lcd_wcmd(0x60); //垂直滚动屏幕的内容 OSTimeDlyHMSM(0,0,2,0); } } void task7 (void *parg) { INT8U err; (void)parg; while (1) { int_least8_t i,compare_value[4]; uint8_t n; compare_value[0]=Compare_arg(temp_adc,level_adc,4); compare_value[1]=Compare_arg(temp_tem,level_tem,4); compare_value[2]=Compare_arg(temp_lx,level_lx,5); compare_value[3]=Compare_arg(temp_hum,level_hum,2); for(i=0;i<4;i++){ switch(compare_value[i]){ case 1: relay_value|=table[i+1];relay_driver(relay_value);break; case -1: relay_value&=~table[i+1];relay_driver(relay_value);break; case 0: relay_value&=~table[i+1];relay_driver(relay_value);break; } } if(control_flag==1){ n=(relay_num[0]-0x30)*100+(relay_num[1]-0x30)*10+relay_num[2]-0x30 ; if((relay_num[3]-0x30)==1){ relay_value|=table[n]; relay_driver(relay_value); } else{ relay_value&=~table[n]; relay_driver(relay_value); } control_flag=0; } OSTimeDlyHMSM(0,0,0,500); } } void task2 (void *parg) { struct pbuf *q; uint32_t data_len = 0; (void)parg; while (1) { uint8_t *strtemp,*strtemp1,*strtemp2,*strtemp3,*strtemp4; if((Rx_flag==1)||(tcp_flag=1)){ data_len=0; //复制完成后data_len要清零。 rx_count=0; UART_Send(LPC_UART0,rx_buffer,27,BLOCKING); strtemp=substring(rx_buffer,0,3); if(Compare_arg(strtemp,"227",3)==0){ strtemp1=substring(rx_buffer,7,4); strtemp2=substring(rx_buffer,12,5); strtemp3=substring(rx_buffer,18,2); strtemp4=substring(rx_buffer,21,4); strcpy(level_tem,strtemp1); strcpy(level_lx,strtemp2); strcpy(level_hum,strtemp3); strcpy(level_adc,strtemp4); } if(Compare_arg(strtemp,"337",3)==0){ strtemp1=substring(rx_buffer,3,4); strcpy(relay_num,strtemp1); control_flag=1; } Rx_flag=0; tcp_flag=0; memset(rx_buffer,0,27);//d } //OSTaskSuspend(OS_PRIO_SELF); OSTimeDlyHMSM(0,0,0,500); } } void task10 (void *parg) { struct pbuf *q; uint32_t data_len = 0; (void)parg; while (1) { struct netbuf *recvbuf; const uint8_t *ptr; // uint8_t rx_buffer[TCP_CLIENT_RX_BUFSIZE]; //TCP客户端接收数据缓冲区 if((recvbuf = netconn_recv(conn))!=NULL) //接收到数据 { OS_ENTER_CRITICAL(); //关中断 memset(rx_buffer,0,TCP_CLIENT_RX_BUFSIZE); //数据接收缓冲区清零 ptr=recvbuf->ptr->payload; if(data_len = recvbuf->ptr->len==27){ memcpy(rx_buffer,ptr,27);//拷贝数据 tcp_flag=1; } netbuf_delete(recvbuf); OS_EXIT_CRITICAL(); //开中断 data_len=0; //复制完成后data_len要清零。 } else if(conn->err == ERR_CLSD) //关闭连接 { netconn_close(conn); netconn_delete(conn); break; } OSTimeDlyHMSM(0,0,5,0); } } /* ********************************************************************************************************* * IP配置、硬件初始化以及建立网络连接函数(该函数是服务器程序) *参数:无 *功能:建立网络连接、配置IP、硬件初始化。 *返回值:无 ********************************************************************************************************* */ void lwip_init_task(void){ uint8_t len ; struct ip_addr ipaddr_own, netmask_own, gw_own;//为本地设置IP地址,网关,掩码等配置信息 struct ip_addr ipaddr_romote, netmask_romote, gw_romote;//为远程的IP地址,网关,掩码等配置信息 static struct netif DM9161_netif ; err_t linkstatus ,err,recv_err ; tcpip_init(NULL, NULL); /*设置本地ip地址等信息*/ IP4_ADDR(&ipaddr_own, 192,168,1,100); IP4_ADDR(&netmask_own, 255,255,255,0); IP4_ADDR(&gw_own, 192,168,1,1); IP4_ADDR(&ipaddr_romote, 192,168,1,101); IP4_ADDR(&netmask_romote, 255,255,255,0); IP4_ADDR(&gw_romote, 192,168,1,1); /*初始化网络接口*/ netif_init(); netif_add(&DM9161_netif, &ipaddr_own, &netmask_own, &gw_own, NULL, ethernetif_init, tcpip_input); netif_set_default(&DM9161_netif); netif_set_up(&DM9161_netif); /* 建立一个连接结构 */ conn = netconn_new(NETCONN_TCP); /* 将连接绑定到一个本地任意IP地址的1000端口上 */ // netconn_bind(conn, &ipaddr_own, 1000); // /* 告诉这个连接监听进入的连接请求 */ // netconn_listen(conn); // /* 阻塞直至得到一个进入的连接 */ // newconn = netconn_accept(conn); linkstatus=netconn_connect(conn,&ipaddr_romote,10023); // while(linkstatus==ERR_OK){ // do_function(conn); // } if(linkstatus != ERR_OK) netconn_delete(conn); //返回值不等于ERR_OK,删除tcp_clientconn连接 else if (linkstatus == ERR_OK) //处理新连接的数据 { OSTaskCreateExt(taskLed1, (void *) 0, (OS_STK *)&GstkLed1[TASK_LED1_STK_SIZE - 1], (INT8U ) TASK_LED1_PRIO, (INT16U ) TASK_LED1_PRIO, (OS_STK *)&GstkLed1[0], (INT32U ) TASK_LED1_STK_SIZE, (void *) 0, (INT16U )(OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR)); OSTaskCreateExt(task2, (void *) 0, (OS_STK *)&Gstk2[TASK_2_STK_SIZE - 1], (INT8U ) TASK_2_PRIO, (INT16U ) TASK_2_PRIO, (OS_STK *)&Gstk2[0], (INT32U ) TASK_2_STK_SIZE, (void *) 0, (INT16U )(OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR)); OSTaskCreateExt(task3, (void *) 0, (OS_STK *)&Gstk3[TASK_3_STK_SIZE - 1], (INT8U ) TASK_3_PRIO, (INT16U ) TASK_3_PRIO, (OS_STK *)&Gstk3[0], (INT32U ) TASK_3_STK_SIZE, (void *) 0, (INT16U )(OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR)); OSTaskCreateExt(task4, (void *) 0, (OS_STK *)&Gstk4[TASK_4_STK_SIZE - 1], (INT8U ) TASK_4_PRIO, (INT16U ) TASK_4_PRIO, (OS_STK *)&Gstk4[0], (INT32U ) TASK_4_STK_SIZE, (void *) 0, (INT16U )(OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR)); OSTaskCreateExt(task5, (void *) 0, (OS_STK *)&Gstk5[TASK_5_STK_SIZE - 1], (INT8U ) TASK_5_PRIO, (INT16U ) TASK_5_PRIO, (OS_STK *)&Gstk5[0], (INT32U ) TASK_5_STK_SIZE, (void *) 0, (INT16U )(OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR)); OSTaskCreateExt(task6, (void *) 0, (OS_STK *)&Gstk6[TASK_6_STK_SIZE - 1], (INT8U ) TASK_6_PRIO, (INT16U ) TASK_6_PRIO, (OS_STK *)&Gstk6[0], (INT32U ) TASK_6_STK_SIZE, (void *) 0, (INT16U )(OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR)); OSTaskCreateExt(task7, (void *) 0, (OS_STK *)&Gstk7[TASK_7_STK_SIZE - 1], (INT8U ) TASK_7_PRIO, (INT16U ) TASK_7_PRIO, (OS_STK *)&Gstk7[0], (INT32U ) TASK_7_STK_SIZE, (void *) 0, (INT16U )(OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR)); OSTaskCreateExt(task8, (void *) 0, (OS_STK *)&Gstk8[TASK_8_STK_SIZE - 1], (INT8U ) TASK_8_PRIO, (INT16U ) TASK_8_PRIO, (OS_STK *)&Gstk8[0], (INT32U ) TASK_8_STK_SIZE, (void *) 0, (INT16U )(OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR)); OSTaskCreateExt(task9, (void *) 0, (OS_STK *)&Gstk9[TASK_9_STK_SIZE - 1], (INT8U ) TASK_9_PRIO, (INT16U ) TASK_9_PRIO, (OS_STK *)&Gstk9[0], (INT32U ) TASK_9_STK_SIZE, (void *) 0, (INT16U )(OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR)); OSTaskCreateExt(task10, (void *) 0, (OS_STK *)&Gstk10[TASK_10_STK_SIZE - 1], (INT8U ) TASK_10_PRIO, (INT16U ) TASK_10_PRIO, (OS_STK *)&Gstk10[0], (INT32U ) TASK_10_STK_SIZE, (void *) 0, (INT16U )(OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR)); while(1) { if(1) //有数据要发送 { uint8_t str[2]="\r\n"; uint8_t temp[27]=""; //TCP客户端发送数据缓冲区 const uint8_t *tcp_client_sendbuf; uint8_t *tcp_client_sendbuf1; OS_ENTER_CRITICAL(); // strcpy(tcp_client_sendbuf,temp_tem); // strcpy(tcp_client_sendbuf,temp_hum); // strcpy(tcp_client_sendbuf,temp_lx); // strcpy(tcp_client_sendbuf,temp_adc); // strcat(tcp_client_sendbuf,str); zuhe(temp_tem,temp_hum,temp_lx,temp_adc,substring(temp_hum,3,4),str,temp); tcp_client_sendbuf=temp; err =netconn_write(conn ,tcp_client_sendbuf,strlen((char*)tcp_client_sendbuf),NETCONN_COPY); //发送tcp_server_sentbuf中的数据 // UART_Send(LPC_UART0,tcp_client_sendbuf1,strlen(tcp_client_sendbuf1),BLOCKING); Tx_flag=0; OS_EXIT_CRITICAL(); } //OSTaskSuspend(OS_PRIO_SELF); OSTimeDlyHMSM(0,0,4,0); } } } void AppTimer(void *pdata) { SystemCoreClockUpdate(); /* Initialize the uC/OS-II ticker */ OS_CPU_SysTickInit();//SysTick_Config(SystemCoreClock/OS_TICKS_PER_SEC); NVIC_SetPriority(SysTick_IRQn,1); // /* Determine CPU capacity */ #if (OS_TASK_STAT_EN > 0) OSStatInit(); #endif lwip_init_task(); } int main(void) { NVIC_Configuration(); /* Initialize "uC/OS-II, The Real-Time Kernel" */ OSInit(); BSP_UartInit(0,9600); ADC_init(); lcd_init(); Init_BH1750(); //启动传感器 LED_Init(); ds18b20_init(); init_74HC595();//初始化译码器 task1_Sem = OSSemCreate(1); task2_Sem = OSSemCreate(0); task3_Sem = OSSemCreate(0); task4_Sem = OSSemCreate(0); /* Create the start task */ OSTaskCreateExt(AppTimer, (void *) 0, (OS_STK *)&Task_Timer_Stk[TASK_TIMER_STK_SIZE - 1], (INT8U ) TASK_TIMER_PRIO, (INT16U ) TASK_TIMER_PRIO, (OS_STK *)&Task_Timer_Stk[0], (INT32U ) TASK_TIMER_STK_SIZE, (void *) 0, (INT16U )(OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR)); //printf("os start !"); /* Start multitasking (i.e. give control to uC/OS-II) */ OSStart(); return 0; } UART0_IRQHandler(){ uint32_t intsrc, tmp, tmp1; OS_ENTER_CRITICAL(); /* Determine the interrupt source */ intsrc = UART_GetIntId(LPC_UART0); tmp = intsrc & UART_IIR_INTID_MASK; // Receive Line Status if (tmp == UART_IIR_INTID_RLS){ // Check line status tmp1 = UART_GetLineStatus(LPC_UART0); // Mask out the Receive Ready and Transmit Holding empty status tmp1 &= (UART_LSR_OE | UART_LSR_PE | UART_LSR_FE \ | UART_LSR_BI | UART_LSR_RXFE); // If any error exist if (tmp1) { // UART_IntErr(tmp1);//在错误中使用 } } // Receive Data Available or Character time-out if ((tmp == UART_IIR_INTID_RDA) || (tmp == UART_IIR_INTID_CTI)){ uint8_t tmpc; uint32_t rLen,i; // while(1){ rLen = UART_Receive((LPC_UART_TypeDef *)LPC_UART0, &tmpc, 1, NONE_BLOCKING);//中断中查询接收数据 rx_buffer[rx_count++] = tmpc; if (!rLen||(rx_count==UART_RX_BUFSIZE)) Rx_flag=1; // } // else break; // } // // Transmit Holding Empty //在发送中断中使用 // if (tmp == UART_IIR_INTID_THRE){ // Tx_flag=1; // // UART_IntTransmit(); // } } OS_EXIT_CRITICAL(); }
更多简介内容

推荐帖子

RS232/485串口设备联TCPIP以太网——串口服务器
传统串口设备快速变身网络设备方案 item.taobao.com/item.htm?id=10011661095 随着电气技术的迅猛发展,对电气设备自动化程度要求也越来越高。Internet网及技术的发展使人们越来越希望借助于互联网的方便快捷来实现各种自动化需求。通过internet后,PLC的通信能力大为增强,使得监控系统的配置更加灵活方便。 如何方便经济的将PLC接入互联网?我们本方案即
andyzhangcs TI技术论坛
9B9以太网
9B96开发板资料中给的例程中以太网部分http_set_ssi_handler() 这个函数是什么意思啊与SSIHandler()之间是什么关系啊? http_set_cgi_handler()这个函数也没看懂还有就是他与ControlCGIHandler()之间的关系 求高手解答 我是第一个作有关以太网的东西 什么东西都是从头学的 有很多东西不会都不知道从哪下手 还希望大家能帮忙推荐一下资
vicxue10 TI技术论坛
以太网与宽带之间的区别
     以太网的连接:本地连接只出现在微软Windows XP/7操作系统中,Windows 8/8.1系统中,本地连接被更名为“以太网”。不管是“本地连接”还是“以太网”实际上都是对电脑上物理网卡(网路适配器)的反映。       以太网是当今现有局域网采用的最通用的通信协议标准,组建于七十年代早期。Ethernet(以太网)是一种传输速率为10Mbps的常用局域网(LAN)标准。在
灞波儿奔 【无线连接】
基于Zigbee的以太网透传实验
本帖最后由 wateras1 于 2014-8-31 16:53 编辑                今天闲来无事,用手上的板子做了一个基于zigbee的以太网透传实验,什么都不讲了,先上图。     在图片中有两个模块,一个是zigbee模块,一个是以太网网关。做这个实验之前,我已经将zigbee做成了透传模块,所以不需要对zigbee编程,只要对其收发数据就行。主要是对以太网网关的
wateras1 【Zigbee 部落】
10G以太网测试方案介绍
引言 本文主要介绍10G以太网协议结构、PMA子层、PCS子层、RS层和MAC子层功能,并针对某项目中10GE LAN业务的测试方案实现做具体介绍。本文对以太网测试的理解有一定参考意义。     正文 10G以太网协议介绍 10Gbps以太网标准由IEEE 802.3工作组于2000年正式制定,10G以太网使用与以往10
鬼谷清泉 下载中心专版
关于简单的额以太网口实验的问题
我打算用easyarm8962这个单片机做一个简单的实验。没有操作系统,就是想通过网线连接电脑网卡和arm板的以太网口,不通过高层协议,通过帧实现通讯。 有一个设备驱动库Stellaris,这里面封装好了很多函数。 比如EthernetPacketPut(ETH_BASE, pucMyTxPacket, ulMyTxPacketLength)函数,就是把指针pucMyTxPacket指向的区域
秋林 嵌入式系统编程

评论


个人中心

意见反馈

求资源

回顶部

下载专区


TI最新应用解决方案

工业电子 汽车电子 个人电子

搜索下次设计所需的
TI 器件

● 目前在售器件有45,000款
● 6.99美元标准运费,不受时间和地点限制
● 无最低起订量要求

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

EEWorld电子技术资料下载——分享有价值的资料

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2018 EEWORLD.com.cn, Inc. All rights reserved
$(function(){ var appid = $(".select li a").data("channel"); $(".select li a").click(function(){ var appid = $(this).data("channel"); $('.select dt').html($(this).html()); $('#channel').val(appid); }) })