Skip to main content
rtl
Associate II
November 29, 2022
Solved

Using the STM32CubeProgrammer API

  • November 29, 2022
  • 1 reply
  • 1731 views

Hello!

I am trying to use the STM32CubeProgrammer API to create my own application with a simple GUI in C++. Currently my solution is compiling the STM32CubePrgAPI as static library and then include it in a MFC project.

Basically user clicks OK from the GUI and then Example2 is executed. The getSTLinkList function executes with no issues, but connectSTLink fucktion gives me this error.

int connectStlinkFlag = connectStLink(debugParameters);
 
0xC0000005: Access violation executing location 0x0000000000000000.

If I compile STM32CubePrgAPI as .exe, it works with no problems.

What am I not understanding? Is compiling it as a static library a valid choice? What other options do I have?

I can't find any examples of applications created using this API. Has anyone done something like this?

This topic has been closed for replies.
Best answer by rtl

Initially I excluded the progress bar and message display functions callbacks, because I thought they weren't needed for my use case as I am not using the CLI. Apparently it is needed and adding it fixed my issue. Can anyone explain, why?

/**
 * \brief This routine allows to choose your custom display.
 * \param c : Fill the struct to customize the display tool.
 * \note This function must be called first of all to ensure the display management.
 */
void setDisplayCallbacks(displayCallBacks c);

 displayCallBacks vsLogMsg;
 
 /* Set the progress bar and message display functions callbacks */
 vsLogMsg.logMessage = DisplayMessage;
 vsLogMsg.initProgressBar = InitPBar;
 vsLogMsg.loadBar = lBar;
 setDisplayCallbacks(vsLogMsg);

1 reply

rtl
rtlAuthorBest answer
Associate II
November 29, 2022

Initially I excluded the progress bar and message display functions callbacks, because I thought they weren't needed for my use case as I am not using the CLI. Apparently it is needed and adding it fixed my issue. Can anyone explain, why?

/**
 * \brief This routine allows to choose your custom display.
 * \param c : Fill the struct to customize the display tool.
 * \note This function must be called first of all to ensure the display management.
 */
void setDisplayCallbacks(displayCallBacks c);

 displayCallBacks vsLogMsg;
 
 /* Set the progress bar and message display functions callbacks */
 vsLogMsg.logMessage = DisplayMessage;
 vsLogMsg.initProgressBar = InitPBar;
 vsLogMsg.loadBar = lBar;
 setDisplayCallbacks(vsLogMsg);