This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

2812(sci+pwm)

我想把sci的模块和PWM模块合起来,实现SCI控制pwm,所以我把发PWM的程序搞到SCI的工程里,BUILD没出错,但是还只是能实现sci的功能。main函数如下,求教:

*文件名:Sci01.c
*
*功 能:使用SCIA模块和PC机进行串口通信,等待PC机上的串口调试软件向DSP发送数据,
* DSP接收到上位机发送的数据之后,将这些数据发回PC机,显示在串口调试软件
* 中。
*
*说 明:本实验中SCIA模块的发送和接收采用查询方式实现,空闲线模式波特率为19200,
* 通信数据格式为1位停止位,8位数据位,无校验位
*
*作 者: likyo from hellodsp
*
*版 本: V1.0
*
****************************************************************************/
#include "DSP28_Device.h"
#include "DSP28_Globalprototypes.h"

Uint32 intcount;
int increase;
int decrease;

unsigned int Sci_VarRx[100]; //用于存放接收到的数据
unsigned int i;
unsigned int Send_Flag; //发送标志位。1:有数据需要发送 0:无数据需要发送

/****************************************************************************
*
*名 称:main()
*
*功 能:完成初始化工作,并采用查询方式实现SCIA的发送和接收功能
*
*入口参数:无
*
*出口参数:无
*
****************************************************************************/

void main(void)
{
InitSysCtrl(); //初始化系统函数

DINT;
IER = 0x0000; //禁止CPU中断
IFR = 0x0000; //清除CPU中断标志

InitPieCtrl(); //初始化PIE控制寄存器

InitPieVectTable(); //初始化PIE中断向量表

InitGpio(); //初始化Gpio口
InitEv(); //初始化EV

InitPeripherals(); //初始化SCIA

for(i = 0; i < 100; i++) //初始化数据变量
{
Sci_VarRx[i] = 0;
}

i = 0;

Send_Flag = 0;

for(;;)
{

/*查询方式实现发送功能*/
if((SciaTx_Ready() == 1) && (Send_Flag == 1)) //发送准备已经就绪而且有数据需要发送
{
SciaRegs.SCITXBUF = Sci_VarRx[i]; //发送数据
Send_Flag = 0; //清标志位
i++;
if(i == 100)
{
i = 0;
}
}

/*查询方式实现接收功能*/
if(SciaRx_Ready() == 1) //接收数据准备已经就绪
{
Sci_VarRx[i] = SciaRegs.SCIRXBUF.all; //接收数据
Send_Flag = 1; //标志位置位,有数据等待发送
}
}

if(Sci_VarRx[i]==1)

intcount=0; //T1定时器周期中断计数器
increase=0; //占空比逐渐变小的变化趋势标志位
decrease=1; //占空比逐渐变大

PieCtrl.PIEIER2.bit.INTx4=1;
IER|=M_INT2;
EINT;
ERTM;
EvaRegs.T1CON.bit.TENABLE=1;
while(1)
{
}

}


//===========================================================================
// No more.