续前【RA4L1-SENSOR】电压检测器1。开箱+Keil环境搭建
STM32CUBEMX相似的KEIL初始化代码生成器** RA Smart Configurator软件可以在Github上的FSP 发布页面进行下载,下载地址:https://github.com/renesas/fsp/releases
| setup_fsp_v5_9_0_rasc_v2025-04.exe| 910 MB | Apr 21 2025 |
下载后安装:


安装完成后在Renesas\RA\eclipse目录中运行rasc.exe
配置keil项目

* 以及编译工具一路next就可以创建

可以进入配置也可以关闭在keil项目中配置.
产生目录: 
打开lu.uvprojx

打开该文件配置的RA Smart Configurator

时钟图:内核:频率高达 80MHz=8M*10
开发板上的HSE晶振是8M的,因此需要在Clocks页面将 XTAL改为8MHz。同时还要改一下PLL倍率为x10,这样让工作频率在80MHz。


在Stacks项中 点击Stacks->New Stack->Connectivity -> UART (r_sci_uart)。
r_sci_uart配置如下;
中断回调

在bsp中设置heap为0x2000

保存并生成配置,在keil中用microlib

增加部分代码:
#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;
}
}
int fputc(int ch, FILE *f)
{
err = R_SCI_UART_Write(&g_uart0_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)
{
err = R_SCI_UART_Open(&g_uart0_ctrl, &g_uart0_cfg);
assert(FSP_SUCCESS == err);
while(1)
{
printf("Hello, i am %s\\\\n", "mculover666");
printf("Test int: i = %d", 100);
printf("Test float: i = %f", 1.234);
printf("Test hex: i = 0x%2x",100);
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_04,BSP_IO_LEVEL_LOW );
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_03, BSP_IO_LEVEL_LOW);
printf("[app info led off]");
R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS);
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_04, BSP_IO_LEVEL_HIGH);
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_03, BSP_IO_LEVEL_HIGH);
printf("[app info led on]");
R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS);
}
配置ADC
在Stacks项中 点击Stacks->New Stack->Analog -> adc (r_adc)。

配置AN025通道为引脚P510


增加代码
volatile bool scan_complete_flag = false;
voidadc_callback (adc_callback_args_t * p_args)
{
FSP_PARAMETER_NOT_USED(p_args);
scan_complete_flag = true;
}
在/*
TODO:
add your own code here */
下增加:
fsp_err_t err = FSP_SUCCESS;
err = R_ADC_Open(&g_adc0_ctrl,
&g_adc0_cfg);
assert(FSP_SUCCESS == err);
err = R_ADC_ScanCfg(&g_adc0_ctrl,
&g_adc0_channel_cfg);
assert(FSP_SUCCESS == err);
double a0,a5;
uint16_t adc_data1=0;
uint16_t adc_data2=0;
在while(1)中增加
/*
Enable scan triggering from ELC events. */
(void) R_ADC_ScanStart(&g_adc0_ctrl);
scan_complete_flag = false;
while (!scan_complete_flag)
{
/*
Wait for callback to set flag. */
}
err =R_ADC_Read(&g_adc0_ctrl, ADC_CHANNEL_25, &adc_data1);
assert(FSP_SUCCESS == err);
a0=(adc_data1/4095.0)*3.3;
printf("a0 = %f", a0);
R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS);
编译:
linking...
Program Size: Code=6604 RO-data=680 RW-data=8 ZI-data=10336
FromELF: creating hex file...
After Build - User command #1: cmd /c "start "Renesas" /w cmd /c ""E:\\lst\\ra0e1-20240827154516\\123\\new1\\FSP_Project\\rasc_launcher.bat" "E:\\lst\\ra0e1-20240827154516\\123\\new1\\FSP_Project\\rasc_version.txt" -nosplash --launcher.suppressErrors --gensmartbundle --compiler ARMv6 --devicefamily ra "E:\\lst\\ra0e1-20240827154516\\123\\new1\\FSP_Project\\configuration.xml"
"E:\\lst\\ra0e1-20240827154516\\123\\new1\\FSP_Project\\Objects\\FSP_Project.axf"
2> "%TEMP%\\rasc_stderr.out"""
".\\Objects\\FSP_Project.axf" - 0
Error(s), 47 Warning(s).
Build Time Elapsed: 00:00:33
烧Load :
Load "E:\lst\ra4l1\RAL1_UART_LED\Objects\RAL1_UART_LED.axf"
Erase Done.
Programming Done.
Verify OK.
Application running ...
Flash Load finished at 15:12:06
reset
reset com 口printf输出:
Hello,
i am m
culover666
Test int: i = 100Test float: i =
1.234000Test hex: i = 0x64[app info
led off][app info led on]a0:
3.300000
达到预期状态。