一、样例展示
配置串口在9600的波特率,等待接收到字符,设备在standby模式下当等待的模式下,用中断唤醒自己。
编译,加载,运行 。连接到中断,或者是外部设备。串口会等待接收字符,并将我们发送的字符在发送回来,作为回应。每次接收到数据,led都会翻转
为了进行串口通信,使用串口调试助手。
打开串口调试助手
打开设备管理器
可以看到德州仪器有两个串口,我们使用的是第一个com5
运行程序后,我们通过串口发送数据给单片机,可以看到会返回发送到数据,同时单片机的灯会翻转
串口调试助手使用:
1.选择端口
2.选择波特率
3.打开串口
4.发送数据
若未能正确接收,去检查串口助手和跳线是否正常,
根据原理图,应将跳线帽接到靠上的两个引脚
,才能正确进行通信
二、代码讲解
#include "ti_msp_dl_config.h"volatile uint8_t gEchoData = 0;//保存接收到的数据
int main(void)
{SYSCFG_DL_init();//初始化NVIC_ClearPendingIRQ(UART_0_INST_INT_IRQN);//中断控制器先清除当前的待定中断,防止一上电就进入中断NVIC_EnableIRQ(UART_0_INST_INT_IRQN);//使能中断while (1) {}
}
//中断服务程序
//Switch获取当前的中断
void UART_0_INST_IRQHandler(void)
{switch (DL_UART_Main_getPendingInterrupt(UART_0_INST)) {case DL_UART_MAIN_IIDX_RX://接收中断,翻转ledDL_GPIO_togglePins(GPIO_LEDS_PORT,GPIO_LEDS_USER_LED_1_PIN | GPIO_LEDS_USER_TEST_PIN);gEchoData = DL_UART_Main_receiveData(UART_0_INST);//接收数据DL_UART_Main_transmitData(UART_0_INST, gEchoData);//发送数据break;default:break;}
}
三、配置
名称和使用外设
基础配置
时钟为LFCLK(低频时钟),因为本身波特率并不高,希望的波特率是9600,实际上是9576,误差是0.2496,字长是8比特
STOP BIT为1位,硬件流控不需要用,因为用的是UART,用的是异步通信
高级配置
模式默认
同时选用TX和RX,如果选择only,就是单向通信
下面的一系列都不用管
中断
使能了接收中断
pin
自动配置
外设引脚
共有四个串口
可以选择引脚
四、空白模版构建
时钟为BUSCLK也是可以的,误差更小
可以修改波特率为115200,其他不用修改
中断
使能接收中断
希望串口通过分界线这两个引脚传递给调试器,通过调试器用USB信号传给电脑
查看原理图,J101就是这一串跳线帽所在位置
因此将引脚配置为PA11和PA10
五、编写代码
定义接收变量
uint8_t gEchoData;
清空中断状态
NVIC_ClearPendingIRQ(UART_0_INST_INT_IRQN);
使能中断
NVIC_EnableIRQ(UART_0_INST_INT_IRQN);
编写中断相关代码
接收中断
gEchoData = DL_UART_Main_receiveData(UART_0_INST);
发送数据
DL_UART_Main_transmitData(UART_0_INST, gEchoData);
五、扩展
如果要接收一串字符,可以开一个数组,再用一个指示
让count++,这样可以看到有多少数据