UART指令控制RGB灯实验

描述

18.5.3

下载验证

保证开发板相关硬件连接正确,用Type-C USB线连接开发板“USB TO UART”接口跟电脑。本次实验需要使用到串口调试助手,配置好串口参数并打开串口后,在调试助手的发送区域输入任意字符并点击发送,即可在接收区看见相同字符,如图19_17。

串口

图19-17 实验1 下载验证

18.6

实验2:UART指令控制RGB灯

正如之前所讲,可以在串口调试助手输入指令,让开发板根据这些指令执行一些任务,现在我们编写程序让开发板接收UART数据,然后根据数据内容控制RGB彩灯的颜色。

18.6.1

硬件设计

本实验使用到开发板的串口和LED灯,其原理图在本章实验1和前面的点亮LED灯章节有介绍,这里不进行赘述。

18.6.2

软件设计

18.6.2.1

新建工程

因为本节的UART实验例程与上一个实验例程的FSP配置以及UART相关的一些代码基本一致,因此我们可以直接以前面的“19_UART_Receive_Send”工程为基础进行修改。

对于e2 studio开发环境:拷贝一份我们之前的e2s工程模板“19_UART_Receive_Send”,然后将工程文件夹重命名为“19_UART_LED_Control”,最后再将它导入到我们的e2 studio工作空间中。

对于Keil开发环境:拷贝一份我们之前的Keil工程模板“19_UART_Receive_Send”,然后将工程文件夹重命名为“19_UART_LED_Control”,并进入该文件夹里面双击Keil工程文件,打开该工程。

FSP配置完全一致,因此我们省略掉这部分。

18.6.2.2

串口中断回调函数

我们需要在串口中断回调函数,也就是debug_uart4_callback函数里判断接收到的字符,并根据所接收到的不同字符做出不同的操作。修改debug_uart4_callback函数的代码,如下所示。

列表6:代码清单19-5:串口中断回调函数

左右滑动查看完整内容

 

/* 串口中断回调 */
voiddebug_uart4_callback(uart_callback_args_t * p_args)
{
switch (p_args->event)
{
case UART_EVENT_RX_CHAR:
{
/* 根据字符指令控制 RGB 彩灯颜色 */
switch (p_args->data)
{
case'1':
LED1_ON;
break;
case'2':
LED2_ON;
break;
case'3':
LED3_ON;
break;
case'4':
LED1_OFF;
break;
case'5':
LED2_OFF;
break;
case'6':
LED3_OFF;
break;
case'7':
LED1_ON; LED2_ON; LED3_ON;
break;
case'8':
LED1_OFF; LED2_OFF; LED3_OFF;
break;
default:
break;
}
break;
}
case UART_EVENT_TX_COMPLETE:
{
uart_send_complete_flag = true;
break;
}
default:
break;
}
}

 

18.6.2.3

hal_entry入口函数

在hal_entry函数里面我们进行硬件初始化之后,首先打印提示信息,提醒用户从串口输入数字字符。然后默认关闭所有LED灯,在while循环里什么都不做,等待用户的输入。

列表7:代码清单19-6:hal_entry入口函数

左右滑动查看完整内容

 

voidhal_entry(void)
{
/* TODO: add your own code here */


LED_Init(); // LED 初始化
Debug_UART4_Init(); // SCI4 UART 调试串口初始化


printf("这是一个串口控制 LED 例程
");
printf("打开串口助手发送以下指令,控制 LED 的状态
");
printf ("	指令 ------ 状态
 ");
printf ("	 1 ------ LED1_ON
 ");
printf ("	 2 ------ LED2_ON
 ");
printf ("	 3 ------ LED3_ON
 ");
printf ("	 4 ------ LED1_OFF
 ");
printf ("	 5 ------ LED2_OFF
 ");
printf ("	 6 ------ LED3_OFF
 ");
printf ("	 7 ------ LED 全亮
 ");
printf ("	 8 ------ LED 全灭
 ");


LED1_OFF; LED2_OFF; LED3_OFF; //默认关闭所有 LED 灯


while(1)
{
}


#if BSP_TZ_SECURE_BUILD
/* Enter non-secure code */
R_BSP_NonSecureEnter();
#endif
}

 

18.6.3

下载验证

保证开发板相关硬件连接正确,用Type-C线连接开发板“USB TO UART”接口跟电脑,在电脑端打开串口调试助手,把编译好的程序下载到开发板,此时串口调试助手即可收到开发板发过来的数据。我们在串口调试助手发送区域输入一个特定字符,点击发送按钮,LED灯状态随之改变。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分