Custom Board Support Package (BSP) Tutorial: Step 6

Step 6.1: Generate Code

1

Open the MPLAB® Harmony Configurator (MHC) tool (Tools > Embedded > MPLAB® Harmony Configurator) if it is closed.

Click on theGenerate Code button.

generate_code.png

2

Choose the Generated Code Merging Strategy and click on theGenerate Button.

merging_strategy.png

Step 6.2: Verify System Configuration

1

Opensystem_config.h from theProjects pane in the MPLAB X IDE.

navigate_system_config.png

2

Scroll to theApplication Configuration section. Here, MHC has generated functions for the pins which are configured in the BSP. These functions can be used in your application.

// *****************************************************************************// *****************************************************************************// Section: Application Configuration// *****************************************************************************// *****************************************************************************/*** Application Defined Pins ***//*** Functions for BSP_LED_3 pin ***/#defineBSP_LED_3Toggle()PLIB_PORTS_PinToggle(PORTS_ID_0,PORT_CHANNEL_E,PORTS_BIT_POS_6)#defineBSP_LED_3On()PLIB_PORTS_PinSet(PORTS_ID_0,PORT_CHANNEL_E,PORTS_BIT_POS_6)#defineBSP_LED_3Off()PLIB_PORTS_PinClear(PORTS_ID_0,PORT_CHANNEL_E,PORTS_BIT_POS_6)#defineBSP_LED_3StateGet()PLIB_PORTS_PinGetLatched(PORTS_ID_0,PORT_CHANNEL_E,PORTS_BIT_POS_6)/*** Functions for BSP_RGB_LED_RED pin ***/#defineBSP_RGB_LED_REDToggle()PLIB_PORTS_PinToggle(PORTS_ID_0,PORT_CHANNEL_B,PORTS_BIT_POS_5)#defineBSP_RGB_LED_REDOn()PLIB_PORTS_PinClear(PORTS_ID_0,PORT_CHANNEL_B,PORTS_BIT_POS_5)#defineBSP_RGB_LED_REDOff()PLIB_PORTS_PinSet(PORTS_ID_0,PORT_CHANNEL_B,PORTS_BIT_POS_5)#defineBSP_RGB_LED_REDStateGet() ~(PLIB_PORTS_PinGetLatched(PORTS_ID_0,PORT_CHANNEL_B,PORTS_BIT_POS_5))/*** Functions for BSP_RGB_LED_GREEN pin ***/#defineBSP_RGB_LED_GREENToggle()PLIB_PORTS_PinToggle(PORTS_ID_0,PORT_CHANNEL_B,PORTS_BIT_POS_1)#defineBSP_RGB_LED_GREENOn()PLIB_PORTS_PinClear(PORTS_ID_0,PORT_CHANNEL_B,PORTS_BIT_POS_1)#defineBSP_RGB_LED_GREENOff()PLIB_PORTS_PinSet(PORTS_ID_0,PORT_CHANNEL_B,PORTS_BIT_POS_1)#defineBSP_RGB_LED_GREENStateGet() ~(PLIB_PORTS_PinGetLatched(PORTS_ID_0,PORT_CHANNEL_B,PORTS_BIT_POS_1))/*** Functions for BSP_RGB_LED_BLUE pin ***/#defineBSP_RGB_LED_BLUEToggle()PLIB_PORTS_PinToggle(PORTS_ID_0,PORT_CHANNEL_B,PORTS_BIT_POS_0)#defineBSP_RGB_LED_BLUEOn()PLIB_PORTS_PinClear(PORTS_ID_0,PORT_CHANNEL_B,PORTS_BIT_POS_0)#defineBSP_RGB_LED_BLUEOff()PLIB_PORTS_PinSet(PORTS_ID_0,PORT_CHANNEL_B,PORTS_BIT_POS_0)#defineBSP_RGB_LED_BLUEStateGet() ~(PLIB_PORTS_PinGetLatched(PORTS_ID_0,PORT_CHANNEL_B,PORTS_BIT_POS_0))/*** Functions for BSP_LED_1 pin ***/#defineBSP_LED_1Toggle()PLIB_PORTS_PinToggle(PORTS_ID_0,PORT_CHANNEL_E,PORTS_BIT_POS_3)#defineBSP_LED_1On()PLIB_PORTS_PinSet(PORTS_ID_0,PORT_CHANNEL_E,PORTS_BIT_POS_3)#defineBSP_LED_1Off()PLIB_PORTS_PinClear(PORTS_ID_0,PORT_CHANNEL_E,PORTS_BIT_POS_3)#defineBSP_LED_1StateGet()PLIB_PORTS_PinGetLatched(PORTS_ID_0,PORT_CHANNEL_E,PORTS_BIT_POS_3)/*** Functions for BSP_LED_2 pin ***/#defineBSP_LED_2Toggle()PLIB_PORTS_PinToggle(PORTS_ID_0,PORT_CHANNEL_E,PORTS_BIT_POS_4)#defineBSP_LED_2On()PLIB_PORTS_PinSet(PORTS_ID_0,PORT_CHANNEL_E,PORTS_BIT_POS_4)#defineBSP_LED_2Off()PLIB_PORTS_PinClear(PORTS_ID_0,PORT_CHANNEL_E,PORTS_BIT_POS_4)#defineBSP_LED_2StateGet()PLIB_PORTS_PinGetLatched(PORTS_ID_0,PORT_CHANNEL_E,PORTS_BIT_POS_4)/*** Functions for BSP_SWITCH_1 pin ***/#defineBSP_SWITCH_1StateGet()PLIB_PORTS_PinGet(PORTS_ID_0,PORT_CHANNEL_G,PORTS_BIT_POS_12)/*** Functions for BSP_STBY_RST pin ***/#defineBSP_STBY_RSTToggle()PLIB_PORTS_PinToggle(PORTS_ID_0,PORT_CHANNEL_A,PORTS_BIT_POS_5)#defineBSP_STBY_RSTOn()PLIB_PORTS_PinSet(PORTS_ID_0,PORT_CHANNEL_A,PORTS_BIT_POS_5)#defineBSP_STBY_RSTOff()PLIB_PORTS_PinClear(PORTS_ID_0,PORT_CHANNEL_A,PORTS_BIT_POS_5)#defineBSP_STBY_RSTStateGet()PLIB_PORTS_PinGetLatched(PORTS_ID_0,PORT_CHANNEL_A,PORTS_BIT_POS_5)#defineBSP_STBY_RSTStateSet(Value)PLIB_PORTS_PinWrite(PORTS_ID_0,PORT_CHANNEL_A,PORTS_BIT_POS_5,Value)/*** Functions for BSP_WIFI_SLEEP pin ***/#defineBSP_WIFI_SLEEPToggle()PLIB_PORTS_PinToggle(PORTS_ID_0,PORT_CHANNEL_A,PORTS_BIT_POS_0)#defineBSP_WIFI_SLEEPOn()PLIB_PORTS_PinSet(PORTS_ID_0,PORT_CHANNEL_A,PORTS_BIT_POS_0)#defineBSP_WIFI_SLEEPOff()PLIB_PORTS_PinClear(PORTS_ID_0,PORT_CHANNEL_A,PORTS_BIT_POS_0)#defineBSP_WIFI_SLEEPStateGet()PLIB_PORTS_PinGetLatched(PORTS_ID_0,PORT_CHANNEL_A,PORTS_BIT_POS_0)#defineBSP_WIFI_SLEEPStateSet(Value)PLIB_PORTS_PinWrite(PORTS_ID_0,PORT_CHANNEL_A,PORTS_BIT_POS_0,Value)

Step 6.3: Build the Application

1

Compile the project to verify that the generated project compiles without any errors. Click theClean and Build button.clean_build.png

2

Check the buildlLog in theOutput window of MPLAB X IDE. There should not be any build errors.

build_log.png

Step 6.4: Add Application Code

1

Openapp.c from theProjects pane in the MPLAB X IDE.

navigate_app_c.png

2

In the function APP_Tasks(), found inapp.c, make the changes in the APP_STATE_SERVICE_TASKS case statement as shown below.

caseAPP_STATE_SERVICE_TASKS:{inti,j;for(i=0;i<10000;i++)for(j=0;j<10000;j++);BSP_LED_1Toggle();break;}

Step 6.5: Test the Application

Click on theMake and Program buttonmake_program.png to program your target.
After programming is successful you will see LED1 blinking on your target.