⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lss

📁 高性能USB转串口(可高达10Mbps)完整的源代码
💻 LSS
📖 第 1 页 / 共 5 页
字号:
  100558:	1c20      	adds	r0, r4, #0
  10055a:	f7ff ff1b 	bl	100394 <AT91F_USB_SendZlp>
		pUDP->UDP_FADDR = (AT91C_UDP_FEN | wValue);
  10055e:	2380      	movs	r3, #128
  100560:	005b      	lsls	r3, r3, #1
  100562:	4642      	mov	r2, r8
  100564:	4313      	orrs	r3, r2
  100566:	60a3      	str	r3, [r4, #8]
  100568:	2300      	movs	r3, #0
  10056a:	2a00      	cmp	r2, #0
  10056c:	d000      	beq.n	100570 <AT91F_UDP_IsConfigured+0x19c>
  10056e:	2301      	movs	r3, #1
		pUDP->UDP_GLBSTATE  = (wValue) ? AT91C_UDP_FADDEN : 0;
  100570:	6063      	str	r3, [r4, #4]
  100572:	e0c4      	b.n	1006fe <AT91F_UDP_IsConfigured+0x32a>
		break;
	case STD_SET_CONFIGURATION:
		pCdc->currentConfiguration = wValue;
  100574:	4643      	mov	r3, r8
  100576:	712b      	strb	r3, [r5, #4]
		AT91F_USB_SendZlp(pUDP);
  100578:	1c20      	adds	r0, r4, #0
  10057a:	f7ff ff0b 	bl	100394 <AT91F_USB_SendZlp>
		pUDP->UDP_GLBSTATE  = (wValue) ? AT91C_UDP_CONFG : AT91C_UDP_FADDEN;
  10057e:	4640      	mov	r0, r8
  100580:	2800      	cmp	r0, #0
  100582:	d100      	bne.n	100586 <AT91F_UDP_IsConfigured+0x1b2>
  100584:	e0b5      	b.n	1006f2 <AT91F_UDP_IsConfigured+0x31e>
  100586:	2302      	movs	r3, #2
  100588:	6063      	str	r3, [r4, #4]
		pUDP->UDP_CSR[1] = (wValue) ? (AT91C_UDP_EPEDS | AT91C_UDP_EPTYPE_BULK_OUT) : 0;
  10058a:	2382      	movs	r3, #130
  10058c:	021b      	lsls	r3, r3, #8
  10058e:	6363      	str	r3, [r4, #52]
		pUDP->UDP_CSR[2] = (wValue) ? (AT91C_UDP_EPEDS | AT91C_UDP_EPTYPE_BULK_IN)  : 0;
  100590:	2386      	movs	r3, #134
  100592:	021b      	lsls	r3, r3, #8
  100594:	63a3      	str	r3, [r4, #56]
  100596:	2387      	movs	r3, #135
  100598:	021b      	lsls	r3, r3, #8
		pUDP->UDP_CSR[3] = (wValue) ? (AT91C_UDP_EPEDS | AT91C_UDP_EPTYPE_INT_IN)   : 0;
  10059a:	63e3      	str	r3, [r4, #60]
  10059c:	e0af      	b.n	1006fe <AT91F_UDP_IsConfigured+0x32a>
		break;
	case STD_GET_CONFIGURATION:
		AT91F_USB_SendData(pUDP, (char *) &(pCdc->currentConfiguration), sizeof(pCdc->currentConfiguration));
  10059e:	1d29      	adds	r1, r5, #4
  1005a0:	1c20      	adds	r0, r4, #0
  1005a2:	2201      	movs	r2, #1
  1005a4:	f7ff feb8 	bl	100318 <AT91F_USB_SendData>
  1005a8:	e0a9      	b.n	1006fe <AT91F_UDP_IsConfigured+0x32a>
		break;
	case STD_GET_STATUS_ZERO:
		wStatus = 0;
  1005aa:	4669      	mov	r1, sp
  1005ac:	3102      	adds	r1, #2
  1005ae:	2300      	movs	r3, #0
  1005b0:	800b      	strh	r3, [r1, #0]
		AT91F_USB_SendData(pUDP, (char *) &wStatus, sizeof(wStatus));
  1005b2:	1c20      	adds	r0, r4, #0
  1005b4:	2202      	movs	r2, #2
  1005b6:	f7ff feaf 	bl	100318 <AT91F_USB_SendData>
  1005ba:	e0a0      	b.n	1006fe <AT91F_UDP_IsConfigured+0x32a>
		break;
	case STD_GET_STATUS_INTERFACE:
		wStatus = 0;
  1005bc:	4669      	mov	r1, sp
  1005be:	3102      	adds	r1, #2
  1005c0:	2300      	movs	r3, #0
  1005c2:	800b      	strh	r3, [r1, #0]
		AT91F_USB_SendData(pUDP, (char *) &wStatus, sizeof(wStatus));
  1005c4:	1c20      	adds	r0, r4, #0
  1005c6:	2202      	movs	r2, #2
  1005c8:	f7ff fea6 	bl	100318 <AT91F_USB_SendData>
  1005cc:	e097      	b.n	1006fe <AT91F_UDP_IsConfigured+0x32a>
		break;
	case STD_GET_STATUS_ENDPOINT:
		wStatus = 0;
  1005ce:	4669      	mov	r1, sp
  1005d0:	3102      	adds	r1, #2
  1005d2:	2300      	movs	r3, #0
  1005d4:	800b      	strh	r3, [r1, #0]
		wIndex &= 0x0F;
  1005d6:	230f      	movs	r3, #15
  1005d8:	4662      	mov	r2, ip
  1005da:	401a      	ands	r2, r3
		if ((pUDP->UDP_GLBSTATE & AT91C_UDP_CONFG) && (wIndex <= 3)) {
  1005dc:	6863      	ldr	r3, [r4, #4]
  1005de:	0798      	lsls	r0, r3, #30
  1005e0:	d50d      	bpl.n	1005fe <AT91F_UDP_IsConfigured+0x22a>
  1005e2:	2a03      	cmp	r2, #3
  1005e4:	d80b      	bhi.n	1005fe <AT91F_UDP_IsConfigured+0x22a>
			wStatus = (pUDP->UDP_CSR[wIndex] & AT91C_UDP_EPEDS) ? 0 : 1;
  1005e6:	0093      	lsls	r3, r2, #2
  1005e8:	191b      	adds	r3, r3, r4
  1005ea:	6b1a      	ldr	r2, [r3, #48]
  1005ec:	0bd2      	lsrs	r2, r2, #15
  1005ee:	2301      	movs	r3, #1
  1005f0:	4393      	bics	r3, r2
  1005f2:	800b      	strh	r3, [r1, #0]
			AT91F_USB_SendData(pUDP, (char *) &wStatus, sizeof(wStatus));
  1005f4:	1c20      	adds	r0, r4, #0
  1005f6:	2202      	movs	r2, #2
  1005f8:	f7ff fe8e 	bl	100318 <AT91F_USB_SendData>
  1005fc:	e07f      	b.n	1006fe <AT91F_UDP_IsConfigured+0x32a>
		}
		else if ((pUDP->UDP_GLBSTATE & AT91C_UDP_FADDEN) && (wIndex == 0)) {
  1005fe:	6863      	ldr	r3, [r4, #4]
  100600:	2001      	movs	r0, #1
  100602:	4203      	tst	r3, r0
  100604:	d00c      	beq.n	100620 <AT91F_UDP_IsConfigured+0x24c>
  100606:	2a00      	cmp	r2, #0
  100608:	d10a      	bne.n	100620 <AT91F_UDP_IsConfigured+0x24c>
			wStatus = (pUDP->UDP_CSR[wIndex] & AT91C_UDP_EPEDS) ? 0 : 1;
  10060a:	6b23      	ldr	r3, [r4, #48]
  10060c:	4669      	mov	r1, sp
  10060e:	3102      	adds	r1, #2
  100610:	0bdb      	lsrs	r3, r3, #15
  100612:	4398      	bics	r0, r3
  100614:	8008      	strh	r0, [r1, #0]
			AT91F_USB_SendData(pUDP, (char *) &wStatus, sizeof(wStatus));
  100616:	1c20      	adds	r0, r4, #0
  100618:	2202      	movs	r2, #2
  10061a:	f7ff fe7d 	bl	100318 <AT91F_USB_SendData>
  10061e:	e06e      	b.n	1006fe <AT91F_UDP_IsConfigured+0x32a>
		}
		else
			AT91F_USB_SendStall(pUDP);
  100620:	1c20      	adds	r0, r4, #0
  100622:	f7ff fec7 	bl	1003b4 <AT91F_USB_SendStall>
  100626:	e06a      	b.n	1006fe <AT91F_UDP_IsConfigured+0x32a>
		break;
	case STD_SET_FEATURE_ZERO:
		AT91F_USB_SendStall(pUDP);
  100628:	1c20      	adds	r0, r4, #0
  10062a:	f7ff fec3 	bl	1003b4 <AT91F_USB_SendStall>
  10062e:	e066      	b.n	1006fe <AT91F_UDP_IsConfigured+0x32a>
	    break;
	case STD_SET_FEATURE_INTERFACE:
		AT91F_USB_SendZlp(pUDP);
  100630:	1c20      	adds	r0, r4, #0
  100632:	f7ff feaf 	bl	100394 <AT91F_USB_SendZlp>
  100636:	e062      	b.n	1006fe <AT91F_UDP_IsConfigured+0x32a>
		break;
	case STD_SET_FEATURE_ENDPOINT:
		wIndex &= 0x0F;
		if ((wValue == 0) && wIndex && (wIndex <= 3)) {
  100638:	4642      	mov	r2, r8
  10063a:	2a00      	cmp	r2, #0
  10063c:	d10c      	bne.n	100658 <AT91F_UDP_IsConfigured+0x284>
  10063e:	230f      	movs	r3, #15
  100640:	4660      	mov	r0, ip
  100642:	4003      	ands	r3, r0
  100644:	d008      	beq.n	100658 <AT91F_UDP_IsConfigured+0x284>
  100646:	2b03      	cmp	r3, #3
  100648:	d806      	bhi.n	100658 <AT91F_UDP_IsConfigured+0x284>
			pUDP->UDP_CSR[wIndex] = 0;
  10064a:	009b      	lsls	r3, r3, #2
  10064c:	191b      	adds	r3, r3, r4
  10064e:	631a      	str	r2, [r3, #48]
			AT91F_USB_SendZlp(pUDP);
  100650:	1c20      	adds	r0, r4, #0
  100652:	f7ff fe9f 	bl	100394 <AT91F_USB_SendZlp>
  100656:	e052      	b.n	1006fe <AT91F_UDP_IsConfigured+0x32a>
		}
		else
			AT91F_USB_SendStall(pUDP);
  100658:	1c20      	adds	r0, r4, #0
  10065a:	f7ff feab 	bl	1003b4 <AT91F_USB_SendStall>
  10065e:	e04e      	b.n	1006fe <AT91F_UDP_IsConfigured+0x32a>
		break;
	case STD_CLEAR_FEATURE_ZERO:
		AT91F_USB_SendStall(pUDP);
  100660:	1c20      	adds	r0, r4, #0
  100662:	f7ff fea7 	bl	1003b4 <AT91F_USB_SendStall>
  100666:	e04a      	b.n	1006fe <AT91F_UDP_IsConfigured+0x32a>
	    break;
	case STD_CLEAR_FEATURE_INTERFACE:
		AT91F_USB_SendZlp(pUDP);
  100668:	1c20      	adds	r0, r4, #0
  10066a:	f7ff fe93 	bl	100394 <AT91F_USB_SendZlp>
  10066e:	e046      	b.n	1006fe <AT91F_UDP_IsConfigured+0x32a>
		break;
	case STD_CLEAR_FEATURE_ENDPOINT:
		wIndex &= 0x0F;
		if ((wValue == 0) && wIndex && (wIndex <= 3)) {
  100670:	4642      	mov	r2, r8
  100672:	2a00      	cmp	r2, #0
  100674:	d11a      	bne.n	1006ac <AT91F_UDP_IsConfigured+0x2d8>
  100676:	230f      	movs	r3, #15
  100678:	4660      	mov	r0, ip
  10067a:	4003      	ands	r3, r0
  10067c:	d016      	beq.n	1006ac <AT91F_UDP_IsConfigured+0x2d8>
  10067e:	2b03      	cmp	r3, #3
  100680:	d814      	bhi.n	1006ac <AT91F_UDP_IsConfigured+0x2d8>
			if (wIndex == 1)
  100682:	2b01      	cmp	r3, #1
  100684:	d103      	bne.n	10068e <AT91F_UDP_IsConfigured+0x2ba>
				pUDP->UDP_CSR[1] = (AT91C_UDP_EPEDS | AT91C_UDP_EPTYPE_BULK_OUT);
  100686:	2382      	movs	r3, #130
  100688:	021b      	lsls	r3, r3, #8
  10068a:	6363      	str	r3, [r4, #52]
  10068c:	e00a      	b.n	1006a4 <AT91F_UDP_IsConfigured+0x2d0>
			else if (wIndex == 2)
  10068e:	2b02      	cmp	r3, #2
  100690:	d103      	bne.n	10069a <AT91F_UDP_IsConfigured+0x2c6>
				pUDP->UDP_CSR[2] = (AT91C_UDP_EPEDS | AT91C_UDP_EPTYPE_BULK_IN);
  100692:	2386      	movs	r3, #134
  100694:	021b      	lsls	r3, r3, #8
  100696:	63a3      	str	r3, [r4, #56]
  100698:	e004      	b.n	1006a4 <AT91F_UDP_IsConfigured+0x2d0>
			else if (wIndex == 3)
  10069a:	2b03      	cmp	r3, #3
  10069c:	d102      	bne.n	1006a4 <AT91F_UDP_IsConfigured+0x2d0>
				pUDP->UDP_CSR[3] = (AT91C_UDP_EPEDS | AT91C_UDP_EPTYPE_ISO_IN);
  10069e:	2385      	movs	r3, #133
  1006a0:	021b      	lsls	r3, r3, #8
  1006a2:	63e3      	str	r3, [r4, #60]
			AT91F_USB_SendZlp(pUDP);
  1006a4:	1c20      	adds	r0, r4, #0
  1006a6:	f7ff fe75 	bl	100394 <AT91F_USB_SendZlp>
  1006aa:	e028      	b.n	1006fe <AT91F_UDP_IsConfigured+0x32a>
		}
		else
			AT91F_USB_SendStall(pUDP);
  1006ac:	1c20      	adds	r0, r4, #0
  1006ae:	f7ff fe81 	bl	1003b4 <AT91F_USB_SendStall>
  1006b2:	e024      	b.n	1006fe <AT91F_UDP_IsConfigured+0x32a>
		break;

	// handle CDC class requests
	case SET_LINE_CODING:
		while ( !(pUDP->UDP_CSR[0] & AT91C_UDP_RX_DATA_BK0) );
  1006b4:	6b23      	ldr	r3, [r4, #48]
  1006b6:	2202      	movs	r2, #2
  1006b8:	4213      	tst	r3, r2
  1006ba:	d0fb      	beq.n	1006b4 <AT91F_UDP_IsConfigured+0x2e0>
		pUDP->UDP_CSR[0] &= ~(AT91C_UDP_RX_DATA_BK0);
  1006bc:	6b23      	ldr	r3, [r4, #48]
  1006be:	4393      	bics	r3, r2
  1006c0:	6323      	str	r3, [r4, #48]
		AT91F_USB_SendZlp(pUDP);
  1006c2:	1c20      	adds	r0, r4, #0
  1006c4:	f7ff fe66 	bl	100394 <AT91F_USB_SendZlp>
  1006c8:	e019      	b.n	1006fe <AT91F_UDP_IsConfigured+0x32a>
		break;
	case GET_LINE_CODING:
		AT91F_USB_SendData(pUDP, (char *) &line, MIN(sizeof(line), wLength));
  1006ca:	2f08      	cmp	r7, #8
  1006cc:	d901      	bls.n	1006d2 <AT91F_UDP_IsConfigured+0x2fe>
  1006ce:	2208      	movs	r2, #8
  1006d0:	e000      	b.n	1006d4 <AT91F_UDP_IsConfigured+0x300>
  1006d2:	1c3a      	adds	r2, r7, #0
  1006d4:	4913      	ldr	r1, [pc, #76]	(100724 <.text+0x724>)
  1006d6:	1c20      	adds	r0, r4, #0
  1006d8:	f7ff fe1e 	bl	100318 <AT91F_USB_SendData>
  1006dc:	e00f      	b.n	1006fe <AT91F_UDP_IsConfigured+0x32a>
		break;
	case SET_CONTROL_LINE_STATE:
		pCdc->currentConnection = wValue;
  1006de:	4642      	mov	r2, r8
  1006e0:	716a      	strb	r2, [r5, #5]
		AT91F_USB_SendZlp(pUDP);
  1006e2:	1c20      	adds	r0, r4, #0
  1006e4:	f7ff fe56 	bl	100394 <AT91F_USB_SendZlp>
  1006e8:	e009      	b.n	1006fe <AT91F_UDP_IsConfigured+0x32a>
		break;
	default:
		AT91F_USB_SendStall(pUDP);
  1006ea:	1c20      	adds	r0, r4, #0
  1006ec:	f7ff fe62 	bl	1003b4 <AT91F_USB_SendStall>
  1006f0:	e005      	b.n	1006fe <AT91F_UDP_IsConfigured+0x32a>
  1006f2:	2301      	movs	r3, #1
  1006f4:	6063      	str	r3, [r4, #4]
  1006f6:	2300      	movs	r3, #0
  1006f8:	6363      	str	r3, [r4, #52]
  1006fa:	63a3      	str	r3, [r4, #56]
  1006fc:	e74d      	b.n	10059a <AT91F_UDP_IsConfigured+0x1c6>
  1006fe:	7928      	ldrb	r0, [r5, #4]
  100700:	b002      	add	sp, #8
  100702:	bc04      	pop	{r2}
  100704:	4690      	mov	r8, r2
  100706:	bcf0      	pop	{r4, r5, r6, r7}
  100708:	bc02      	pop	{r1}
  10070a:	4708      	bx	r1
  10070c:	0301      	lsls	r1, r0, #12
  10070e:	0000      	lsls	r0, r0, #0
  100710:	0302      	lsls	r2, r0, #12
  100712:	0000      	lsls	r0, r0, #0
  100714:	2021      	movs	r0, #33
  100716:	0000      	lsls	r0, r0, #0
  100718:	21a1      	movs	r1, #161
  10071a:	0000      	lsls	r0, r0, #0
  10071c:	0af0      	lsrs	r0, r6, #11
  10071e:	0010      	lsls	r0, r2, #0
  100720:	0b02      	lsrs	r2, r0, #12
  100722:	0010      	lsls	r0, r2, #0
  100724:	01c8      	lsls	r0, r1, #7
  100726:	0020      	lsls	r0, r4, #0

00100728 <AT91F_UDP_Write>:
  100728:	b5f0      	push	{r4, r5, r6, r7, lr}
  10072a:	1c06      	adds	r6, r0, #0
  10072c:	1c0f      	adds	r7, r1, #0
  10072e:	6804      	ldr	r4, [r0, #0]
  100730:	1c10      	adds	r0, r2, #0
  100732:	2a40      	cmp	r2, #64
  100734:	d900      	bls.n	100738 <AT91F_UDP_Write+0x10>
  100736:	2040      	movs	r0, #64
  100738:	1a15      	subs	r5, r2, r0
  10073a:	1e41      	subs	r1, r0, #1
  10073c:	d306      	bcc.n	10074c <AT91F_UDP_Write+0x24>
  10073e:	1c3a      	adds	r2, r7, #0
  100740:	7813      	ldrb	r3, [r2, #0]
  100742:	65a3      	str	r3, [r4, #88]
  100744:	3201      	adds	r2, #1
  100746:	3901      	subs	r1, #1
  100748:	d2fa      	bcs.n	100740 <AT91F_UDP_Write+0x18>
  10074a:	183f      	adds	r7, r7, r0
  10074c:	6ba3      	ldr	r3, [r4, #56]
  10074e:	2210      	movs	r2, #16
  100750:	4313      	orrs	r3, r2
  100752:	63a3      	str	r3, [r4, #56]
  100754:	2d00      	cmp	r5, #0
  100756:	d029      	beq.n	1007ac <AT91F_UDP_Write+0x84>
  100758:	1c28      	adds	r0, r5, #0
  10075a:	2d40      	cmp	r5, #64
  10075c:	d900      	bls.n	100760 <AT91F_UDP_Write+0x38>
  10075e:	2040      	movs	r0, #64
  100760:	1a2d      	subs	r5, r5, r0
  100762:	1e41      	subs	r1, r0, #1
  100764:	d30c      	bcc.n	100780 <AT91F_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -