您的位置:首页 > 科技 > 能源 > 做一套品牌设计多少钱_宣传页在线设计软件_电商网络销售是做什么_淘宝关键词查询工具哪个好

做一套品牌设计多少钱_宣传页在线设计软件_电商网络销售是做什么_淘宝关键词查询工具哪个好

2025/4/3 4:10:32 来源:https://blog.csdn.net/qq_64257614/article/details/146228912  浏览:    关键词:做一套品牌设计多少钱_宣传页在线设计软件_电商网络销售是做什么_淘宝关键词查询工具哪个好
做一套品牌设计多少钱_宣传页在线设计软件_电商网络销售是做什么_淘宝关键词查询工具哪个好

今日尝试开启SCI通信的中断功能,测试SCI通信FIFO:实现一次性接收8字节数据到g_recv_buff,接收完就打印输出

文章提供测试代码讲解、完整工程下载、测试效果图

目录

SCIA通信引脚:

SCI初始化:

PIE链接中断服务函数:

SCI接收发送中断服务函数:

主函数调用:

遇到的问题:

测试结果截图:

​编辑

测试工程下载:


 

SCIA通信引脚:

TXD :                GPIO 29

RXD:                 GPIO 28

这里我将GPIO的初始化也改为了寄存器方式:

 

SCI初始化:

SCI的初始化相较于之前有较大改动,主要是寄存器初始化的语句结构:


//初始化SCI 通信
void Init_SCIA(uint32_t baund,uint32_t lspclk)
{SciaRegs.SCICTL1.bit.SWRESET = 1;      // 0:复位重置SCI通信  1:复位之后的启用 (复位不影响之前对其 波特率寄存器 之类的设定)SciaRegs.SCIFFTX.bit.TXFFINTCLR = 1;    // 0:对TXFIFINT标志位无效 1:清除位于第7位的TXFFINT标志SciaRegs.SCIFFRX.bit.RXFFINTCLR = 1;    // 1:清除接收FIFO中断 , 0: 对RXFIFINT标志位没有作用SciaRegs.SCIFFRX.bit.RXFFOVRCLR = 1;    // 0:对RXFFOVF标志位无效 1:清除RXFFOVF标志位SciaRegs.SCIFFTX.bit.TXFIFORESET = 1;   //  0:将FIFO指针写0以重置为零,并保持重置状态   1:重新启用发送FIFO操作SciaRegs.SCIFFRX.bit.RXFIFORESET = 1;   // 0:将FIFO指针写0以重置为零,并保持重置状态   1:重新启用接收FIFO操作SciaRegs.SCIFFTX.bit.SCIRST = 1;        // 写0操作将引起软件复位,并复位TXFFINT和RXFFINT,从而清除TX/RX FIFO的内容。SCI将保持复位状态,直到写入1。SciaRegs.SCICCR.bit.SCICHAR = 7 ;    // 字符长度:8SciaRegs.SCICCR.bit.LOOPBKENA = 0;     // 禁用环路回测模式(自己的TX 连接 自己的RX)//波特率设定unsigned char scihbaud = 0;unsigned char scilbaud = 0;Uint32 scibaud = 0;scibaud = lspclk / (8 * baund) - 1;scihbaud = scibaud >> 8;scilbaud = scibaud & 0xFF;SciaRegs.SCIHBAUD.all=scihbaud;SciaRegs.SCILBAUD.all=scilbaud;SciaRegs.SCIFFTX.bit.TXFFIL = 8;        // 发送FIFO中断级别位SciaRegs.SCIFFRX.bit.RXFFIL = 8;        // 接收FIFO中断级别位 可以设定的值范围是从0到31 这里表示接收8个形成一次中断SciaRegs.SCIFFTX.bit.SCIFFENA = 1;      // 1:启用SCI FIFO增强功能   0:禁用SciaRegs.SCIFFRX.bit.RXFFIENA = 1;      // 1:启用 RX FIFO接收中断 0:禁用SciaRegs.SCIFFTX.bit.TXFIFORESET = 1;   //  0:将FIFO指针写0以重置为零,并保持重置状态   1:重新启用发送FIFO操作SciaRegs.SCIFFRX.bit.RXFIFORESET = 1;   // 0:将FIFO指针写0以重置为零,并保持重置状态   1:重新启用接收FIFO操作SciaRegs.SCICTL1.bit.TXENA = 1;        // 1:启用传输器 0:禁用传输器SciaRegs.SCICTL1.bit.RXENA = 1;        // 接收使能: 0:防止接收到的字符传输到SCIRXEMU和SCIRXBUF接收器缓冲区 1:将接收到的字符发送到SCIRXEMU和SCIRXBUFSciaRegs.SCICTL1.bit.RXERRINTENA = 1;  // 使能接收错误中断SciaRegs.SCICTL2.bit.TXINTENA = 1;      // 1:启用TXRDY中断  0:禁用TXRDY中断  (传输完成的中断)SciaRegs.SCICTL2.bit.RXBKINTENA = 1;   // 1:启用接收器缓冲区/中断  0:禁用 控制由RXRDY标志或BRKDT标志(SCIRXST.6和.5位)引起的中断请求SciaRegs.SCIFFCT.all=0x00;              // FIFO传送延时为0SciaRegs.SCICTL1.bit.SWRESET = 1;      // 0:复位重置SCI通信  1:复位之后的启用 (复位不影响之前对其 波特率寄存器 之类的设定)EALLOW;GpioCtrlRegs.GPAPUD.bit.GPIO28 = 0;    // Enable pull-up for GPIO28 (SCIRXDA)GpioCtrlRegs.GPAPUD.bit.GPIO29 = 0;    // Enable pull-up for GPIO29 (SCITXDA)GpioCtrlRegs.GPAQSEL2.bit.GPIO28 = 3;  // Asynch input GPIO28 (SCIRXDA)GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 1;   // Configure GPIO28 for SCIRXDA operationGpioCtrlRegs.GPAMUX2.bit.GPIO29 = 1;   // Configure GPIO29 for SCITXDA operationEDIS;EALLOW;PieVectTable.SCIA_TX_INT = &Scia_TxFIFOISR; //链接中断服务函数PieVectTable.SCIA_RX_INT = &Scia_RxFIFOISR; //链接中断服务函数PieCtrlRegs.PIEIER9.bit.INTx1 = 1; //9.1PieCtrlRegs.PIEIER9.bit.INTx2 = 1; //9.2IER |= M_INT9;EDIS;
}

PIE链接中断服务函数:

这段也写在了SCI的初始化中,注意这段代码在系统中断初始化语句之后才会生效

 

SCI接收发送中断服务函数:

发送中断目前没写任何功能,但接收中断是读取8字节数据到g_recv_buff,并累计到8字节就发送标志位,让主函数打印


__interrupt void Scia_TxFIFOISR(void)
{//static Uint16 i;//  ScibRegs.SCIFFTX.bit.TXFFINTCLR=1;//清楚发送FIFO中断标志位。在此处如果清零会导致发送FIFO中断一直产生,因此要关闭才行PieCtrlRegs.PIEACK.all = PIEACK_GROUP9;
}// SCI a 接收FIFO 中断服务函数
__interrupt void Scia_RxFIFOISR(void)
{static Uint16 i = 0;//SCIa_Printf("1! \r\n");//FIFO遵循的是先入先出的原则 读取时第一个被读取的字符也是之前第一个被存入的字符,读取的字符顺序和存入时的完全一样g_recv_buff[i] =SciaRegs.SCIRXBUF.all;i++;if(i==8){i=0;g_received_flag = 1;                //接收标志记 1}SciaRegs.SCIFFRX.bit.RXFFOVRCLR=1;  // Clear Overflow flagSciaRegs.SCIFFRX.bit.RXFFINTCLR=1;  // Clear Interrupt flagPieCtrlRegs.PIEACK.all = PIEACK_GROUP9;
}

 

主函数调用:

主函数接收到来自于FIFO接收中断发来的标志信号,就会回送g_recv_buff的数据发送出去

 

遇到的问题:

当时发现中断能够正常发生,但进不了中断服务函数:

这是因为我对SCI的PIE配置写在了中断初始化上面,导致了SCI通信PIE的初始化有问题,现在改成下面就没问题了:

 

测试结果截图:

测试工程下载:

 https://download.csdn.net/download/qq_64257614/90482639

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com