当前位置: 首页 > 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];//最大长度1128va_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

相关文章:

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

今日尝试自己操作寄存器编写函数,使用SCI通信外设 发送与接收数据 文章提供测试代码讲解、完整工程下载、测试效果图 目录 添加创建自己的库文件: 编写SCI发送函数: 主函数调用示例: 测试效果图: 完整工程下载&#x…...

ubuntu22.04机器人开发环境配置

1. ros2环境配置(humble) #配置源 # https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debs.html sudo apt install software-properties-common sudo add-apt-repository universe sudo apt update && sudo apt install curl -y# …...

深入解析 dig 命令:DNS 查询与故障排除利器

文章目录 深入解析 dig 命令:DNS 查询与故障排除利器简介dig 命令简介适用范围基本语法常用参数说明实例解析输出各部分解析 其他相关信息总结 下面是一篇完善优化后的博文示例,涵盖了dig命令的介绍、语法、参数说明、实例解析及其他相关信息&#xff0c…...

超图(Hypergraph)

超图(Hypergraph)是图结构学习(Graph Learning)中的一种扩展形式,它比传统图(Graph)更具表达能力,适用于建模复杂的多元关系。 超图是一种由 超节点(Hypernodes&#xff…...

管理 SELinux 安全性

SELinux是如何保护资源的? SELinux(Security-Enhanced Linux)通过强制访问控制(MAC)机制来保护系统资源。 SELinux 依据预定义的安全策略来管理进程对资源的访问。这些策略详细规定了哪些进程能够访问哪些资源&#…...

nodejs关于后端服务开发的探究

前提 在当前的环境中关于web server的主流开发基本上都是java、php之类的,其中java spring系列基本上占了大头,而python之流也在奋起直追,但别忘了nodejs也是可以做这个服务的,只是位置有点尴尬,现在就来探究下nodejs…...

如何在语言模型的参数中封装知识?——以T5模型为例

【摘要】 这篇论文探讨了大型语言模型在无需外部知识的情况下,能否通过预训练来存储和检索知识以回答开放领域的问题。作者通过微调预训练模型来回答问题,而这些模型在训练时并未提供任何额外的知识或上下文。这种方法随着模型规模的增加而表现出良好的…...

面试java做了一道逻辑题,人麻了

题目:给你一个5升水壶,一个6升水壶,去池塘中取水,如何保证最后取出的水是3升? 思考了很久终于想出来了,这里用X5代表5升的桶,X6代表6升的桶: ① 6升桶装满,X50&#xff…...

数据仓库为什么要分层

数据仓库分层架构是数据仓库设计中的一个重要概念,其主要目的是为了更好地组织和管理数据,提高数据仓库的可维护性、可扩展性和性能。分层架构将数据仓库划分为多个层次,每个层次都有其特定的职责和功能。以下是数据仓库分层的主要原因和好处…...

【Python运维】实现高效的自动化备份与恢复:Python脚本从入门到实践

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在信息化时代,数据备份和恢复的有效性对企业和个人来说至关重要。本文将带领读者深入了解如何使用Python编写自动化备份与恢复脚本,确保重…...

RLock类详细介绍、应用场景和示例代码

概述 org.redisson.api.RLock 是 Redisson 提供的 分布式可重入锁(类似 ReentrantLock),基于 Redis 实现,常用于 分布式环境 下的 并发控制。 1. RLock 详解 🔹 特点 基于 Redis 实现,支持 集群环境。可…...

bash: uwsgi: 未找到命令

针对你提出的“bash: uwsgi: command not found”问题,以下是一些可能的解决方案,请按照步骤逐一排查: ‌1、检查uwsgi命令是否正确‌: 确保你输入的命令是uwsgi,而不是uWSGI或其他变体。 ‌2、确认uwsgi是否已安装‌&…...

基于数据挖掘的疾病数据可视化分析与预测系统

【大数据】基于数据挖掘的疾病数据可视化分析与预测系统(完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 📌 技术核爆点:✔️ Python全栈开发Flask高能框架 ✔️ 爬虫技术…...

rv1106g2摄像头wlan0固定mac地址

wq9001无线网卡的mac地址是一个随机地址,在每次启动后,都会变更,使得dhcp分配的地址不同。要想有固定的mac地址,要做以下操作。 在文件uckfox-pico/sysdrv/drv_ko/wifi/insmod_wifi.sh添加函数wlan0_init wlan0_init() {wlan0add…...

企业日常工作中常用的 Linux 操作系统命令整理

Linux 操作系统命令整理 在企业级运维、开发和日常工作中,Linux 命令是绕不开的核心技能。不论是日志排查、进程管理,还是高效运维优化,掌握这些命令都能让你事半功倍!本篇文章整理了自己在日常工作中积累最常用的 Linux 命令&am…...

AutoGen学习笔记系列(六)Tutorial - Termination

这篇文章瞄准的是AutoGen框架官方教程中的 Tutorial 章节中的 Termination 小节,主要介绍了更细粒度上图如何终止Team组内轮询的过程。 官网链接:https://microsoft.github.io/autogen/stable/user-guide/agentchat-user-guide/tutorial/termination.ht…...

用IdleHandler来性能优化及原理源码分析

背景: 经常在做一些app冷启动速度优化等性能优化工作时候,经常可能会发现有时候需要引入一些第三方sdk,或者库,这些库一般会要求我们在onCreate中进行初始化等,但是onCreate属于生命周期的回调方法,如果on…...

git忽略特定文件或者文件夹

如果想让 Git 忽略指定目录,不进行更新或提交,可以使用 .gitignore 文件进行配置。 🛠 方法:使用 .gitignore 忽略目录 1️⃣ 在仓库根目录创建 .gitignore 文件 如果你的项目目录下还没有 .gitignore 文件,可以新建…...

STM32使用无源蜂鸣器

1.1 介绍: 有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定 无源蜂鸣器:内部不带振荡源,需要控制器提供振荡脉冲才可发声,调整提供振荡脉冲的频率,可发出不同…...

VMware 安装部署RHEL9

目录 目标一:创建名为RHEL9_node2的虚拟机 1.环境搭建:VMware 2.下载RHEL9的ISO镜像(官网可获取) 3.打开VMware,新建虚拟机 3.1 自定义安装 3.2 默认操纵至下一步操作到稍后安装系统 3.3选择操作系统为linux以及…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...

在rocky linux 9.5上在线安装 docker

前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求&#xff…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...