MSPM0L1306例程学习系列
写在前边的话:
UART部分的例程有10个,按照内容顺序重新排序整理如下:
本节讲解的例程是 uart_echo_interrupts_standby。
很基础的一个实验,串口收到一个字符,将收到的字符发回。
各部分的配置如下:
代码简单注释如下:
/*
* UART模块使用的SDK例程
* 文件名:uart_echo_interrupts_standby.c
* 描述:
* UART模块的基本收发功能演示。
* 1、系统的时钟配置:LFCLK=32kHz,MCLK=ULPCLK=CPUCLK=32MHz;
* 2、串口的基本配置:LFCLK, 波特率9600,数据位8,无校验位,停止位1,未使用硬件流控
* 3、使用UART0,发送和接收,引脚为RX-PA9, TX-PA8
* 仅使能接收中断,未使用DMA,未使用FIFO
* 4、程序运行后,通过串口助手进行调试。
*
* 操作描述:
* 1、下载程序,点击RUN全速运行;
* 2、串口调试助手打开串口,设置好参数;
* 3、串口调试助手发送数据,可以接收到相同的数据;
*
* 注意事项:
* 1、PC端需要安装串口调试助手;
* 也可以直接使用CCS的调试终端, 菜单栏/View/Terminal 打开新的窗口,Open a terminal...
*
* 思考:
* 1、有些串口助手发数据直接回显,会分不清是自己发的,还是接收的;
* 可以将回显的数据做+1处理,这样发送a,收到b就很好区分了。
*
* 修改:
* 基于官方的sdk例程增加注释,xie_sx@126.com
*
*/
#include "ti_msp_dl_config.h"
uint8_t data = 0;
int main(void)
{
//SysConfig图形配置工具初始化配置函数
SYSCFG_DL_init();
//清除中断标志,使能中断
NVIC_ClearPendingIRQ(UART_0_INST_INT_IRQN);
NVIC_EnableIRQ(UART_0_INST_INT_IRQN);
//设置工作模式,允许中断去驱动应用
DL_SYSCTL_enableSleepOnExit();
while (1)
{
__WFI();
}
}
/*
* uart中断处理函数
*
* --读取接收到的数据;
* --直接将原数据写入发送寄存器
*
*/
void UART_0_INST_IRQHandler(void)
{
switch (DL_UART_Main_getPendingInterrupt(UART_0_INST))
{
case DL_UART_MAIN_IIDX_RX:
//读取接收到的数据,存入data
data = DL_UART_Main_receiveData(UART_0_INST);
//写入发送寄存器,发送data
DL_UART_Main_transmitData(UART_0_INST, data+1);
break;
default:
break;
}
}