完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
现在通过SCI通信将上位机发出的方波送给DSP,DSP接收到的都是0,1,现在想用GPIO口将这个方波输出,不知道该如何对GPIO的DAT寄存器进行操作 SCI通信的结果都保存在SCI结果寄存器中,通信程序如下,如何实现GPIO输出呢? #include "DSP281x_Device.h" #include "System.h" /****************端口宏定义*****************/ /****************常量宏定义*****************/ /***************全局变量定义****************/ unsigned char SCIA_RX_BUF[16]={0}; unsigned char SCIA_TX_BUF[16]={1,2,3,4,5,6,7,8,0}; unsigned char N=0; /****************函数声明*******************/ void Init_SCIA(void); void Send_Char_SCIA(char temp); void Send_String_SCIA(char *String); char Receive_Char__SCIA(void); interrupt void SCIA_RXINT(void); /*------------------------------------------*/ /*形式参数:void */ /*返回值:void */ /*函数描述:主函数 */ /*------------------------------------------*/ void main(void) { InitSysCtrl(); // 系统初始化子程序,在DSP28_sysctrl.c中 Init_SCIA(); InitGpio(); Send_String_SCIA("Welcome"); while(1); } /*------------------------------------------*/ /*形式参数:void */ /*返回值:void */ /*函数描述:配置SCIA */ /*------------------------------------------*/ void Init_SCIA(void) { //配置SCITXD、SCIRXD EALLOW; GpioMuxRegs.GPFMUX.bit.SCIRXDA_GPIOF5 = 1; //配置 SCI-RX GpioMuxRegs.GPFMUX.bit.SCITXDA_GPIOF4 = 1; //配置 SCI-TX EDIS; //软件复位SCI,复位值 SciaRegs.SCICTL1.bit.SWRESET =0; //设置字符格式、通信协议、通信模式 SciaRegs.SCICCR.bit.SCICHAR=7; // 字符长度:8 bits SciaRegs.SCICCR.bit.PARITYENA=0;//禁止奇偶校验 SciaRegs.SCICCR.bit.STOPBITS=0; //停止位为1个 SciaRegs.SCICCR.bit.ADDRIDLE_MODE=0; //空闲线模式协议 //设置波特率 SciaRegs.SCIHBAUD = 0x0001; // 波特率:9600(LSPCLK = 30MHz); SciaRegs.SCILBAUD = 0x0085; //使能SCI发送器和接收器 SciaRegs.SCICTL1.bit.RXENA =1; // 使能接收功能 SciaRegs.SCICTL1.bit.TXENA =1; // 使能发送功能 //使能中断(包含外设级、PIE级和CPU级),设置中断向量 SciaRegs.SCICTL2.bit.RXBKINTENA = 1;// 使能SCIA接收中断 EALLOW; // 解除寄存器保护 PieVectTable.RXAINT = &SCIA_RXINT;//用SCIA中断函数入口更新PIE向量表 EDIS; // 使能寄存器保护 PieCtrlRegs.PIEIER9.bit.INTx1 = 1;// 使能PIE内的 SCIA_RX_INT中断 IER |= M_INT9;// 使能 CPU INT 9 EINT; // 全局中断使能INTM //退出复位状态 SciaRegs.SCICTL1.bit.SWRESET =1; } /*------------------------------------------*/ /*形式参数:char */ /*返回值:void */ /*函数描述:发送一个字符 */ /*------------------------------------------*/ void Send_Char_SCIA(char temp) { SciaRegs.SCITXBUF=temp; while ( SciaRegs.SCICTL2.bit.TXRDY == 0);//状态检测模式: while ( SciaRegs.SCICTL2.bit.TXEMPTY == 0);//状态检测,等待发送标识为空 } /*------------------------------------------*/ /*形式参数: char *String */ /*返回值:void */ /*函数描述:发送一个字符串 */ /*------------------------------------------*/ void Send_String_SCIA(char *String) { while(*String !=' |