03 瑞萨单片机 点灯大师
配置FSP库
修改系统晶振
在配置IO前,我们首先要对系统时钟进行设置,瑞萨的默认配置外部晶振为10M,然而大部分的开发板都是24M,所以要进行修改
配置引脚
将引脚配置为输出模式(默认低电平)
如何就可以保存,生成代码。
IO操作函数解析
操作IO的函数声明在r_ioport.h文件中
常用的操作函数
R_IOPORT_Open()
用于打开I/O端口。它的作用是初始化并打开指定的I/O端口,以便进行读写操作。该函数需要传入一个参数,即I/O端口的标识符。
其与STM32不同 STM32需要开启时钟并初始化对应引脚,而瑞萨配置多个IO的时候,也仅需调用一次该函数初始化即可。
R_IOPORT_Close()
关闭IO端口,与R_IOPORT_Open()对应
R_IOPORT_PinCfg()
用于配置指定引脚的输入/输出模式、上拉/下拉电阻、中断触发方式等参数。它的作用是根据用户的需求,对单个引脚进行灵活的配置,以满足不同的应用场景。
第三个参数cfg的选择范围为
R_IOPORT_PinRead()
读取指定IO状态
R_IOPORT_PinWrite()
设置指定IO状态
编写IO控制代码
首先进行IO初始化
/* LED初始化函数 */
void LED_Init(void)
{
/* 初始化配置引脚(这里重复初始化了,可以注释掉) */
R_IOPORT_Open (&g_ioport_ctrl, g_ioport.p_cfg);
}
声明宏定义方便操作
可根据需求修改引脚
注意 端口A实际为PORT_10
/* LED引脚置低电平 LED灯亮 */
#define LED1_ON R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_02_PIN_07, BSP_IO_LEVEL_LOW)
#define LED2_ON R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_05_PIN_00, BSP_IO_LEVEL_LOW)
/* LED引脚置高电平 LED灯灭 */
#define LED1_OFF R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_02_PIN_07, BSP_IO_LEVEL_HIGH)
#define LED2_OFF R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_05_PIN_00, BSP_IO_LEVEL_HIGH)
/* 使用寄存器来实现 LED灯翻转 */
#define LED1_TOGGLE R_PORT2->PODR ^= 1<<(BSP_IO_PORT_02_PIN_07 & 0xFF)
#define LED2_TOGGLE R_PORT5->PODR ^= 1<<(BSP_IO_PORT_05_PIN_00 & 0xFF)
主函数调用
void hal_entry(void)
{
/* TODO: add your own code here */
LED_Init(); // LED 初始化
Key_Init(); // 按键初始化
while(1)
{
LED1_TOGGLE;
R_BSP_SoftwareDelay (500,BSP_DELAY_UNITS_MICROSECONDS);
}
#if BSP_TZ_SECURE_BUILD
/* Enter non-secure code */
R_BSP_NonSecureEnter();
#endif
}