A.非常感谢william hill官网 和瑞萨的活动
B.没有用过瑞萨的开发环境,上手比较简单,要深入还是需要时间研究,逻辑和stm32还是有比较大的区别
话不多说直接入主题
1.打开E2左上角 file->new project
如图
2.依次点击 renesas RA-> renesas RA C/C++ project->next
3.输入项目名称(不能含中文和中文符号)
选择自己的芯片型号
进入工程界面
配置堆栈大小
配置串口
原理图是P110,P109
LED配置
LED原理图
printf重定向
快捷键 ctrl+alt+p进入项目设置
hal_entry.c 函数
#include "hal_data.h"
#include <stdio.h> //必须包含标准库
FSP_CPP_HEADER
void R_BSP_WarmStart(bsp_warm_start_event_t event);
FSP_CPP_FOOTER
fsp_err_t err = FSP_SUCCESS;
unsigned char send_buff[100];
volatile bool uart_send_complete_flag = false;
void user_uart_callback(uart_callback_args_t *p_args)
{
if (p_args->event == UART_EVENT_TX_COMPLETE)
{
uart_send_complete_flag = true;
}
}
#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;
}
void hal_entry(void) //入口函数
{
/* TODO: add your own code here */
/* Open the transfer instance with initial configuration. */
err = R_SCI_UART_Open (&g_uart9_ctrl, &g_uart9_cfg); //初始化串口和使能
assert(FSP_SUCCESS == err);
int int_i = 55;
float float_i = 66.20f;
char char_i[] = "hello e2studio";
while (1)
{
R_IOPORT_PinWrite (&g_ioport_ctrl, BSP_IO_PORT_04_PIN_15, BSP_IO_LEVEL_LOW);//LED灭
R_BSP_SoftwareDelay (500, BSP_DELAY_UNITS_MILLISECONDS); // 延时0.5s
printf ("int_i=%d\r\n", int_i);
printf ("float_i=%.2f\r\n", float_i);
printf ("char_i='%s'\r\n", char_i);
R_IOPORT_PinWrite (&g_ioport_ctrl, BSP_IO_PORT_04_PIN_15, BSP_IO_LEVEL_HIGH);//LED亮
R_BSP_SoftwareDelay (500, BSP_DELAY_UNITS_MILLISECONDS); // 延时0.5s
}
#if BSP_TZ_SECURE_BUILD
/* Enter non-secure code */
R_BSP_NonSecureEnter();
#endif
}
/*******************************************************************************************************************//**
* This function is called at various points during the startup process. This implementation uses the event that is
* called right before main() to set up the pins.
*
* @param[in] event Where at in the start up process the code is currently at
**********************************************************************************************************************/
void R_BSP_WarmStart(bsp_warm_start_event_t event)
{
if (BSP_WARM_START_RESET == event)
{
#if BSP_FEATURE_FLASH_LP_VERSION != 0
/* Enable reading from data flash. */
R_FACI_LP->DFLCTL = 1U;
/* Would normally have to wait tDSTOP(6us) for data flash recovery. Placing the enable here, before clock and
* C runtime initialization, should negate the need for a delay since the initialization will typically take more than 6us. */
#endif
}
if (BSP_WARM_START_POST_C == event)
{
/* C runtime environment and system clocks are setup. */
/* Configure pins. */
R_IOPORT_Open (&g_ioport_ctrl, g_ioport.p_cfg);
}
}
#if BSP_TZ_SECURE_BUILD
BSP_CMSE_NONSECURE_ENTRY void template_nonsecure_callable ();
/* Trustzone Secure Projects require at least one nonsecure callable function in order to build (Remove this if it is not required to build). */
BSP_CMSE_NONSECURE_ENTRY void template_nonsecure_callable ()
{
}
#endif
编译输出
串口输出
更多回帖