
RA-Eco-RA6M4-100PIN-V1.0开发板,主控芯片为R7FA6M4AF3CFP。 瑞萨电子 RA6M4 微控制器 (MCU) 产品群使用了支持 TrustZone® 的高性能 Arm® Cortex®-M33 内核。与片内的 Secure Crypto Engine(SCE) 配合使用,可提供安全芯片的功能。集成带有专用 DMA 的以太网 MAC,可确保高数据吞吐率。RA6M4 采用高效的 40nm 工艺,由基于 FreeRTOS 的灵活配置软件包 (FSP) 这一开放且灵活的生态系统概念提供支持,并能够扩展以使用其他实时操作系统(RTOS)和中间件。RA6M4 适用于物联网应用的需求,如以太网、面向未来应用的安全功能、大容量嵌入式 RAM 和较低功耗(从闪存运行 CoreMark® 算法,低至 99µA/MHz)。

)
–device $D --compiler ARMv6 configuration.xml
同理,在“Menu Content”窗口中再次新建一个菜单项 “Device Partition Manager” ,
然后在“Command”一栏中输入 RASC 程序的路径,在“Initial Folder”一栏中输入 “$P” ,在“Arguments”一栏中输入:−applicationcom.renesas.cdt.ddsc.dpm.ui.dpmapplicationconfiguration.xml"L%L"

这里进行芯片的选择,注意100pin的还分三种,选最下面的一个
然后进行配置,时钟我们默认就行


看原理图串口是使用的串口9





选择SWD
然后就生成代码
在串口的主代码中需要添加一段代码如下:
unsigned char send_buff[100];
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;
}
}
int fputc(int ch)
{
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;
}
主循环中,添加测试代码,进行串口的发送
void hal_entry(void)
{
/* TODO: add your own code here */
err = R_SCI_UART_Open(&g_uart9_ctrl, &g_uart9_cfg);
assert(FSP_SUCCESS == err);
while(1)
{
printf("Hellow world ! \r\n");
}
#if BSP_TZ_SECURE_BUILD
/* Enter non-secure code */
R_BSP_NonSecureEnter();
#endif
}
点灯的代码分文件进行了编写:
.h的文件如下:
#ifndef __BSP_LED_H
#define __BSP_LED_H
#include "hal_data.h"
/* LED引脚置低电平 LED灯亮 */
#define LED1_ON R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_02_PIN_10, BSP_IO_LEVEL_LOW)
#define LED2_ON R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_02_PIN_11, BSP_IO_LEVEL_LOW)
#define LED3_ON R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_02_PIN_14, BSP_IO_LEVEL_LOW)
/* LED引脚置高电平 LED灯灭 */
#define LED1_OFF R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_02_PIN_10, BSP_IO_LEVEL_HIGH)
#define LED2_OFF R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_02_PIN_11, BSP_IO_LEVEL_HIGH)
#define LED3_OFF R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_02_PIN_14, BSP_IO_LEVEL_HIGH)
/* 使用寄存器来实现 LED灯翻转 */
#define LED1_TOGGLE R_PORT4->PODR ^= 1<<(BSP_IO_PORT_02_PIN_10 & 0xFF)
#define LED2_TOGGLE R_PORT4->PODR ^= 1<<(BSP_IO_PORT_02_PIN_11 & 0xFF)
#define LED3_TOGGLE R_PORT4->PODR ^= 1<<(BSP_IO_PORT_02_PIN_14 & 0xFF)
/* LED初始化函数 */
void LED_Init(void);
void basic_waterfall_led(void);
void toggle_waterfall_led(void);
#endif
.c的文件如下:
#include "bsp_led.h"
/* LED初始化函数 */
void LED_Init(void)
{
/* 初始化配置引脚(这里重复初始化了,可以注释掉) */
R_IOPORT_Open (&g_ioport_ctrl, g_ioport.p_cfg);
}
/* 模式1:基础流水灯(顺序点亮)*/
void basic_waterfall_led(void) {
// 状态1:LED1亮,其他灭
LED1_ON;
LED2_OFF;
LED3_OFF;
R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS);
// 状态2:LED2亮,其他灭
LED1_OFF;
LED2_ON;
LED3_OFF;
R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS);
// 状态3:LED3亮,其他灭
LED1_OFF;
LED2_OFF;
LED3_ON;
R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS);
}
/* 模式2:翻转流水灯(寄存器级高效切换)*/
void toggle_waterfall_led(void) {
// 初始状态:仅LED1亮
LED1_ON;
LED2_OFF;
LED3_OFF;
R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS);
// 依次翻转下一个LED(同时关闭当前LED)
LED1_TOGGLE; // 关闭LED1
LED2_TOGGLE; // 开启LED2
R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS);
LED2_TOGGLE; // 关闭LED2
LED3_TOGGLE; // 开启LED3
R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS);
LED3_TOGGLE; // 关闭LED3
LED1_TOGGLE; // 重新开启LED1(循环)
}

串口可以正常工作,三个流水灯也能正常的显示

更多回帖