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

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

MSPM0L1306例程学习系列

1.背景介绍

写在前边的话:

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

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

2.例程描述

本节讲解的例程是uart_external_loopback_interrupt。
UART模块的基本收发功能演示,外部环回(RX和TX短接),MCU发什么就收什么。
在这里插入图片描述
在这里插入图片描述

3.SysConig配置描述

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

4.代码注释

代码简单注释如下:

/** UART模块使用的SDK例程* 文件名:uart_external_loopback_interrupt.c** 配置描述:*   UART模块的基本收发功能演示,外部环回。*   1、系统的时钟配置:LFCLK=32kHz,MCLK=ULPCLK=CPUCLK=32MHz;*   2、串口的基本配置:BUSCLK, 波特率9600,数据位8,无校验位,停止位1,未使用硬件流控*   3、使用UART0,发送和接收,引脚为RX-PA9, TX-PA8*     仅使能接收中断,未使用DMA,未使用FIFO** 操作描述:*   1、将uart的tx和rx通过杜邦线连接;*   2、下载程序,在串口接收中断里设置断点;*   3、点击RUN全速运行;*   4、可以观察看到串口接收到的数据等于发送的数据;** 注意事项:*   1、该例程可以不用串口调试助手;*   2、如果使用的是红色的launchpad套件LP-MSPM0L1306,要注意跳线帽的设置;*     J16和J17两个跳线帽的位置要做调整,连接到BP端,芯片的引脚才会连接到侧面的双排针;*     然后再用杜邦线连接PA8和PA9. 也可以用偷懒的方法,J16和J17跳线帽拔掉后,直接短接中间两个;*   3、要特别注意实验的顺序,TX和RX要先连接,不然程序跑起来,Tx发送了,而Rx没收到,就进不了中断了!** 思考:*   1、也可以考虑uart的tx和rx引脚,方便连接。也特别注意引脚复用的情况,避免出错!** 修改:*   基于官方的sdk例程增加注释,xie_sx@126.com**/#include "ti_msp_dl_config.h"//延时5ms,确保在启动传输前,UART TX处于空闲状态
#define UART_TX_DELAY (160000)uint8_t txData = 0, rxData = 0;//用于表示数据接收的标志位
bool dataReceived;int main(void)
{//SysConfig图形配置工具初始化配置函数SYSCFG_DL_init();//清除中断标志,使能中断NVIC_ClearPendingIRQ(UART_0_INST_INT_IRQN);NVIC_EnableIRQ(UART_0_INST_INT_IRQN);//延时(可选),确保UART TX处于空闲状态delay_cycles(UART_TX_DELAY);while (1){//数据接收的标志位清零dataReceived = false;//更新要发送的数据(+1处理)txData       = txData + 1;//发送一个字节的数据DL_UART_Main_transmitData(UART_0_INST, txData);while (dataReceived == false){__WFE();}//延时,避免数据发送太频繁delay_cycles(10000);}
}/** uart中断处理函数** --读取uart接收到的数据, rxData;* --判断接收到的数据rxData是否等于发送的数据txData**/
void UART_0_INST_IRQHandler(void)
{switch (DL_UART_Main_getPendingInterrupt(UART_0_INST)){case DL_UART_MAIN_IIDX_RX://读取接收到的数据,存入rxDatarxData       = DL_UART_Main_receiveDataBlocking(UART_0_INST);//设置数据接收的标志位,这样主函数才会发送下一个数据dataReceived = true;//判断接收到和发送的数据是否相等。正常来说,里边要增加处理的,写例程的人偷懒了:(while (rxData != txData){};break;default:break;}
}

5.实验现象

在这里插入图片描述

http://www.lryc.cn/news/284899.html

相关文章:

  • Baichuan2百川模型部署的bug汇总
  • ChatGPT 如何解决 “Something went wrong. lf this issue persists ….” 错误
  • 怎么移除WordPress后台工具栏的查看站点子菜单?如何改为一级菜单?
  • WEB-前端 表格标签-合并单元格
  • [计算机网络]基本概念
  • Flutter 综述
  • Pixels:重新定义游戏体验的区块链农场游戏
  • 【JavaEE】文件操作 —— IO
  • 推荐新版AI智能聊天系统网站源码ChatGPT NineAi
  • 学生公寓智能控电系统的重要性
  • 使用Scrapy 爬取“http://tuijian.hao123.com/”网页中左上角“娱乐”、“体育”、“财经”、“科技”、历史等名称和URL
  • 2018年认证杯SPSSPRO杯数学建模D题(第二阶段)投篮的最佳出手点全过程文档及程序
  • 软件资源管理下载系统全新带勋章功能 + Uniapp前端
  • 高性能前端UI库 SolidJS | 超棒 NPM 库
  • 聊聊PowerJob的AliOssService
  • 【VRTK】【Unity】【PICO】PICO项目打包后闪退的根本原因
  • 《PCI Express体系结构导读》随记 —— 第I篇 第2章 PCI总线的桥与配置(21)
  • 大数据前馈神经网络解密:深入理解人工智能的基石
  • 【新书推荐】Web3.0应用开发实战(从Web 2.0到Web 3.0)
  • vue3中状态管理库pinia的安装和使用方法介绍及和vuex的区别
  • 领略指针之妙
  • 迭代器模式介绍
  • 算法每日一题: 最大字符串匹配数目 | 哈希 | 哈希表 | 题意分析
  • 自然语言处理(Natural Language Processing,NLP)解密
  • 【DevOps-08-5】目标服务器准备脚本,并基于Harbor的最终部署
  • 用Java实现01背包问题 用贪心算法
  • JUC并发编程-8锁现象
  • 集美大学“第15届蓝桥杯大赛(软件类)“校内选拔赛 D矩阵选数
  • Android System Service系统服务--1
  • 【RT-DETR有效改进】华为 | Ghostnetv1一种专为移动端设计的特征提取网络