平台:MDK开发板:LP-MSPM0L1306开发板
目的:串口输出
查看了一下资料,写的是串口的,贴出来
下面先介绍一下怎么实现与板载的详细情况说明。
借助该反向通道 UART,可以与不属于目标应用主要功能的 USB 主机进行通信。这在开发过程中非常有用,而且还能提供与PC 主机侧进行通信的通道。这可以用于在与 LaunchPad 开发套件通信的 PC 上创建图形用户界面(GUI) 和其他程序。
显示了反向通道 UART 的通道。反向通道 UART 连接到 UARTO(PA8、PA9),可以深化接头 J16 和 J17上的跳线设置。
在主机侧,当 LaunchPad 开发套件在主机上进行枚举时,将生成一个用于应用反向通道 UART 的虚拟 COM 端口。您可以使用任何与 COM 端口连接的 PC 应用程序(包括 Hyperterminal或 Docklight 等终端应用程序)米打开该端口并与目标应用程序通信。用户需要找出对应于反向通道的 COM 端口。在使用 Windows 操作系统的 PC上,设备管理器可以提供协助。
反向通道 UART 是“XDS110 Class Application/User UART”端口。此时,图 2-6 显示了 COM14,但该端口可能因主机 PC 而异。确定了正确的 COM 端口后,请根据相关文档在主机应用中进行配置。然后,用户可以打开该端口并使主机开始与之进行通信。
在目标 MSPMOL1306 侧,反向通道连接到 UARTO 模块。XDS110-ET 具有可配置的波特率:因此,PC 应用程序配置的波特率务必与在 UARTO 上配置的波特率相同。
许多用户都有自己喜欢使用的特定外部调试探针,并且可能希望绕过 XDS110-ET 调试探针来对 MSPMO 目标MCU 进行编程。这可以通过隔离块 J101 和连接器 J103 上的跳线来实现。使用外部调试探针很简单,并且通过
J103 提供完整的 JTAG 访问。
拆下 J101 隔离块上有关 JTAG 信号的跳线,包括 NRST、SWDIO 和 SWCLK。
将任意 Arm 调试探针插入 J103
J103 符合 Cortex-M 调试连接器中列出的 Arm Cortex 调试连接器标准。
将 USB 电源插入 LaunchPad 开发套件,或者使用外部电源。
如果使用 USB 电源,请确保 3V3 和 GND 之间的跳线已连接。
.外部调试探针不提供电源,VCC 引脚是电源感测引脚。
URAT概述:
此接口可用于在 MSPM0 器件和其他器件之间传输数据,支持异步串行通信协议,例如 LIN(本地互连网络)、ISO7816(智能卡协议)、IrDA(红外数据协会)、硬件流控制(CTSIRTS)和多处理器通信。
14.1.2 特性
UART 控制器包含以下特性:
完全可编程串行接口
5、6、7或8个数据位
偶校验、奇校验、固定校验或无奇偶校验位生成与检测-可产生1或2个停止位
最低有效位或最高有效位数据最先传送和接收
断线检测输入信号上的干扰滤波器-可编程波特率生成,过采样率为16、8或3倍独立的发送和接收 4 深度 FIFO 可减少 CPU 中断服务负载
支持 DMA 数据传输
提供标准的基于 FFO 深度的中断以及发送结束中断,在包括停止和待机模式在内的所有低功耗模式下均有效在低功耗模式下运行时,支持通过异步快速时钟请求在检测到起始位时唤醒 SYSOSC(在 FCL 模式下使用SYSOSC 时,支持高达19200B 的速率)(精度 1% )
支持环回模式运行
支持硬件流控制
支持 9位多点配置支持的协议:
-本地互连网络(LIN)支持DALI
IrDA
1S07816 Smart Card-
RS485m
曼彻斯特编码空闲线多处理器
功能方框图:
原理图:
代码一: // 初始化系统配置或硬件接口 SYSCFG_DL_init(); // 清除(关闭)连接到Blinky_PORT端口和Blinky_RED_LED_PIN引脚的红色LED灯 DL_GPIO_clearPins(Blinky_PORT, Blinky_RED_LED_PIN); // 循环10次,使红色LED灯闪烁 for(int i=0; i<10; i++) { // 切换连接到Blinky_PORT端口和Blinky_RED_LED_PIN引脚的LED灯的状态 DL_GPIO_togglePins(Blinky_PORT, Blinky_RED_LED_PIN); // 延迟大约10,000,000个时钟周期,控制LED灯闪烁的速率 delay_cycles(10000000); } // 无限循环,持续检测按钮状态 while(1) { // 读取连接到Blinky_PORT端口和Blinky_Button_PIN引脚的按钮状态 if( DL_GPIO_readPins(Blinky_PORT, Blinky_Button_PIN) ) { // 如果按钮被按下(假设高电平表示按下) // 打开(设置高电平)连接到Blinky_PORT端口和Blinky_RED_LED_PIN引脚的LED灯 DL_GPIO_setPins(Blinky_PORT, Blinky_RED_LED_PIN); } else { // 如果按钮未被按下(低电平) // 关闭(清除,设置低电平)连接到Blinky_PORT端口和Blinky_RED_LED_PIN引脚的LED灯 DL_GPIO_clearPins(Blinky_PORT, Blinky_RED_LED_PIN); // 通过UART_0_INST发送一个字符'A' DL_UART_transmitData(UART_0_INST, 'A'); // 等待,直到按钮被松开(检测到高电平为止) while(DL_GPIO_readPins(Blinky_PORT, Blinky_Button_PIN) == 0); } } } 代码二: // 初始化系统配置或硬件接口 SYSCFG_DL_init(); // 清除(关闭)与Blinky_PORT端口和Blinky_RED_LED_PIN引脚连接的红色LED灯 DL_GPIO_clearPins(Blinky_PORT, Blinky_RED_LED_PIN); // 循环10次,实现红色LED灯的闪烁效果 for(int i=0; i<10; i++) { // 切换与Blinky_PORT端口和Blinky_RED_LED_PIN引脚连接的LED灯的状态 DL_GPIO_togglePins(Blinky_PORT, Blinky_RED_LED_PIN); // 延迟大约10,000,000个时钟周期,控制LED灯闪烁的速率 delay_cycles(10000000); // 打印字符串"LP-MSPM0L1306"到输出设备(可能是串行端口或调试终端),并添加回车换行符 printf("LP-MSPM0L1306\r\n"); }
代码解析:
SYSCFG_DL_init();
这行代码调用了一个初始化函数SYSCFG_DL_init。这个函数的目的可能是初始化系统配置,设置必要的硬件接口或启动相关的硬件资源。这是确保后续操作能正确执行的重要步骤。
DL_GPIO_clearPins(Blinky_PORT, Blinky_RED_LED_PIN);
这行代码调用了一个GPIO(General Purpose Input/Output,通用输入输出)控制函数DL_GPIO_clearPins,用于清除(或设置为低电平)与Blinky_PORT端口和Blinky_RED_LED_PIN引脚相关联的LED灯。这通常意味着LED灯被关闭。
for(int i=0; i<10; i++) { ... }
这是一个for循环,它将循环执行10次。
DL_GPIO_togglePins(Blinky_PORT, Blinky_RED_LED_PIN);
在循环体内,这行代码调用了一个GPIO控制函数DL_GPIO_togglePins,用于切换与Blinky_PORT端口和Blinky_RED_LED_PIN引脚相关联的LED灯的状态。如果LED灯之前是亮的,现在就会熄灭;如果之前是熄灭的,现在就会亮起。
delay_cycles(10000000);
在切换LED灯状态之后,这行代码调用了一个延时函数delay_cycles,暂停程序执行大约10,000,000个时钟周期。这用于控制LED灯闪烁的速率。具体的延时长度取决于微控制器的时钟频率。
printf("LP-MSPM0L1306\r\n");
在每次循环中,这行代码使用printf函数向某种输出设备(如串行端口或调试终端)打印字符串"LP-MSPM0L1306",并添加一个回车和换行符。这可能是用于调试目的,或者是在闪烁LED的同时向用户或观察者提供某种信息。
代码二输出结果: