initial.c
来自「永磁同步电机驱动控制」· C语言 代码 · 共 152 行
C
152 行
/* ===================================================================== */
/* File name : MAIN.C */
/* Author: HU QINGBO */
/* Data: 2006.9.29 */
/* Version: 1.0 */
/* Organization: DSP MOTO CONTROL PROGROM
/* Zhejiang Tianhuang Techonology Industry Ltd., */
/* Description : C-PROGRAM TO CONTROL A DC USE F2407A */
/* ================================================================== */
/* 头文件 */
#include "F2407_c.H"
void system_initial()
{
asm(" out 600h,0ffffh");
asm(" setc INTM");
asm(" setc SXM");
asm(" clrc OVM");
asm(" clrc CNF");
WDCR=0X6f;
WDKEY=0X55;
WDKEY=0XAA;
SCSR1=0X00FC;
IMR=0;
IFR=IFR;
}
void ad_initial()
{
ADCTRL1=0X4000; // Reset ADC module
asm(" nop");
ADCTRL1=0X3020; // Take ADC out of reset,不受仿真悬挂影响
// 启动/停止模式,低优先级,最快的转换速度
// 双排序工作,禁止其他工作模式
MAX_CONV=0X2; // Setup for 3 conversions
CHSELSEQ1=0X3210; // Convert Channels 0,1,2,3;0=ib,1=ia,2=signal,3=vdc
CHSELSEQ2=0X7654; // Convert Channels 4,5,6,7
CHSELSEQ3=0XBA98; // Convert Channels 8,9,10,11
CHSELSEQ4=0XFEDC; // Convert Channels 12,13,14,15
ADCTRL2=0X4000; //复位通道指针。
}
void io_initial()
{
MCRA=0X0FFF; //B4-B7,PWM1-6,CAP1-3,SCI,XINT ;
MCRB=0XFFFF; //仿真口,SPI,CAN ,XINT2
MCRC=0X0; //E0-E7,CAP5-6,F2-F6
PADATDIR=0X0; //NO IO PORT
PBDATDIR=0X0; //B6,B7 OUTPUT PORT
PCDATDIR=0X0; //NO IO PORT
PDDATDIR=0X0; //NO IO PORT
PEDATDIR=0X0; //E2-E6 INPUT PORT KEY
PFDATDIR=0X0; //F2-F5 OUTPUT PORT,F6 INPUT PORT
}
void spi_initial()
{
SPICCR=0X000F; //设置数据长度为16位,复位SPI
SPICTL=0X000e; //主工作模式,正常的SPI时钟方式,允许发送
SPIBRR=0X07F; //Set up the SPI to 250k speed.
SPICCR=0X008F; //启动SPI时钟.
}
void ev_initial()
{
EVAIMRA=0X80; //开T1周期
EVAIMRB=0X0;
EVAIMRC=0X0;
EVAIFRA=0XFFFF; //清中断标志
EVAIFRB=0XFFFF;
EVAIFRC=0XFFFF;
GPTCONA=0X0; // NO TCMPR
T1PR=500; //T1周期25微秒
T1CNT=0;
T1CON=0X0800;
ACTRA=0X999; //PWM2,4 ACTIVE LOW,OTHER LOW
DBTCONA=0XFE4; //NO DEADTIME
COMCONA=0X08A00; //CMPR UINT ON, ACTR ,ENABLE CMPR
T1CMPR=0;
CMPR1=0;
CMPR2=0;
CMPR3=0;
T2CON=0X1870; //定向增减,enable,qep
T2PR=0XFFFF;
T2CNT=0;
EVBIMRA=0X0;
EVBIMRB=0X0;
EVBIMRC=0X6; //CAP5,CAP6 INT
EVBIFRA=0XFFFF;
EVBIFRB=0XFFFF;
EVBIFRC=0XFFFF;
GPTCONB=0;
T4CON=0;
T3CON=0;
T3CNT=0;
T3PR=0;
T4PR=0;
T4CNT=0;
}
void cap_initial()
{
CAPCONA=0; //使能捕获单元,选T2,捕获双沿 //清捕获寄存器单元
CAP1FBOT=CAP1FBOT;
CAP1FBOT=CAP1FBOT;
CAP2FBOT=CAP2FBOT;
CAP2FBOT=CAP2FBOT;
CAP3FBOT=CAP3FBOT;
CAP3FBOT=CAP3FBOT;
CAPFIFOA=0; //防止出现丢脉冲的现象
CAPCONB=0;
CAP4FBOT=CAP4FBOT;
CAP4FBOT=CAP4FBOT;
CAP5FBOT=CAP5FBOT;
CAP5FBOT=CAP5FBOT;
CAP6FBOT=CAP6FBOT;
CAP6FBOT=CAP6FBOT;
CAPFIFOB=0; //防止出现丢脉冲的现象
}
void sci_initial()
{
SCICCR=0X27;
SCICTL1=0X3;
SCICTL2=0X2;
SCIHBAUD=0X0;
SCILBAUD=0X2A;
SCICTL1=0X23;
SCIPRI=0X0;
}
void xint_initial()
{
XINT1CR=0X0;
XINT2CR=0X0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?