- 2023-10-04
-
回复了主题帖:
【瑞萨FPB_RA6E2】测评——UART使用printf
Jacktang 发表于 2023-10-4 10:02
两个SCI接口用于实现UART通讯,用printf函数实现,学习了
互相学习,共同进步,希望大佬们多多指点
-
回复了主题帖:
【瑞萨FPB_RA6E2】测评——PWM输出控制LED
Jacktang 发表于 2023-10-4 10:04
示波器不错,调节PWM占空比,PWM测试的波形挺清晰
有个示波器做很多事会方便很多,当然还得有个万用表,电路哪断开了都不知道
- 2023-10-03
-
发表了主题帖:
【瑞萨FPB_RA6E2】测评——UART使用printf
UART使用printf函数
串口作为常用的通讯外设,常用于MCU与上位机通讯调试以及控制外部模组使用。RA6E2提供了两个SCI接口用于实现UART通讯。
通过查看原理图可知,P109/P110(UART9)通过调试器的CDC端口连接。
UART驱动函数
在FSP使用手册中给出了SCI的UART模式的驱动函数。
Printf函数重定向至UART
首先,在FSP Configurator中点击Stack->New Stack->Connectivity->UART(r_sci_uart),添加一个串口模块。
串口模块的参数如下:
保存配置文件并生成相应的代码。
要使用printf函数需要设置堆栈的大小,这是因为printf函数在运行时需要使用栈空间来存储临时变量和函数调用信息。如果堆栈大小不足,可能会导致程序崩溃或不可预期的行为。 printf函数使用了可变参数列表,它会在调用时使用栈来存储参数,在函数调用结束时再清除参数,这需要足够的栈空间。另外printf也会使用一些临时变量,如果栈空间不足,会导致程序崩溃。 因此,为了避免这类问题,应该根据程序的需求来合理设置堆栈大小。在FSP Configurator中的BSP->RA Common Heap size中修改堆的大小。
在e2studio中使用printf打印时,如果在链接器脚本文件中使用了--specs=rdimon.specs参数,则编译器会使用rdimon.specs文件中的系统调用函数来实现printf函数。 在这种情况下,printf函数的输出会被重定向到一个固定的地址(通常是RAM中的一段地址),而不是直接输出到控制台或串口。这样就需要在程序中实现一个驱动程序来读取这些输出并将其输出到控制台或串口。 如果希望printf函数的输出直接输出到控制台或串口,那么需要删除--specs=rdimon.specs参数。这样编译器就会使用标准的printf函数实现,输出就会直接输出到控制台或串口。 菜单栏中的Project->Properties的C++ Build->Setting->Tool Settings->GNU ARM Cross C Linker->Miscellaneous去掉Other linker flags中的 “--specs=rdimon.specs”
在源码中引入头文件<stdio.h>,重新定义__io_putchar函数和_write函数,具体代码如下。
#include <stdio.h>
#ifdef __GNUC__ //串口重定向
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif
PUTCHAR_PROTOTYPE
{
err = R_SCI_UART_Write(&g_uart9_ctrl, (uint8_t *)&ch, 1);
if(FSP_SUCCESS != err) __BKPT();
while(uart_send_complete_flag == false){}
uart_send_complete_flag = false;
return ch;
}
int _write(int fd,char *pBuffer,int size)
{
for(int i=0;i<size;i++)
{
__io_putchar(*pBuffer++);
}
return size;
}
串口发送数据采用中断的方式,具体的代码如下:
volatile bool uart_send_complete_flag = false;
void user_uart9_callback (uart_callback_args_t * p_args)
{
if(p_args->event == UART_EVENT_TX_COMPLETE)
{
uart_send_complete_flag = true;
}
}
结合之前的PWM波输出工程,在主循环中调用printf发送数据。
printf("The PWM duty count is %d.\r\n",duty_count);
实物接线如图所示,由于Jlink虚拟串口无法通讯,这里使用P109和P110引脚通过串口助手与上位机通讯。
效果如图所示。
总结
在使用Jlink的虚拟串口发送数据时,上位机无法得到数据,不确定是什么原因,不知道哪位大佬知道怎么回事。
-
回复了主题帖:
ZYNQ蚂蚁矿机板PS端FreeRTOS+PL端点灯测试
FPGA的跑片上SOC系统用于芯片前期验证是很不错的。
-
发表了主题帖:
【瑞萨FPB_RA6E2】测评——PWM输出控制LED
本帖最后由 EPTmachine 于 2023-10-3 11:01 编辑
PWM输出控制LED
板上有两个LED灯,除了改变GPIO的电平高低来控制LED的亮灭,也可以使用定时器的PWM输出功能来控制LED的亮灭。
定时器模块和驱动函数
RA6E2上共有6个通用加强型定时器(GPT16E),2个低功耗异步通用定时器(AGT)。
其支持的功能很多,可以实现从定时器中断、PWM波输出等多种功能。
FSP中提供了对GPT模块的驱动支持。通过查看手册可以看到FSP中对GPT模块的使用函数。
PWM控制LED
在e2studio中创建对应开发板的工程,在FSP Configurator界面中,点击Stack->New Stack->Timers->Timer General PWM(r_gpt)。即可添加一个定时器模块。
通过查看数据手册可知,P207是定时器5的输出引脚
在模块的属性栏中修改其中的值如下
通过查看时钟配置可知PCLKD的时钟频率为100MHz,定时器的计数值为10000,所以PWM波输出的周期为10KHz。
完成上述配置后点击保存和生成工程文件。
在hal_entry.c中添加以下代码,通过调节PWM占空比,实现对LED灯亮度的控制。
uint32_t duty_count=5000;
const uint32_t duty_step=1000;
/* TODO: add your own code here */
fsp_err_t err = FSP_SUCCESS;
/* Open GPT module */
err = R_GPT_Open (&g_timer5_ctrl, &g_timer5_cfg);
/* Set GPT timer's DutyCycle */
err = R_GPT_DutyCycleSet (&g_timer5_ctrl, duty_count, GPT_IO_PIN_GTIOCA);
/*Delay 1 second*/
R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_SECONDS);
/* Start GPT module */
err= R_GPT_Start (&g_timer5_ctrl);
while(1)
{
/*Delay 1 Second*/
R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_SECONDS);
/*Set PWM Period*/
err = R_GPT_DutyCycleSet (&g_timer5_ctrl, duty_count, GPT_IO_PIN_GTIOCA);
/*Change duty count*/
duty_count+=duty_step;
if(duty_count>=10000)
{
duty_count=0;
}
}
通过示波器可以查看当前的波形频率为10.013KHz,与设定值相近。
演示视频如下:[localvideo]6c1999fdcf8f5d6747720a6249273e08[/localvideo]
总结
本次对定时器的PWM功能进行了测试,熟悉开发环境需要阅读很多文档,不过熟悉使用后,可以快速地搭建应用,不必为繁琐地寄存器配置浪费时间,而且由于使用接口函数编程,一直到其他平台也会很方便。
-
回复了主题帖:
【瑞萨FPB_RA6E2】测评——开发板开箱、环境搭建和点灯
bigbat 发表于 2023-10-3 10:25
瑞萨的芯片的芯片支持threadx这个让我很感动哦,当然freeRTOS也是支持的,盼着瑞萨的网络版了
threadX是微软推出的实时操作系统,现在主要用在哪些领域,大佬能具体说下吗?
-
回复了主题帖:
TI【LP_MSPM0L1306开发板】测评——MSPM0SDK,SysConfig工具以及CCS工程结构学习
lugl4313820 发表于 2023-10-3 08:16
SysConfig是TI推出的用于配置引脚、外设、射频、子系统以及组件的易用图形配置工具。
这个意法半导体推 ...
是的,各家的外设设计不同,使用起来的方法也就不同,虽然现在各家都提供了很详细的示例工程可以快速上手,但是调试的时候需要去查看寄存器的值来判断问题出现的原因。
-
回复了主题帖:
【瑞萨FPB_RA6E2】测评——开发板开箱、环境搭建和点灯
lugl4313820 发表于 2023-10-3 07:58
芯片的配套的开发工具和示例代码很多,大厂提供的资料确实很多,对于开发者来说是一件好事,开发板载调试器 ...
是的,用的多了,感觉瑞萨的工具功能是很全的,华为使用瑞萨的芯片开发物联网设备的例子也是有的。
-
回复了主题帖:
TI【LP_MSPM0L1306开发板】测评——MSPM0SDK,SysConfig工具以及CCS工程结构学习
jobszheng5 发表于 2023-10-3 07:21
真棒!
羡慕一下
大佬是因为没有时间,所以没有参加本次测评吗
- 2023-10-02
-
发表了主题帖:
【瑞萨FPB_RA6E2】测评——开发板开箱、环境搭建和点灯
瑞萨FPB-RA6E2开发板开箱、环境搭建和点灯
FPB-RA6E2快速原型开发板为使用RA6E2 MCU进行评估、原型设计和开发提供了一个平台。板上自带了仿真器,便于调试,同时,板上引出了所有可有引脚,支持Arduino接口和两个PMOD接口,便于进行扩展。
本次的开发套件除了开发板和USB线外,还提供了CAN模块、杜邦线和收纳盒。板载的外设包括了一个用户按键和两个LED。
开发环境搭建
瑞萨为RA6E2 MCU提供了fsp软件包,fsp的安装包分为两个版本一个集成了e2studio开发环境,另一个为独立的工具RASC,可以生成Keil、IAR和Cmake工程。安装包可以在瑞萨的官网下载得到。
上图为相应的软件安装包和不同平台的芯片支持包,安装过程十分简单,采用默认安装即可。
安装完成后,在安装目录可以找到相应的启动程序。下图为RASC的启动程序所在的目录。
下图为e2studio的启动程序所在的目录。
点击相应的应用程序就可以开始创建MCU的程序。
e2Studio创建工程
打开e2studio新建工程
选择工程类型为Renesas RA
输入创建的工程名
选择工程类型为无TrustZone类型工程
选择工程为无操作系统支持的类型
选择工程模板为Blink,点击Finish就可以完成工程的创建。
该工程创建完成后,通过FSP Configurator工具查看引脚配置可以看到P206和P207分别接到LED2和LED1上。
由于该开发板瑞萨提供了其BSP支持包,在工程的ra文件夹下可以看到board子文件夹,其中定义了板上的外设资源,便于用户调用。
在board.c中定义了引脚的控制数组,和配置工具中的配置是对应的。
/** Array of LED IOPORT pins. */
static const uint16_t g_bsp_prv_leds[] =
{
(uint16_t) BSP_IO_PORT_02_PIN_07, ///< LED1
(uint16_t) BSP_IO_PORT_02_PIN_06, ///< LED2
};
在工程中调用fsp的延时函数和IO驱动函数每隔一定时间修改相应的引脚的状态,实现LED灯的状态变化。
void hal_entry (void)
{
#if BSP_TZ_SECURE_BUILD
/* Enter non-secure code */
R_BSP_NonSecureEnter();
#endif
/* Define the units to be used with the software delay function */
const bsp_delay_units_t bsp_delay_units = BSP_DELAY_UNITS_MILLISECONDS;
/* Set the blink frequency (must be <= bsp_delay_units */
const uint32_t freq_in_hz = 2;
/* Calculate the delay in terms of bsp_delay_units */
const uint32_t delay = bsp_delay_units / freq_in_hz;
/* LED type structure */
bsp_leds_t leds = g_bsp_leds;
/* If this board has no LEDs then trap here */
if (0 == leds.led_count)
{
while (1)
{
; // There are no LEDs on this board
}
}
/* Holds level to set for pins */
bsp_io_level_t pin_level = BSP_IO_LEVEL_LOW;
while (1)
{
/* Enable access to the PFS registers. If using r_ioport module then register protection is automatically
* handled. This code uses BSP IO functions to show how it is used.
*/
R_BSP_PinAccessEnable();
/* Update all board LEDs */
for (uint32_t i = 0; i < leds.led_count; i++)
{
/* Get pin to toggle */
uint32_t pin = leds.p_leds[i];
/* Write to this pin */
R_BSP_PinWrite((bsp_io_port_pin_t) pin, pin_level);
}
/* Protect PFS registers */
R_BSP_PinAccessDisable();
/* Toggle level for next write */
if (BSP_IO_LEVEL_LOW == pin_level)
{
pin_level = BSP_IO_LEVEL_HIGH;
}
else
{
pin_level = BSP_IO_LEVEL_LOW;
}
/* Delay */
R_BSP_SoftwareDelay(delay, bsp_delay_units);
}
}
编译下载后,板上的LED会固定地闪烁。
RASC 生成Keil工程
RASC代码配置工具是用于生成Keil、IAR和Cmake的代码配置工具,使用起来和e2studio中的FSP Configurator很相似,区别在于创建工程时选择的工程类型不同。启动RASC选择生成工程的位置和工程类型。
其余的部分和e2studio中的操作是类似的。配置完成后点击“Generate Project Content”就可以得到Keil工程。
在Keil中的工具栏中中选择“Customize Tools Menu”
添加如下的内容
Menu Name:填入任意字符即可,这里填入“RA Smart Configurator 4.6”
Command:根据安装路径填入rasc.exe的执行路径
Initial Folder:填入$P
Arguments:填入“--device $D --compiler ARMv6 configuration.xml”
这样就可以在Keil中调用RASC配置工具了。
该工程的源码与e2tudio中创建的例程是一致的,编译和下载后可以看到LED1和LED2闪烁。
总结
芯片的配套的开发工具和示例代码很多,大厂提供的资料确实很多,对于开发者来说是一件好事,开发板载调试器,引出可用的引脚,同时支持多种接口,配置上来说是很标准,开发方式支持多种环境,能够满足不同的需求。
-
回复了主题帖:
TI【LP_MSPM0L1306开发板】测评——GUI Composer GUI使用和出厂程序体验
秦天qintian0303 发表于 2023-10-1 20:18
这种可视化测试还是挺不错的,不知道到实物效果如何
体验下来感觉还是,自己要是做一个复杂的不知道会如何。
-
回复了主题帖:
TI【LP_MSPM0L1306开发板】测评——MSPM0SDK,SysConfig工具以及CCS工程结构学习
秦天qintian0303 发表于 2023-10-2 13:13
迅速啊,又要了解一个新的开发环境了
TI提供的文档还是挺多的,看着操作下来,对于大概的流程就能有一个了解了。
-
发表了主题帖:
TI【LP_MSPM0L1306开发板】测评——MSPM0SDK,SysConfig工具以及CCS工程结构学习
MSPM0SDK、SysConfig工具以及CCS工程结构学习
TI为MSPM0系列控制器提供了MSPM0SDK,辅助开发者快速上手控制器的使用,并且提供了很多外设、应用的示例代码,在此基础上,开发者可以快速开发出符合自己应用的代码。另外,SysConfig工具可以帮助开发者配置控制器的外设的参数,并生成相应的初始化函数和数据结构,提高开发效率。
MSPM0SDK
在TI的官网搜索“MSPM0 SDK”即可找到MSPM0 SDK的下载界面。
下载完成后,在安装位置可以查看MSPM0SDK的说明文档、示例代码、CPU内核驱动和操作系统相关的代码、外设驱动代码以及SysConfig工具导入脚本等资源。
SysConfig
SysConfig是TI推出的用于配置引脚、外设、射频、子系统以及组件的易用图形配置工具。
在图形化界面中选定外外设的参数,并设定实例化的外设名。根据这些配置,SysConfig工具可以在指定的文件中生成相应的代码,比如下面的输出文件配置。
在工程中引用“ti_msp_dl_config.h”就可以使用SysConfig生成的配置代码,配合MSPM0SDK提供的驱动代码可以构建易于维护的代码。
CCS工程结构
Code Composer Studio是TI官方提供的集成开发环境,在其欢迎界面的Resource Explore中找到MSPM0的相关资源,从其中导入和开发板相关的工程。比如gpio_toggle工程。
导入工程后,可以看到工程的目录如图所示,包含了启动代码、配置文件、用户代码等。
Sysconfig工具生成的源代码位于Debug/syscfg文件夹下。
示例代码中使用MSPM0的驱动库时使用的是库文件的形式,编译出来的源码无法查看库函数中的具体实现,要查看驱动库代码中的具体实现,通过修改工程中驱动代码的引用方式,并重新编译即可。具体操作在官方的说明文档中有具体的说明。这里简单说明
在工程的Properties页面中,找到Fiel Search Path页面,删除其中的drivelib.a的引用项;
在工程中新建文件夹。
在弹出的页面中选择“Advanced”,再勾选“Linked Folder”选项,再点击Variable。
再弹出的“Path Variable”界面中选择“COM_TI_MSPM0_SDK_INSTALL_DIR”,再选择“Extension”选项,选择drivelib的具体位置。
完成上述操作并保存后,工程的文件树中就引用了MSPM0的driverlib源码,同时将文件中的“lib”文件夹从build中排除掉,重新编译工程后,就可以查看工程中调用的驱动函数的具体实现。
总结
TI的MSPM0SDK和SysConfig工具辅助开发是个不错的选择,再CCS中进行开发不仅能访问大量的已有工程,而且工程的灵活性也很不错,CCS如果可以支持pyocd扩展,使用daplink进行调试就更好了。
-
回复了主题帖:
TI【LP_MSPM0L1306开发板】测评——开发板开箱、环境搭建和点灯
Jacktang 发表于 2023-10-2 09:46
CCS的版本选择为12.4是比较新了,不知道安装对硬件有什么要求
我使用的电脑配置如下,CCS Studio用起来不如Keil流畅,但是功能丰富,如果电脑性能可以推荐使用CCS
- 2023-10-01
-
回复了主题帖:
【瑞萨RA6E2评估板】开箱测评及特性介绍
请问大佬如何区分镀金和无铅工艺呢?
-
回复了主题帖:
开源好帮手:分享一个功能强大的串口示波器开源项目!
串口配合合适的通讯协议可以传输各种各样的数据,可以帮助工程师实现灵活的数据监控。
-
回复了主题帖:
TI【LP_MSPM0L1306开发板】测评——GUI Composer GUI使用和出厂程序体验
确实,使用GUI Composer 协议可以在网页上创建出不错的人机交互界面
- 2023-09-30
-
发表了主题帖:
TI【LP_MSPM0L1306开发板】测评——GUI Composer GUI使用和出厂程序体验
本帖最后由 EPTmachine 于 2023-9-30 20:35 编辑
GUI Composer GUI使用和出厂程序体验
想要快速了解LP_MSPM0L1306开发板上的功能,可以使用官方提供的out of box演示例程,搭配官方提供的GUI Composer生成的GUI,快速地对开发板上的模拟功能进行测试。
TI Cloud Agent
要运行官方提供的GUI程序,需要安装TI Cloud Agent。再进行安装前,需要确定自己的电脑中是否开启了“Windows short filename generation”。具体的解决办法可以参考官方提供的教程;
在浏览器(官方推荐使用Chrome)中安装TICloudAgent Bridge插件。
运行GUI演示程序
在Chrome浏览器中输入以下网址:
https://dev.ti.com/gallery/view/TIMSPGC/LP_MSPM0L1306_OOBE/ver/1.0.1/
就可以打开与LP_MSPM0L1306开发板相对应的GUI程序。
在OPTION选项卡中选择XDS110的虚拟COM口中Application串口,波特率设定为115200,点击连接,连接成功后,状态栏中会显示“Waiting for data”
显示的Demo中给出了四种运行状态,分别对应不同的演示程序,默认状态下是500ms翻转LED1的状态;
Blink LED示例演示了使用定时器控制LED2的翻转速度,在GUI界面中先点击“Enable”开关,启用该示例。在界面上调节翻转周期,可以看到LED灯的翻转速度发生了变化,同时页面上的指示灯也实现了当前的LED2的状态和颜色;
Light Sensor示例演示了使用OPA0的通用模式,配合板上的发光二极管、电容和电阻组成光传感器电路。使用ADC0对光传感电路的电压采样,在GUI上显示采样结果,并根据采样值调节控制RGB LED灯的PWM波占空比,从而控制其亮度。
Thermistor示例演示了使用OPA0的缓存模式,配置板上的热敏电阻使用温度测测电路,转换的温度结果显示在GUI上,ADC的结果用与调节RGB灯的颜色。
总结
GUI Composer的示例程序提供了开发板上不同外设的使用示例,使用起来也很直观,可以直接运行的程序可以帮助开发者快速上手芯片的使用,确实很不错的设计。
-
回复了主题帖:
中秋芯积分兑换月饼啦!芯积分不够的往这看!
希望多一些发积分的活动和任务,光靠发帖和水评论攒积分太慢了。
-
发表了主题帖:
TI【LP_MSPM0L1306开发板】测评——开发板开箱、环境搭建和点灯
本帖最后由 EPTmachine 于 2023-9-30 10:59 编辑
开发板硬件概览
TI推出的LP_MSPM0L1306开发板的外观如上图所示,主芯片为MSPM0L1306/QFN32。芯片内核使用Cortex-M0,频率高达32MHz。片上Flash有64KB,RAM为4KB。模拟部分的零漂移和零交叉斩波运算放大器(OPA)和通用放大器(GPAMP)集成高性能外设,在其他家的产品中好像没有见过,简化了外部模拟电路的设计,节省了PCB的面积,可以使设计更为小巧。
40 引脚 BoosterPack™ 插件模块接头简化了快速原型设计,可以使用现有的模块进行应用验证,板载的XDS110调试探针可以帮助开发者方便地调试应用,该调试器支持用于超低功耗调试的EnergyTrace技术。
开发板上的两个按钮、1个LED和1个RGB LED、热敏电阻电路、光传感器电路、反向通道UART(通过USB连接到PC),帮助开发者快速熟悉芯片的使用。
为了支持MSPM0L1306的开发,TI提供了MSPM0软件开发套件(SDK)和SysConfig代码配置工具。以上工具都支持CCS、Keil和IAR开发环境。
CCS环境搭建
CCS是TI官方开发的集成开发环境,CCS集成了SysConfig代码生成工具,CCS的版本选择为12.4,在CCS中开发MSPM0L1306的程序除了安装CCS外,还需要安装MSPM0 SDK。程序的安装很简单,选择默认配置即可,这里不再赘述。
程序具体的使用部分可以参考随MSPM0 SDK一起发布的MSPM0 SDK Overview文档来查看。
在安装CCS时,有时会提示”Pending Reboot”错误,如果重启注销都无效,可以尝试如下方法:
1.在windows运行里输入regedit打开注册表
2.查找并删除路径下HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager/的PendingFileRenameOperations文件
除了CCS开发环境外,TI还提供了IAR、Keil等开发环境的开发指南,但是TI的MSPM0 SDK和SysConfig在IAR和Keil环境中的支持目前并不好,尤其是MSPM0 SDK的代码引用,SysConfig的使用,对于初学者而言有很大的门槛。目前DAP link在下载代码时存在问题,会出现以下错误提示,而Jlink则不会,希望以后的版本能改善这一点。
工程创建
在CCS的File->New File->Project中选择CCS Project
会出现以下界面,在此界面中的“Project templates and examples”界面中选择“Open Resouce Explore”,会打开TI的在线资源中心,可以在其中下载、查看芯片的相关文档,导入示例工程。
在访问该资源时,有时会出现403Forbidden的提示信息,解决办法是打开电脑的默认浏览器,登录TI的账号即可。
这里选择示例程序中的DriverLib下的GPIO输出示例,将其导入到CCS IDE中。
导入的结果如图所示,包含了Sysconfig文件、启动文件、芯片链接文件等关键的依赖项,用户根据自己的需要,在示例的基础上添加自己需要的功能即可。
另外,不使用示例导入的方法,使用选择芯片型号,创建空工程的方法创建工程也可行,但是对入门的开发者来说,需要深入了解CCS的工程管理才行。
CCS中创建empty project和使用示例工程导入的工程在文件树上的差别很大,导入示例工程中,包含了对MSPM0 SDK的引用,SysConfig工具的配置等,而直接创建的空工程中是不包含这些配置的,需要手动配置,对于CCS包管理不熟悉的新手来说,这无疑增加了难度,所以在官方提供的示例上修改无疑是最好的选择。
GPIO使用
通过查看原理图,可以知道PA0连接LED1 Red(低电平有效),而PA13连接在RGB(高电平有效)的绿色引脚,PA26连接在RGB的红色引脚,PA27连接在RGB的蓝色引脚。
在CCS中导入MSPM0L1306中与GPIO相关的示例程序,这里选择gpio_toggle_output_LP_MSPM01306_nortos_ticlang。
该工程中使用了RGB灯,没有使用LED1,这里通过修改gpio_toggle_output.sysconfig工具来添加LED1。
在GPIO标签中修改GPIO的名称和分配的引脚编号:
上图中根据LED1引脚,重新分配引脚和实例名。分配完成后,保存当前的修改。
在工程中使用GPIO时,如果要使用GPIO这一外设,<外设名_PORT>作为配置的端口的名称,而引脚则为<外设名_引脚名_PIN>。在本例中GPIO Port和引脚的引用如下所示。
DL_GPIO_clearPins(GPIO_LEDS_PORT,GPIO_LEDS_USER_LED_RED_PIN);
DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_RGB_B_PIN);
主函数中的代码如下:
#include "ti_msp_dl_config.h"
int main(void)
{
/* Power on GPIO, initialize pins as digital outputs */
SYSCFG_DL_init();
/* Default: USER_LED_RED On,USER_RGB_B On ,USER_RGB_R OFF,USER_RGB_G OFF*/
DL_GPIO_clearPins(GPIO_LEDS_PORT,GPIO_LEDS_USER_LED_RED_PIN);
DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_RGB_B_PIN);
DL_GPIO_clearPins(
GPIO_LEDS_PORT, GPIO_LEDS_USER_RGB_R_PIN | GPIO_LEDS_USER_RGB_G_PIN);
while (1) {
/*
* Call togglePins API to flip the current value of LEDs. This
* API causes the corresponding HW bits to be flipped by the GPIO HW
* without need for additional R-M-W cycles by the processor.
*/
delay_cycles(10000000);
DL_GPIO_togglePins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_RED_PIN |
GPIO_LEDS_USER_RGB_B_PIN |
GPIO_LEDS_USER_RGB_R_PIN);
delay_cycles(10000000);
DL_GPIO_togglePins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_RED_PIN |
GPIO_LEDS_USER_RGB_G_PIN |
GPIO_LEDS_USER_RGB_R_PIN);
delay_cycles(10000000);
DL_GPIO_togglePins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_RED_PIN |
GPIO_LEDS_USER_RGB_G_PIN |
GPIO_LEDS_USER_RGB_B_PIN);
}
}
工程默认的下载器为XDS110。
点击工具栏中的编译按键,完成编译后点击Debgger按钮即可将程序下载到MCU中并开始调试。
程序的运行效果如视频所示。
[localvideo]5f286b6a1b3f0b607fe43e60507f917f[/localvideo]