概述
本篇文章主要介紹如何使用e2studio對(duì)瑞薩單片機(jī)進(jìn)行GPIO輸出,并以LED顯示。
視頻教學(xué)
聽(tīng)不到聲音的請(qǐng)點(diǎn)擊跳轉(zhuǎn)進(jìn)行觀看。
[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輸入檢測(cè)(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))]
硬件準(zhǔn)備
首先需要準(zhǔn)備一個(gè)開(kāi)發(fā)板,這里我準(zhǔn)備的是芯片型號(hào)R7FA4M2AD3CFP的開(kāi)發(fā)板:
新建工程
工程模板
保存工程路徑
芯片配置
本文中使用R7FA2L1AB2DFL來(lái)進(jìn)行演示。
工程模板選擇
GPIO口配置
由下圖我們可以得知,板子上有2個(gè)LED燈,同時(shí)需要給高電平才可以點(diǎn)亮,故以P301和P302管腳為例。
按鍵口配置
由下圖我們可以得知,按鍵在P104管腳,并且有一個(gè)上拉。
按鍵口&Led配置
案例:當(dāng)按下按鍵P104,P301亮,否則P301滅。
R_IOPORT_PortRead()函數(shù)原型
fsp_err_t R_IOPORT_PortRead ( ioport_ctrl_t *const p_ctrl,
bsp_io_port_t port,
ioport_size_t * p_port_value
)
說(shuō)明:
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()函數(shù)進(jìn)行讀取IO口電平狀態(tài),該函數(shù)是把一個(gè)PORT口的16個(gè)端口一起讀取出來(lái)。
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()函數(shù)原型
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
)
說(shuō)明:
Reads the level on a pin. Implements ioport_api_t::pinRead.
故可以用R_IOPORT_PinRead()函數(shù)進(jìn)行讀取IO口電平狀態(tài),該函數(shù)只能讀取一個(gè)端口的電平。
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 沒(méi)按下
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
}
以上的代碼會(huì)在Q_QUN里分享。Q_QUN:615061293。 或者關(guān)注『記帖』,持續(xù)更新文章和學(xué)習(xí)資料!
-
單片機(jī)
+關(guān)注
關(guān)注
6030文章
44489瀏覽量
631958 -
ST
+關(guān)注
關(guān)注
32文章
1126瀏覽量
128781 -
瑞薩
+關(guān)注
關(guān)注
34文章
22282瀏覽量
85938 -
GPIO
+關(guān)注
關(guān)注
16文章
1188瀏覽量
51832
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論