![1.png 1.png](https://static.assets-stash.eet-china.com/forum/202306/14/222828magebn0971cug551.png)
![2.png 2.png](https://static.assets-stash.eet-china.com/forum/202306/14/222828qr7tpa9q09p9597t.png)
![3.png 3.png](https://static.assets-stash.eet-china.com/forum/202306/14/222828pe11gep9dm9egmew.png)
![4.png 4.png](https://static.assets-stash.eet-china.com/forum/202306/14/222828hqcclkbb46tq4i94.png)
![5.png 5.png](https://static.assets-stash.eet-china.com/forum/202306/14/222828yxl829l00u32983m.png)
根据原理图LED连接到了P106,在 FSP 配置界面里面点开 “Pins”-> “Ports”-> “P1”-> “P106”, 然后将连接到LED灯的 IO 引脚的 “Mode” 属性配置为 “Output mode (Initial Low)”, 表示该引脚默认输出低电平,其他的属性默认即可。
![屏幕截图 2023-06-14 215839.png 屏幕截图 2023-06-14 215839.png](https://static.assets-stash.eet-china.com/forum/202306/14/222828anucc1uettbybec7.png)
IO配置:
Pin Configuration 页面的 IOPORT 属性介绍:
[size=0.9]IOPORT 属性
[size=0.9]描述
[size=0.9]Mode
[size=0.9]IO引脚的工作模式,包括输入模式和输出模式,选择输出模式时可以设置引脚的初始输出电平。
[size=0.9]Pull up
[size=0.9]IO引脚是否上拉。
[size=0.9]Drive Capacity
[size=0.9]IO引脚的驱动能力设置。
[size=0.9]Output type
[size=0.9]IO引脚的输出类型。可以选 CMOS 推挽输出或开漏输出。
![屏幕截图 2023-06-14 222329.png 屏幕截图 2023-06-14 222329.png](https://static.assets-stash.eet-china.com/forum/202306/14/222828modzn6t65noh5h1i.png)
因此时钟配置选择内部晶振:
![222.png 222.png](https://static.assets-stash.eet-china.com/forum/202306/14/223042y344a5ii98p49800.png)
配置完成之后按下快捷键 “Ctrl + S” 保存,最后点右上角的 “Generate Project Content” 图标, 让软件自动生成配置代码即可。
从keil左侧“项目资源管理器”打开工程目录下的 “Flex Software/pin_data.c” 源文件, 就会看到 g_bsp_pin_cfg_data 数组中已经加入了LED引脚的配置数据。 在 IOPORT 初始化的时候,它们会被用来对引脚进行初始化配置。当没有使用 RTOS 时,C语言程序的入口函数 main 函数调用了 hal_entry 函数。 打开 “Renesas RA Smart Configurator:Common Sources/hal_entry.c” 文件,在 hal_entry 函数里面编写代码。
void hal_entry(void){ /* TODO: add your own code here */ R_IOPORT_Open (&g_ioport_ctrl, g_ioport.p_cfg); while(1) { R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_06, BSP_IO_LEVEL_LOW); R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_SECONDS); R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_06, BSP_IO_LEVEL_HIGH); R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_SECONDS); } #if BSP_TZ_SECURE_BUILD /* Enter non-secure code */ R_BSP_NonSecureEnter(); #endif }
复制代码串口数据收发
瑞萨 RA6M4的串口叫做SCI(Serial Communications Interface),意为串行通信接口, 是相对与并行通信的概念,是串行通信技术的一种总称,包括了UART,SPI等串行通信技术。在 FSP 配置界面里面点开 “Pins”-> “Peripherals”-> “Connectivity:SCI”-> “SCI7” 来配置SCI模块, 配置为 “Asynchronous UART” 模式,并选择开发板所使用的串口引脚
![33.png 33.png](https://static.assets-stash.eet-china.com/forum/202306/14/223254eoj0brnnqbldgdnw.png)
在配置界面底部点击 “Stack”,加入串口UART:
![44.png 44.png](https://static.assets-stash.eet-china.com/forum/202306/14/223254puakkre3pp1pu3ee.png)
点击刚刚加入的窗口,在左下角的“属性”窗口中配置 名字(name)、通道(Channel)、回调函数(Callback)名字即可, 引脚(Pins)、波特率(Baud Rate)等其他的属性按照默认的配置即可。
使用 printf 函数时,需要使用到堆,默认情况下堆的大小为0,因此我们需要修改堆的大小。 可以在 FSP 配置界面中的“BSP”属性栏的“RA Common”中通过修改“Heap size”来设置堆区大小。 这里需要设置为 8 的整数倍,对于RA6M4推荐至少为4K(0x1000)
![55.png 55.png](https://static.assets-stash.eet-china.com/forum/202306/14/223254ybytpmbme4mmebqe.png)
FSP 配置并生成代码之后,首先需要使用 R_SCI_UART_Open 函数打开 SCI7 UART 模块。
串口中断回调函数
在前面的 FSP 配置步骤的时候,设置了串口中断回调函数的名字为: uart7_callback。 设置这么一个函数的原因是:每当串口发送或者接收完成一个字符时,都会默认触发串口的中断, 而在串口中断中会调用函数 uart7_callback,在函数里需要根据不同的中断情况进行相应的处理。
/* 发送完成标志 */volatile bool uart_send_complete_flag = false; /* 串口中断回调 */ void uart7_callback (uart_callback_args_t * p_args) { switch (p_args->event) { case UART_EVENT_RX_CHAR: { /* 把串口接收到的数据发送回去 */ R_SCI_UART_Write(&g_uart7_ctrl, (uint8_t *)&(p_args->data), 1); break; } case UART_EVENT_TX_COMPLETE: { uart_send_complete_flag = true; break; } default: break; } }
复制代码重定向 printf 输出
int fputc(int ch, FILE *f){ (void)f; R_SCI_UART_Write(&g_uart7_ctrl, (uint8_t *)&ch, 1); while(uart_send_complete_flag == false); uart_send_complete_flag = false; return ch; }
复制代码hal_entry入口函数
C语言程序的入口函数 main 函数调用了 hal_entry 函数。 在 hal_entry 函数里面编写我们的应用代码。
![屏幕截图 2023-06-14 223450.png 屏幕截图 2023-06-14 223450.png](https://static.assets-stash.eet-china.com/forum/202306/14/223456n8l2bwxlxxlfkwqi.png)
USB转串口模块连接到串口7:
![屏幕截图 2023-06-14 222302.png 屏幕截图 2023-06-14 222302.png](https://static.assets-stash.eet-china.com/forum/202306/14/222828dwm1rgs23zjxi2u2.png)
调用 printf 输出提示信息到串口:
![屏幕截图 2023-06-14 223334.png 屏幕截图 2023-06-14 223334.png](https://static.assets-stash.eet-china.com/forum/202306/14/223340geuquoa1nuanoyga.png)