嘉兴市建设监理协会网站,ppt模板网站下载,破解wordpress可见,河北廊坊seo网站建设网站优化MSPM0L1306例程学习系列
1.背景介绍
写在前边的话#xff1a;
这个系列比较简单#xff0c;主要是围绕TI官网给出的SDK例程进行讲解和注释。并没有针对模块的具体使用方法进行描述。所有的例程均来自MSPM0 SDK的安装包#xff0c;具体可到官网下载并安装: https://www.ti…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、系统的时钟配置LFCLK32kHzMCLKULPCLKCPUCLK32MHz* 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_sx126.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.实验现象