TI中文支持网
TI专业的中文技术问题搜集分享网站

做SCI测试的时候的一个问题?

for(i=0; i< 8; i++)                   //要发送的下一个数据
    {
    sdataA[i] = (sdataA[i]+1) & 0x00FF;   

请问这个语句是什么意思?? 

Jason Wu4:

这是哪的代码,把上下文贴出来,这代码应该有问题

for(i=0; i< 8; i++)                   //要发送的下一个数据
    {
    sdataA[i] = (sdataA[i]+1) & 0x00FF;   

请问这个语句是什么意思?? 

datong fang:

回复 Jason Wu4:

//#####################################################################//文件:  Example_281xSci_FFDLB_int.c//说明:  该程序是SCI中断发送、接收的典型程序,//       采用内部连接的自循环模式,即自发、自接//#####################################################################//SCI-A 发送的数据流://00 01 02 03 04 05 06 07//01 02 03 04 05 06 07 08//02 03 04 05 06 07 08 09//….//FE FF 00 01 02 03 04 05//FF 00 01 02 03 04 05 06//etc..//SCI-B 发送的数据流://FF FE FD FC FB FA F9 F8//FE FD FC FB FA F9 F8 F7//FD FC FB FA F9 F8 F7 F6//….//01 00 FF FE FD FC FB FA//00 FF FE FD FC FB FA F9//etc..//检查变量://     SCI-A           SCI-B//     ———————-//     sdataA          sdataB           //发送的数据//     rdataA          rdataB           //接收的数据//     rdata_pointA    rdata_pointB   //用来检查接收到的数据//######################################################################include "DSP281x_Device.h"           //F2812头文件#include "DSP281x_Examples.h"  #define CPU_FREQ 150E6#define LSPCLK_FREQ CPU_FREQ/4#define SCI_FREQ 100E3#define SCI_PRD (LSPCLK_FREQ/(SCI_FREQ*8))-1//功能函数原型interrupt void sciaTxFifoIsr(void);interrupt void sciaRxFifoIsr(void);interrupt void scibTxFifoIsr(void);interrupt void scibRxFifoIsr(void);void scia_fifo_init(void);void scib_fifo_init(void);void error(void);//全局变量Uint16 sdataA[8];     //SCI-A发送的数据Uint16 sdataB[8];     //SCI-B发送的数据Uint16 rdataA[8];     //SCI-A接收的数据Uint16 rdataB[8];     //SCI-B接收的数据Uint16 rdata_pointA;   //用于检查接收到的数据Uint16 rdata_pointB;//主程序void main(void){    Uint16 i;  //步骤1.初始化系统控制  //PLL, 看门狗,使能外设时钟    InitSysCtrl();  //步骤2.初始化GPIO  //InitGpio(); //在这里省略,只需配置以下与SCI有关的GPIO即可    EALLOW;             //注意,需要EALLOE保护    GpioMuxRegs.GPFMUX.bit.SCITXDA_GPIOF4 = 1;    GpioMuxRegs.GPFMUX.bit.SCIRXDA_GPIOF5 = 1;    GpioMuxRegs.GPGMUX.bit.SCITXDB_GPIOG4 = 1;    GpioMuxRegs.GPGMUX.bit.SCIRXDB_GPIOG5 = 1;    EDIS;               //与EALLOW对应使用  //步骤3.清除所有的中断并初始化PIE中断向量表    DINT;               //禁止CPU中断    InitPieCtrl();       //初始化PIE控制寄存器    IER = 0x0000;       //禁止 CPU 中断,并清除所有的 CPU 中断标志    IFR = 0x0000;    InitPieVectTable(); //初始化 PIE 中断向量表,将相应的中断向量指向中断服务程  //序,当中断发生时跳转到相应的中断服务程序处    EALLOW;         //寄存器需要 EALLOE 保护     PieVectTable.RXAINT = &sciaRxFifoIsr;    PieVectTable.TXAINT = &sciaTxFifoIsr;    PieVectTable.RXBINT = &scibRxFifoIsr;    PieVectTable.TXBINT = &scibTxFifoIsr;    EDIS;   //与 EALLOW 对应使用  //步骤4.初始化外设  //InitPeripherals();       //在本程序中可以省略        scia_fifo_init();       //初始化SCI-A        scib_fifo_init();       //初始化SCI-B  //步骤5.用户程序段,使能中断  //初始化要发送的数据    for(i = 0; i<8; i++)    {      sdataA[i] = i;    }    for(i = 0; i<8; i++)    {      sdataB[i] = 0xFF – i;    }    rdata_pointA = sdataA[0];    rdata_pointB = sdataB[0];  //使能所需的中断    PieCtrlRegs.PIECRTL.bit.ENPIE = 1;   //使能 PIE 模块    PieCtrlRegs.PIEIER9.bit.INTx1=1;     //PIE Group 9, INT1    PieCtrlRegs.PIEIER9.bit.INTx2=1;     //PIE Group 9, INT2    PieCtrlRegs.PIEIER9.bit.INTx3=1;     //PIE Group 9, INT3    PieCtrlRegs.PIEIER9.bit.INTx4=1;     //PIE Group 9, INT4    IER = 0x100;                     //使能 CPU 中断    EINT;  //步骤6.空循环  for(;;);}void error(void){    asm("     ESTOP0"); //Test failed!! Stop!    for (;;);}//SCIA 发送中断服务程序interrupt void sciaTxFifoIsr(void){    Uint16 i;    for(i=0; i< 8; i++)    {    SciaRegs.SCITXBUF=sdataA[i];     //发送数据}    for(i=0; i< 8; i++)                   //要发送的下一个数据    {    sdataA[i] = (sdataA[i]+1) & 0x00FF;}SciaRegs.SCIFFTX.bit.TXINTCLR=1;     //清除 SCI 中断使能位PieCtrlRegs.PIEACK.all|=0x100;     }//SCIA 接收中断服务程序interrupt void sciaRxFifoIsr(void){    Uint16 i;for(i=0;i<8;i++){  rdataA[i]=SciaRegs.SCIRXBUF.all; //读取数据}for(i=0;i<8;i++)                       //检查接收到的数据{  if(rdataA[i] != ( (rdata_pointA+i) & 0x00FF) ) error();}rdata_pointA = (rdata_pointA+1) & 0x00FF;SciaRegs.SCIFFRX.bit.RXFFOVRCLR=1;     //清除溢出标志位SciaRegs.SCIFFRX.bit.RXFFINTCLR=1;     //清除中断标志位PieCtrlRegs.PIEACK.all|=0x100;        }//SCIA 初始化函数void scia_fifo_init(){    SciaRegs.SCICCR.all =0x0007;    //一个停止位,没有奇偶校验位,8位数据位,同步模式  //使能发送、接收和内部时钟,禁止RX ERR、SLEEP、TXWAKE    SciaRegs.SCICTL1.all =0x0003;      SciaRegs.SCICTL2.bit.TXINTENA =1;    SciaRegs.SCICTL2.bit.RXBKINTENA =1;    SciaRegs.SCIHBAUD = 0x0000;    SciaRegs.SCILBAUD = SCI_PRD;    SciaRegs.SCICCR.bit.LOOPBKENA =1;   //使能内部自循环    SciaRegs.SCIFFTX.all=0xC028;    SciaRegs.SCIFFRX.all=0x0028;    SciaRegs.SCIFFCT.all=0x00;    SciaRegs.SCICTL1.all =0x0023;        SciaRegs.SCIFFTX.bit.TXFIFOXRESET=1;    SciaRegs.SCIFFRX.bit.RXFIFORESET=1;}//SCIB 发送中断服务程序interrupt void scibTxFifoIsr(void){    Uint16 i;    for(i=0; i< 8; i++)    {    ScibRegs.SCITXBUF=sdataB[i];     //发送数据}    for(i=0; i< 8; i++)                     //要发送的下一个数据    {    sdataB[i] = (sdataB[i]-1) & 0x00FF;}ScibRegs.SCIFFTX.bit.TXINTCLR=1;     //清除 SCI 中断标志位 PieCtrlRegs.PIEACK.all|=0x100;      }//SCIB 接收中断服务程序interrupt void scibRxFifoIsr(void){    Uint16 i;for(i=0;i<8;i++){  rdataB[i]=ScibRegs.SCIRXBUF.all; //读取数据}for(i=0;i<8;i++)                       //检查接收到的数据{  if(rdataB[i] != ( (rdata_pointB-i) & 0x00FF) ) error();}rdata_pointB = (rdata_pointB-1) & 0x00FF;ScibRegs.SCIFFRX.bit.RXFFOVRCLR=1;     //清除溢出标志位ScibRegs.SCIFFRX.bit.RXFFINTCLR=1;   //清除中断标志位PieCtrlRegs.PIEACK.all|=0x100;  }//SCIB 初始化函数void scib_fifo_init(){    ScibRegs.SCICCR.all =0x0007;     //一个停止位,没有奇偶校验位,8位数据位,同步模式,空闲线模式    ScibRegs.SCICTL1.all =0x0003;    //使能发送、接收和内部时钟,禁止RX ERR、SLEEP、TXWAKE    ScibRegs.SCICTL2.bit.TXINTENA =1;    ScibRegs.SCICTL2.bit.RXBKINTENA =1;    ScibRegs.SCIHBAUD    =0x0000;    ScibRegs.SCILBAUD    =SCI_PRD;    ScibRegs.SCICCR.bit.LOOPBKENA =1;   //使能内部自循环    ScibRegs.SCIFFTX.all=0xC028;    ScibRegs.SCIFFRX.all=0x0028;    ScibRegs.SCIFFCT.all=0x00;    ScibRegs.SCICTL1.all =0x0023;       ScibRegs.SCIFFTX.bit.TXFIFOXRESET=1;    ScibRegs.SCIFFRX.bit.RXFIFORESET=1;} 

for(i=0; i< 8; i++)                   //要发送的下一个数据
    {
    sdataA[i] = (sdataA[i]+1) & 0x00FF;   

请问这个语句是什么意思?? 

Jason Wu4:

回复 datong fang:

恩,那就是没问题,就是按照要求设置SCIA的发送数据。

你指出的代码是将发送数组里的每一个数据加1后作为下一次发送的数据流。

赞(0)
未经允许不得转载:TI中文支持网 » 做SCI测试的时候的一个问题?
分享到: 更多 (0)