usb.c

来自「dsp芯片TMS320C5416实验程序」· C语言 代码 · 共 75 行

C
75
字号
#include <stdio.h>
#include "DataType.h"
#include "d12def.h"

main()
{
	unsigned int id = 0x1012;
	
	// 判断系统主频
	#define CLKMD 	*(volatile unsigned int*)0x58
	#define BSCR	*(volatile unsigned int*)0x29
	#define SWCR	*(volatile unsigned int*)0x2B
	#define SWWSR	*(volatile unsigned int*)0x28
	
	switch(CLKMD&0xF00F)
	{
		case 0xE007:				// PLL*15
			SWWSR |= 0x7000;
			SWCR  |= 0x0001;
		case 0x9007:				// PLL*10
			SWWSR &= ~0x7000;
			SWWSR |= 0x5000;
			SWCR  |= 0x0001;
			break;
		case 0x4007:				// PLL*5
			SWWSR |= 0x5000;
			SWCR  &= 0x0000;
			break;
		case 0x1007:				// PLL*2
			SWWSR &= ~0x7000;
			SWWSR |= 0x5000;
			SWCR  &= 0x0000;
			break;
		case 0xF007:				// PLL*1
		case 0x0000:				// 1/2 * 
		case 0xF000:				// 1/4
		default:
			SWWSR &= ~0x7000;
			SWWSR |= 0x3000;
			SWCR  &= 0x0000;
	}
	
	/* 关闭中断,并将中断向量表设置为0x80 */
	asm("  	LDM		PMST,A");
	asm("  	AND		#7FH,A");
	asm("  	OR		#80h,A");
	asm("  	STLM 	A,PMST");	
	asm("   STM 	#0h,IMR ");
	
	/* 检测USB芯片 */
	id = D12RdChipId(); 
	
	if(id!=0x1012)
	{
		while(1) Dead();
	}
	
	UsbInit();
	
	/* 开启中断 */
	asm("   LDM 	IMR,A ");
	asm("   OR      #100h, A");
	asm("   STLM    A, IMR");
	asm("   RSBX  	INTM ");
	asm("   NOP ");
	asm("   NOP ");
	
	/* 循环等待,永不退出 */
	while(1)
	{
		//extern void  usbd12_isr(void);
		//usbd12_isr();
	};		
}

⌨️ 快捷键说明

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