概述
本篇文章主要介紹如何使用e2studio對瑞薩單片機進行GPIO輸出,并以LED顯示。
視頻教學
聽不到聲音的請點擊跳轉進行觀看。
[video(video-4XyyvLft-1649445510098)(type-bilibili)(url-https://player.bilibili.com/player.html?aid=634677043)(image-https://img-blog.csdnimg.cn/img_convert/0a2553dda92a0734aabad89d3a8f508d.png)(title-瑞薩e2studio(6)----GPIO輸入檢測(image-https://img-blog.csdnimg.cn/img_convert/0a2553dda92a0734aabad89d3a8f508d.png)(title-%E7%91%9E%E8%90%A8e2studio(6)----GPIO%E8%BE%93%E5%85%A5%E6%A3%80%E6%B5%8B))]
硬件準備
首先需要準備一個開發板,這里我準備的是芯片型號R7FA4M2AD3CFP的開發板:
新建工程
工程模板
保存工程路徑
芯片配置
本文中使用R7FA2L1AB2DFL來進行演示。
工程模板選擇
GPIO口配置
由下圖我們可以得知,板子上有2個LED燈,同時需要給高電平才可以點亮,故以P301和P302管腳為例。
按鍵口配置
由下圖我們可以得知,按鍵在P104管腳,并且有一個上拉。
按鍵口&Led配置
案例:當按下按鍵P104,P301亮,否則P301滅。
R_IOPORT_PortRead()函數原型
fsp_err_t R_IOPORT_PortRead ( ioport_ctrl_t *const p_ctrl,
bsp_io_port_t port,
ioport_size_t * p_port_value
)
說明:
Reads the value on an IO port. Implements ioport_api_t::portRead.
The specified port will be read, and the levels for all the pins will be returned. Each bit in the returned value corresponds to a pin on the port. For example, bit 7 corresponds to pin 7, bit 6 to pin 6, and so on.
故可以用R_IOPORT_PortRead()函數進行讀取IO口電平狀態,該函數是把一個PORT口的16個端口一起讀取出來。
ioport_size_t p_port_value_port_104;
R_IOPORT_PortRead(&g_ioport_ctrl, BSP_IO_PORT_01, &p_port_value_port_104);
R_IOPORT_PinRead()函數原型
fsp_err_t R_IOPORT_PinRead ( ioport_ctrl_t *const p_ctrl,
bsp_io_port_pin_t pin,
bsp_io_level_t * p_pin_value
)
說明:
Reads the level on a pin. Implements ioport_api_t::pinRead.
故可以用R_IOPORT_PinRead()函數進行讀取IO口電平狀態,該函數只能讀取一個端口的電平。
bsp_io_level_t p_port_value_port_104_1;
R_IOPORT_PinRead(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_04, &p_port_value_port_104_1);
由上述可以得知,R_IOPORT_PortRead完全可以替代R_IOPORT_PinRead。
代碼
在hal_entry()中添加如下。
#include "hal_data.h"
FSP_CPP_HEADER
void R_BSP_WarmStart(bsp_warm_start_event_t event);
FSP_CPP_FOOTER
/*******************************************************************************************************************//**
* main() is generated by the RA Configuration editor and is used to generate threads if an RTOS is used. This function
* is called by main() when no RTOS is used.
**********************************************************************************************************************/
void hal_entry(void)
{
/* TODO: add your own code here */
fsp_err_t err;
/* Initialize the IOPORT module and configure the pins
* Note: The default pin configuration name in the RA Configuraton tool is g_bsp_pin_cfg */
err = R_IOPORT_Open(&g_ioport_ctrl, &g_bsp_pin_cfg);
/* Handle any errors. This function should be defined by the user. */
assert(FSP_SUCCESS == err);
ioport_size_t p_port_value_port_104;
bsp_io_level_t p_port_value_port_104_1;
while(1)
{
// R_IOPORT_PortRead(&g_ioport_ctrl, BSP_IO_PORT_01, &p_port_value_port_104);
// if(p_port_value_port_104 & 0x0010)
// R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_03_PIN_01, BSP_IO_LEVEL_LOW);
// else
// R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_03_PIN_01, BSP_IO_LEVEL_HIGH);
R_IOPORT_PinRead(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_04, &p_port_value_port_104_1);
if(p_port_value_port_104_1)//BSP_IO_LEVEL_HIGH 沒按下
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_03_PIN_01, BSP_IO_LEVEL_LOW);
else
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_03_PIN_01, BSP_IO_LEVEL_HIGH);
}
#if BSP_TZ_SECURE_BUILD
/* Enter non-secure code */
R_BSP_NonSecureEnter();
#endif
}
以上的代碼會在Q_QUN里分享。Q_QUN:615061293。 或者關注『記帖』,持續更新文章和學習資料!
-
單片機
+關注
關注
6032文章
44525瀏覽量
633249 -
ST
+關注
關注
32文章
1130瀏覽量
128840 -
瑞薩
+關注
關注
35文章
22294瀏覽量
86098 -
GPIO
+關注
關注
16文章
1196瀏覽量
51927
發布評論請先 登錄
相關推薦
評論