Push/Pull Button to Turn ON/OFF LED via HAL
Lab Objective:
In this lab, participants will harness the Hardware Abstraction Layer (HAL) to interface with a push/pull button connected to the Infineon PSoC 6 microcontroller. Upon pressing the button, participants will program the microcontroller to toggle an LED's state between ON and OFF. This hands-on activity aims to familiarize participants with basic input/output operations, demonstrating real-time hardware interactions and the effective use of HAL for device control.
🔥 Requirements
🚩 Let start
Create Application
👉 Open Eclipse IDE ModusToolbox

Hardware Abstraction Layer (HAL) API
Open Hardware Abstraction Layer (HAL) API to see the functions that use for GPIO Pin

The HAL API
documentation provides a comprehensive set of functions to interact with the board efficiently. This API documentation offers detailed guidance on utilizing various functionalities to optimize your development process.
Coding
Coding: Open the main.c file and add the following code to the main(void) function.
int main(void)
{
cy_rslt_t result;
/* Initialize the device and board peripherals */
result = cybsp_init() ;
/*BSP init failed. Stop program execution */
if (result != CY_RSLT_SUCCESS)
{
CY_ASSERT(0);
}
__enable_irq();
/* Initialize the User LED */
cyhal_gpio_init(CYBSP_USER_LED, CYHAL_GPIO_DIR_OUTPUT, CYHAL_GPIO_DRIVE_STRONG, CYBSP_LED_STATE_ON);
/* Initialize the user button */
cyhal_gpio_init(CYBSP_USER_BTN, CYHAL_GPIO_DIR_INPUT, CYHAL_GPIO_DRIVE_PULLDOWN, CYBSP_BTN_OFF);
/* Initialize retarget-io to use the debug UART port. It sets up the standard input/output functions (such as printf)*/
cy_retarget_io_init(CYBSP_DEBUG_UART_TX, CYBSP_DEBUG_UART_RX, CY_RETARGET_IO_BAUDRATE);
printf("\x1b[2J\x1b[;H");
for (;;)
{
//Button is active low
if(!cyhal_gpio_read(CYBSP_USER_BTN)){
// Button is pressed
cyhal_gpio_write(CYBSP_USER_LED, CYBSP_LED_STATE_ON);
printf("Button Pressed --> LED ON \r\n");
cyhal_system_delay_ms(250);
}
else {
// Button is not pressed
cyhal_gpio_write(CYBSP_USER_LED, CYBSP_LED_STATE_OFF);
printf("Button not Pressed --> LED OFF \r\n");
cyhal_system_delay_ms(250);
}
}
}

Build the Application
👉 Build the Application

Launching the Application
👉 Launching the Application
Before launching the program to the board, make sure that you have already connected the board to the computer through a USB cable.
set up USB cable Launching Program
👉 Check the Result

🎉 Congratulations! You can now complete Lab103
Supported toolchains (make variable 'TOOLCHAIN')
GNU Arm® embedded compiler v10.3.1 (
GCC_ARM
) - Default value ofTOOLCHAIN
Arm® compiler v6.16 (
ARM
)IAR C/C++ compiler v9.30.1 (
IAR
)
Supported kits (make variable 'TARGET')
PSoC™ 62S2 Wi-Fi Bluetooth® pioneer kit (
CY8CKIT-062S2-43012
)PSoC™ 62S1 Wi-Fi Bluetooth® pioneer kit (
CYW9P62S1-43438EVB-01
)PSoC™ 62S1 Wi-Fi Bluetooth® pioneer kit (
CYW9P62S1-43012EVB-01
)PSoC™ 62S3 Wi-Fi Bluetooth® prototyping kit (
CY8CPROTO-062S3-4343W
)
Related resources
ModusToolbox™ Software Training
Other resources
Infineon provides a wealth of data at www.infineon.com to help you select the right device, and quickly and effectively integrate it into your design.
Document history
Document title: BILL_MTB-103 – GPIO-HAL Button with LED Template
1.0.0
Lab 103: Learn basic GPIO control with PSoC 6 using Push/Pull Button to Turn ON/OFF LED via HAL
Authors:
Assoc. Prof. Wiroon Sriborrirux
Mr. Sriengchhun Chheang
Mr. Sabol Socare
© BDH Corporation, 2022-2023
Last updated
Was this helpful?