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

📄 samotor.c

📁 TMS320C6713的步进电机控制实验程序
💻 C
字号:
#include "ICETEK-C6713-A.h"

int nAddStep,nStep,nCount;

main()
{
	unsigned char dbScanCode;
	char cKey;
    
    nCount=nStep=0; nAddStep=1; 
    init_emif();	// 初始化emif
    InitCTR();		// 初始化ICETEK-CTR
    InitInterrupt();
    *((unsigned short int *)0x0901f000e)= 0x0c2;
    while ( 1 )
    {
		if ( nCount>16 )
		{
			nCount=0;
			dbScanCode=GetKey();
			if ( dbScanCode!=0 && dbScanCode!=0x0ff )
			{
				if ( dbScanCode==SCANCODE_Enter )	break;
				else
				{
					cKey=ConvertScanToChar(dbScanCode);
					if ( cKey=='4' )	nAddStep=1;
					else if ( cKey=='6' )	nAddStep=-1;
				}
			}
		}
    }
	CSR&=0xfffffffe;	// 关中断 GIE=0
	TIMER1CTL&=0x0ffffff3f;	// GO=0 /HLD=0 =>计数器暂停
	*((unsigned short int *)0x0901f000e)= 0x0c0;
	CloseCTR();
	exit(0);
}

void interrupt Timer()	//中断响应函数
{
	CTRLR=pwm[nStep];
	nStep+=nAddStep;
	if ( nStep<0 )	nStep=7;
	else if ( nStep>7 )	nStep=0;
	nCount++; 
}

void InitInterrupt(void)
{
	// 设置中断控制寄存器
	CSR&=0xfffffffe;	// 关中断 GIE=0
	ISTP=0x00000c00;	// 重置中断向量表到0C00h
   	IMH=0x08000000;		// 指定Timer1产生int15中断
   	IML=0;
   	ICR=0xff;			// 清除等待的中断
	IER=0x8003;			// 使能int15中断
	// 设置定时器产生中断信号的频率
	TIMER1PRD=0x1e84;	// 定时器1的周期
	TIMER1CTL=0x3c0;	// 开始计数
	CSR=CSR|1; 			// 开中断
}

⌨️ 快捷键说明

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