当前位置: 首页 > news >正文

TMS320F28P550SJ9学习笔记7:结构体寄存器方式配置SCI通信收发_SCI通信收发测试

今日尝试自己操作寄存器编写函数,使用SCI通信外设 发送与接收数据

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

目录

添加创建自己的库文件:

编写SCI发送函数:

主函数调用示例:

测试效果图:

完整工程下载:


添加创建自己的库文件:

这里提一笔怎么添加创建自己的库文件:

直接右键添加 Header File 和 Source File 就行了,文件后缀.c与.h别忘了自己加上

创建的.h文件会自己给你加上 编译条件语句

之前想给主文件写个.h文件的,这在keil的操作是合法的,但在ccs这会胡乱报错,不知为何

编写SCI发送函数:

下面是我写的三个SCI发送函数的具体实现,分别是发送一个字节、发送一串字符串 、以及自定义的SCI_printf函数


// SCIA 发送一个字节
void SCIa_TransmitData(uint16_t data)
{
    while (SciaRegs.SCIFFTX.bit.TXFFST != 0)
    {
        //考虑添加超时逻辑
    }
    SciaRegs.SCITXBUF.all = data;
}

//SCIA 发送字符串
void SCIa_TransmitString(unsigned char *string)
{
    int i;
    i = 0;
    while(string[i] != '\0')
    {
        SCIa_TransmitData(string[i]);
        i++;
    }
}

// 自定义printf函数
void SCIa_Printf(char *fmt,...)
{
    unsigned char UsartPrintfBuf[128];//最大长度1128
    va_list ap;
    unsigned char *pStr = UsartPrintfBuf;

    va_start(ap, fmt);
    vsnprintf((char *)UsartPrintfBuf, sizeof(UsartPrintfBuf), fmt, ap); //格式化
    va_end(ap);

    while(*pStr != 0 )
    {
      SCIa_TransmitData(*pStr++);  //逐个字节发送

      //等待 发射器缓冲区和移位寄存器均为空
      while(SciaRegs.SCICTL2.bit.TXEMPTY == 0)
      {
          // 超时逻辑
      }

      // 检查传输错误
      if (SciaRegs.SCIRXST.bit.FE || SciaRegs.SCIRXST.bit.OE || SciaRegs.SCIRXST.bit.PE)
      {
          // 处理错误
          SciaRegs.SCIRXST.bit.RXERROR = 0;      // 清除错误标志
      }
    }
}

主函数调用示例:

这里展示了函数在主函数的调用情况:

DEVICE_DELAY_US(500000);  的延时逻辑是冗余的

实例程序中用的发送主要是 SCIa_Printf 函数的,因为它用起来最方便,有关其余发送函数的调用示例在主函数下面的注释中也有提到:

 

测试效果图:

能够成功的一个一个回传发来的字符并计数:

完整工程下载:

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

相关文章:

  • C/C++ 实现由用户通过键盘输入自然数并判断其是不是素数(带清空缓冲区等考虑)
  • 【MySQL-数据类型】数据类型分类+数值类型+文本、二进制类型+String类型
  • 全星FMEA软件:汽车电子行业研发管理高效之选
  • VPS加装前置代理全解析
  • uni_app实现下拉刷新
  • K8S学习之基础十七:k8s的蓝绿部署
  • AUTOSAR ETH模块(3)——接口功能分析
  • 利用EasyCVR平台打造化工园区视频+AI智能化监控管理系统
  • 解密 Atlassian Cloud:创新驱动的项目管理之道
  • STM32之I2C通信概览
  • 什么是 spring 的循环依赖?
  • 深入解析EfficientNet:高效深度学习网络与ResNet的对比(使用TensorFlow进行代码复现,并使用cifar10数据集进行实战)
  • UniApp 运行的微信小程序如何进行深度优化
  • 服务器虚拟化:技术原理、实践与未来趋势
  • 测试用大模型组词
  • 文件传输协议(File Transfer Protocol, FTP)
  • 计算机组成原理 第三章 存储系统
  • 机试准备第11天
  • HarmonyOS ArkTS声明式UI开发实战教程
  • Ascend开发板镜像烧录、联网、其他设备访问
  • 北京网站手机站建设公司电话/凤山网站seo
  • 郑州做网站优化公/北京seoqq群
  • 网站建设的任务规划/北京网站优化服务
  • 政府部门网站建设工作总结/seo手机端优化
  • 东莞营销商城网站建设/开发app需要多少资金
  • 网站有些什么内容/成都百度提升优化