MSPM0L1306例程学习-UART部分(3)

MSPM0L1306例程学习系列

1.背景介绍

写在前边的话:

  • 这个系列比较简单,主要是围绕TI官网给出的SDK例程进行讲解和注释。并没有针对模块的具体使用方法进行描述。
  • 所有的例程均来自MSPM0 SDK的安装包,具体可到官网下载并安装: https://www.ti.com.cn/tool/cn/download/MSPM0-SDK/
  • 因为例程多数包含sysconfig文件,也就是配合图形配置工具进行的外设初始化。因此在学习时,不能只看主函数的代码,还要重点看下系统是怎么配置的。因此,每个例程都有一部分内容是PPT截图,来讲解图形配置文件。
  • 使用时,可以直接把添加注释的代码拷贝到自己的工程中进行阅读,比较方便。

UART部分的例程有10个,按照内容顺序重新排序整理如下:
在这里插入图片描述

2.例程描述

本节讲解的例程是uart_rw_multibyte_fifo_poll.c。
UART模块通过FIFO+查询方式收发字符串的功能演示。启用了内部环回(RX和TX内部短接),MCU发什么就收什么。
在这里插入图片描述
在这里插入图片描述

3.SysConig配置描述

各部分的配置如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.代码注释

代码简单注释如下:

/*
 * UART模块使用的SDK例程
 * 文件名:uart_rw_multibyte_fifo_poll.c
 * 描述:
 *   UART模块通过FIFO+查询方式收发字符串的功能演示。
 *   1、系统的时钟配置:LFCLK=32kHz,MCLK=ULPCLK=CPUCLK=32MHz;
 *   2、串口的基本配置:BUSCLK, 波特率9600,数据位8,无校验位,停止位1,未使用硬件流控
 *   3、使用UART0,发送和接收,引脚为RX-PA9, TX-PA8
 *     使用发送FIFO和接收FIFO,未使用中断,未使用DMA;
 *   4、PA0引脚连接有LED灯;
 *
 * 操作描述:
 *   1、下载程序,设置断点;
 *   2、添加数组txPacket和rxPacket到变量观察窗口;
 *   3、点击RUN全速运行;
 *   4、查看变量;
 *
 * 注意事项:
 *   1、可以直接通过设置断点的方式来观察实验现象;
 *   2、如果不用环回模式,那么可以配合串口助手来做相关实验;
 *   3、PC端需要安装串口调试助手;
 *     也可以直接使用CCS的调试终端, 菜单栏/View/Terminal 打开新的窗口,Open a terminal...
 *
 * 思考:
 *   1、不用环回模式,实验应该怎么设计?
 *   2、如果数组长度超过了4个,怎么办?
 *
 * 修改:
 *   基于官方的sdk例程增加注释,xie_sx@126.com
 *
 */

#include "ti_msp_dl_config.h"

//宏定义:配置系统环回模式
//RX外部引脚会断开,外部发来的数据被忽略
#define ENABLE_LOOPBACK_MODE true

//宏定义:数据包的大小
//例程使用查询FIFO的方式,FIFO最大深度为4
#define UART_PACKET_SIZE (4)

//延时5ms,确保在启动传输前,UART TX处于空闲状态
#define UART_TX_DELAY (160000)

//数组,存放要发送的数据
uint8_t txPacket[UART_PACKET_SIZE] = {'M', 'S', 'P', '!'};

//数组,存放接收的数据
uint8_t rxPacket[UART_PACKET_SIZE];

int main(void)
{
    //SysConfig图形配置工具初始化配置函数
    SYSCFG_DL_init();

    //延时(可选),系统启动后等待TX准备OK
    delay_cycles(UART_TX_DELAY);

    //通过宏定义配置是否启用内部环回模式,即内部RX接TX
#if (ENABLE_LOOPBACK_MODE == true)
    DL_UART_enableLoopbackMode(UART_0_INST);
#endif

    //点亮LED灯,指示传输开始
    DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN);

    //往TX FIFO中写入数据并传输数据
    //往发送数据寄存器写数据就自动发送(FIFO不需要用户参与)
    DL_UART_Main_fillTXFIFO(UART_0_INST, &txPacket[0], UART_PACKET_SIZE);

    //等待所有的字节被传输并且TX FIFO为空
    //非busy状态,说明数据已经传输完成
    while (DL_UART_Main_isBusy(UART_0_INST));

    //等待UART接收数据并读取
    //读取RXFIFO中的数据,循环读取UART_PACKET_SIZE次
    for (uint8_t i = 0; i < UART_PACKET_SIZE; i++)
    {
        rxPacket[i] = DL_UART_receiveDataBlocking(UART_0_INST);
    }

    //传输成功后,led灯闪烁指示
    while (1)
    {
        DL_GPIO_togglePins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN);
        delay_cycles(5000000);
    }
}

5.实验现象

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/338555.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

快速傅立叶变换FFT学习笔记

什么是FFT&#xff1f; FFT&#xff08;Fast Fourier Transformation&#xff09; 是离散傅氏变换&#xff08;DFT&#xff09;的快速算法&#xff0c;即快速傅氏变换。FFT使计算机计算离散傅里叶变换所需要的乘法次数大为减少&#xff0c;特别是被变换的抽样点数N越多&#x…

使用STM32的UART实现蓝牙通信

✅作者简介&#xff1a;热爱科研的嵌入式开发者&#xff0c;修心和技术同步精进 代码获取、问题探讨及文章转载可私信。 ☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。 &#x1f34e;获取更多嵌入式资料可点击链接进群领取&#xff0c;谢谢支持&#xff01;&#x1f447…

算法优化:LeetCode第122场双周赛解题策略与技巧

接下来会以刷常规题为主 &#xff0c;周赛的难题想要独立做出来还是有一定难度的&#xff0c;需要消耗大量时间 比赛地址 3011. 判断一个数组是否可以变为有序 public class Solution {public int minimumCost(int[] nums) {if (nums.length < 3) {// 数组长度小于3时&a…

Python实现单因素方差分析

Python实现单因素方差分析 1.背景 正念越来越受到人们关注&#xff0c;正念是一种有意的、不加评判的对当下的注意觉察。可以通过可以通过观呼吸、身体扫描、正念饮食等多种方式培养。 为了验证正念对记忆力的影响&#xff0c;选取三组被试分别进行正念训练&#xff0c;运动训…

基于springboot+vue仓库管理系统

摘要 本文介绍了一种基于Spring Boot和Vue的现代化仓库管理系统的设计与实现。仓库管理是企业运营中至关重要的一环&#xff0c;它涉及到货物的进出、库存的管理以及订单的处理等方面。为了提高仓库管理的效率和精确度&#xff0c;我们设计了这个集成了前后端技术的系统。在系统…

37-WEB漏洞-反序列化之PHPJAVA全解(上)

WEB漏洞-反序列化之PHP&JAVA全解&#xff08;上&#xff09; 一、PHP 反序列化原理二、案例演示2.1、无类测试2.1.1、本地2.1.2、CTF 反序列化小真题2.1.3、CTF 反序列化类似题 2.2、有类魔术方法触发2.2.1、本地2.2.2、网鼎杯 2020 青龙大真题 三、参考资料 一、PHP 反序列…

16.云原生之kubesphere组件安装卸载

云原生专栏大纲 文章目录 KubeSphere组件介绍KubeSphere组件安装卸载配置内容参考安装组件步骤卸载组件步骤 KubeSphere组件介绍 KubeSphere 的全部可插拔组件如下&#xff1a; 配置项功能组件描述alertingKubeSphere 告警系统可以为工作负载和节点自定义告警策略。告警策略…

多级缓存

一、多级缓存 传统的缓存策略一般是请求到达Tomcat后&#xff0c;先查询Redis&#xff0c;如果未命中则查询数据库&#xff0c;如图&#xff1a; 存在下面的问题&#xff1a; •请求要经过Tomcat处理&#xff0c;Tomcat的性能成为整个系统的瓶颈 •Redis缓存失效时&#xff…

FPGA时序分析与时序约束(五)——使用Timing Analyzer进行时序分析与约束

Quartus的安装路径下会自带有例程&#xff0c;通过fir_filter进行学习如何使用Timing Analyzer进行时序分析与约束。 1.1 创建时序网表 打开fir_filter并进行综合后可通过菜单栏Tool->Timing Analyzer或工具栏按钮运行Timing Analyzer。 根据前面提到的&#xff0c;时序分析…

研学活动报名系统源码开发方案

一、项目背景与目标 &#xff08;一&#xff09;项目背景&#xff1a; 随着教育水平的提高和人们对综合素质培养的需求增加&#xff0c;研学活动作为一种教育方式受到了广大家长和学生的青睐。为了更好地组织和管理研学活动&#xff0c;需要建立一个研学活动报名系统&#xf…

大模型关键技术:上下文学习、思维链、RLHF、参数微调、并行训练、旋转位置编码、模型加速、大模型注意力机制优化、永久记忆、LangChain、知识图谱、多模态

大模型关键技术 大模型综述上下文学习思维链 CoT奖励建模参数微调并行训练模型加速永久记忆&#xff1a;大模型遗忘LangChain知识图谱多模态大模型系统优化AI 绘图幻觉问题从 GPT1 - GPT4 拆解GPTs 对比主流大模型技术点旋转位置编码层归一化激活函数注意力机制优化 大模型综述…

攻防世界——answer_to_everything-writeup

__int64 __fastcall not_the_flag(int a1) {if ( a1 42 )puts("Cipher from Bill \nSubmit without any tags\n#kdudpeh");elseputs("YOUSUCK");return 0LL; } kdudpeh这个东西&#xff0c;根据题目提示sha1加密 import hashlib flagkdudpeh x hashlib…

FastDDS版本变迁图解

eProsima Fast DDS 最完整的开源DDS中间件! eProsima Fast DDS是一个高性能的发布-订阅框架,它使用基于发布者、订阅服务器和数据主题的解耦模型在分布式系统中共享数据。 eProsima Fast DDS速度惊人,在Windows和Linux中都击败了ZeroMQ和其他pub-sub中间件等替代品。 让…

详解矩阵的三角分解A=LU

目录 一. 求解Axb 二. 上三角矩阵分解 三. 下三角矩阵分解 四. 矩阵的三角分解 举例1&#xff1a;矩阵三角分解 举例2&#xff1a;三角分解的限制 举例3&#xff1a;主元和乘法因子均为1 举例4&#xff1a;U为单位阵 小结 一. 求解Axb 我们知道高斯消元法可以对应矩阵…

[java基础揉碎]键盘输入语句

介绍 在编程中&#xff0c;需要接收用户输入的数据&#xff0c;就可以使用键盘输入语句来获取。 需要一个扫描器&#xff08;对象&#xff09;,就是Scanner 用到的scanner代码例子

GitFlow工作流

基于 Git 这一版本控制系统&#xff0c;通过定义不同的分支&#xff0c;探索合适的工作流程来完成开发、测试、修改等方面的需求。 例如&#xff1a;在开发阶段&#xff0c;创建 feature 分支&#xff0c;完成需求后&#xff0c;将此分支合并到 develop 分支上&#xff1b;在发…

HarmonyOS鸿蒙应用开发 (一、环境搭建及第一个Hello World)

万事开头难。难在迈出第一步。心无旁骛&#xff0c;万事可破。没有人一开始就能想清楚&#xff0c;只有做起来&#xff0c;目标才会越来越清晰。--马克.扎克伯格 前言 2024年1月16日&#xff0c;华为目前开启已HarmonyOS NEXT开发者预览版Beta招募&#xff0c;报名周期为1月15…

elastic search入门

参考1&#xff1a;Elastic Search 入门 - 知乎 参考2&#xff1a;Ubuntu上安装ElasticSearch_ubuntu elasticsearch-CSDN博客 1、ElasticSearch安装 1.1安装JDK&#xff0c;省略&#xff0c;之前已安装过 1.2创建ES用户 创建用户&#xff1a;sudo useradd esuser 设置密码&…

Python基础第五篇(Python数据容器)

文章目录 一、数据容器入门二、数据容器 list 列表(1),list 列表定义(2),list列表的索引(3),list列表的常见操作(4),list列表的遍历 三、数据容器&#xff1a;tuple&#xff08;元组&#xff09;(1),tuple元组定义(2),tuple元组的索引(3),tuple元组的常见操作(4),tuple元组的遍…

解密.dataru被困的数据:如何应对.dataru勒索病毒威胁

导言&#xff1a; 在数字时代&#xff0c;勒索病毒如.dataru正在不断演变&#xff0c;威胁着用户的数据安全。本文91数据恢复将深入介绍.dataru勒索病毒的特点、被加密数据的恢复方法&#xff0c;以及预防措施&#xff0c;帮助您更好地了解并对抗这一数字威胁。当面对被勒索病…