Difference between revisions of "Nucleo Boards"

From RobolaboWiki
Jump to: navigation, search
 
(25 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
__TOC__
 
__TOC__
  
 +
<!--
 
<h1> Configuring environment </h1>
 
<h1> Configuring environment </h1>
 
<h2> Linux </h2>
 
<h2> Linux </h2>
Line 33: Line 34:
 
</pre>
 
</pre>
  
<h3> Installing STM32CubeIDE </h3>
+
<h3> References </h3>
 +
https://nebkelectronics.wordpress.com/2016/12/19/the-stm32cube-library-part-1-toolchain/ <br>
 +
https://nebkelectronics.wordpress.com/2016/12/24/stm32cube-library-part-2-hello-world/ <br>
 +
https://nebkelectronics.wordpress.com/2017/10/08/stm32cube-library-part-3-compiling/
 +
 
 +
 
 +
-->
 +
 
 +
<h1> STM32CubeIDE </h1>
 +
<h2> Installation </h2>
 +
 
 +
<h3> Linux </h3>
 +
 
 
Last release of STM32CubeIDE can be obtained here: https://www.st.com/en/development-tools/stm32cubeide.html. <br>
 
Last release of STM32CubeIDE can be obtained here: https://www.st.com/en/development-tools/stm32cubeide.html. <br>
 
For Debian like distributions (e.g. ubuntu), download the STM32CubeIDE-DEB file. To download it, you will need to provide name and a valid email address.
 
For Debian like distributions (e.g. ubuntu), download the STM32CubeIDE-DEB file. To download it, you will need to provide name and a valid email address.
Line 55: Line 68:
 
</pre>
 
</pre>
  
 +
You must accept all license agreements.
  
<h3> References </h3>
 
https://nebkelectronics.wordpress.com/2016/12/19/the-stm32cube-library-part-1-toolchain/ <br>
 
https://nebkelectronics.wordpress.com/2016/12/24/stm32cube-library-part-2-hello-world/ <br>
 
https://nebkelectronics.wordpress.com/2017/10/08/stm32cube-library-part-3-compiling/
 
  
<h2> Windows </h2>
+
<h3> Windows </h3>
<h3> Installing STM32CubeIDE </h3>
+
 
Last release of STM32CubeIDE can be obtained here: https://www.st.com/en/development-tools/stm32cubeide.html. . <br>
+
Last release of STM32CubeIDE can be obtained here: https://www.st.com/en/development-tools/stm32cubeide.html. <br>
 
For Windows like distributions, download the STM32CubeIDE-Win file. To download it, you will need to provide name and a valid email address.
 
For Windows like distributions, download the STM32CubeIDE-Win file. To download it, you will need to provide name and a valid email address.
  
 
Unzip the file and execute the binary. Follow all steps and accept all conditions.
 
Unzip the file and execute the binary. Follow all steps and accept all conditions.
  
<h2> MAC </h2>
+
<h3> MAC </h3>
 +
Last release of STM32CubeIDE can be obtained here: https://www.st.com/en/development-tools/stm32cubeide.html. <br>
 +
For MAC like distributions, download the STM32CubeIDE-MAC file. To download it, you will need to provide name and a valid email address.
 +
 
 +
Unzip the file and execute the binary. Follow all steps and accept all conditions.
 +
 
 +
<b> IMPORTANT </b> Some problems have been reported related to lasts versions of STM32CubeIDE-MAC, where the code generator does not include macro definitions for the peripheral of nucleo-boards. Last version correctly tested is 1.0.0.
 +
 
 +
<h2> Hello World </h2>
 +
In this Section a Hellow World (led blinking) example will be programmed on a NUCLEO-F446RE board:
 +
 
 +
<ul>
 +
<li> Open STM32CubeIDE </li>
 +
<li> Select where to store the workspace. This will be the folder where different projects could be stored. </li>
 +
<li> Select <b> Start new STM32 project </b> </li>
 +
<li> A microcontroller or board should be selected. In our case, a NUCLEO-F446RE will be used.
 +
Then, select <b> board selector </b>  and search part number <b> Nucleo-F446RE </b>. Once chosen, press <b> Next </b> </li>
 +
<li> Chose a Project name (e.g. ledp) and keep the rest of parameters as they are. Press <b> Finish </b></li>
 +
<li> The STM32CubeIDE will ask if you want  Initialize all peripherals with their default Mode. Answer <b> Yes </b> </li>
 +
<li> The STM32CubeIDE will inform that yhis kind of projects is associated with the STM32CubeMx prespective and will ask if you want to open this perspective now. Answer <b> Yes </b>. <br>
 +
Download of required libraries will start. It could take long for the first time depending on your connection settings.  </li>
 +
<li> Once the project is open, on the left side on the "Project Explorer", look for <i> Src -> main.c </i>. <br>
 +
Inside the code, look for the <i> while(1) </i> sentence in the <i> main(void) </i> function, and fill it as follows:
 +
<pre>
 +
while (1)
 +
{
 +
  HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);
 +
  HAL_Delay(100);
 +
/* USER CODE END WHILE */
 +
 
 +
/* USER CODE BEGIN 3 */
 +
}
 +
/* USER CODE END 3 */
 +
 
 +
</pre> </li>
 +
 
 +
<li> In order to compile, Go to <i> Project -> Build All (Ctrl+B or Hammer) </i>. It should compile the code without errors. <br>
 +
If any error appears, previous steps should be reviewed. </li>
 +
<li> In order to start the debugger, Go to <i> Run -> Debug (F11 or bug) </i> <br>
 +
Select STM32 MCU C/C++ Application and Press <b> OK </b> </li>
 +
<li> Leave all configuration propeties as they are and Press <b> OK </b> </li>
 +
<li> The STM32CubeIDE will ask if you want to switch to the debug perspective say <b> Switch </b> </li>
 +
<li> In order to execute the code, Go to <i> Run -> Resume (F8 or Green Arrow) </i>. <br>
 +
The led should be blinking at 100 ms. </li>
 +
 
 +
</ul>
 +
 
 +
<h2> Problems with STM32CUBEIDE </h2>
 +
<h3> sprintf %f </h3>
 +
 
 +
All the information on this page is obtained from: http://www.nadler.com/embedded/newlibAndFreeRTOS.html
 +
There is some errors on the implementation of malloc on STM32CubeMX, so if using some newlib fuctions (e.g. sprintf %f), the following steps must be implemented:
 +
 
 +
<ul>
 +
<li> Remove heapX.c form Middlewares->Thirs_Party->FreeRTOS->Source->CMSIS_RTOS_V2->portable->MemMang->heap_X.c </li>
 +
<li> Add this file to the Src directory: [[media:heap_useNewlib.txt | heap_useNewlib]] and rename it as heap_useNewlib.c</li>
 +
<li> Comment _sbrk function on sysmem.c file; it is already implemented on heap_useNewlib.c </li>
 +
<li> Include in FreeRTOSConfig.h the folowing directive: </li>
 +
<pre>
 +
#define configUSE_NEWLIB_REENTRANT 1
 +
</pre>
 +
<li> Go to Project -> Porperties -> MCU Settings -> Tool Settings and select float for printf and scanf from newlib-nano </li>
 +
</ul>
 +
 
 +
<h3> IDE Flickering </h3>
 +
 
 +
First check the value of GTK_IM_MODULE in your environment by executing
 +
 
 +
<pre>
 +
echo $GTK_IM_MODULE
 +
</pre>
 +
 
 +
If the output is "xim", Eclipse expects it to be “ibus”.
 +
So enter the following command in a terminal session to set it to the value.
 +
 
 +
<pre>
 +
export GTK_IM_MODULE="ibus"
 +
</pre>
 +
 
 +
Now if you launch Eclipse from the same terminal session, you should not experience any flickering issue.
 +
If you launch eclipse from a desktop menu entry, then edit the .desktop file (e.g.  /usr/share/applications/st-stm32cubeide-1.6.1.desktop) and put the following string in the beginning of the Exec command:
 +
 
 +
<pre>
 +
env GTK_IM_MODULE=ibus
 +
</pre>
 +
 
 +
E.g. Exec=env GTK_IM_MODULE=ibus /opt/st/stm32cubeide_1.6.1/stm32cubeide %F

Latest revision as of 11:41, 8 February 2023


STM32CubeIDE

Installation

Linux

Last release of STM32CubeIDE can be obtained here: https://www.st.com/en/development-tools/stm32cubeide.html.
For Debian like distributions (e.g. ubuntu), download the STM32CubeIDE-DEB file. To download it, you will need to provide name and a valid email address.

Unzip the file (e.g. <FILE> = en.st-stm32cubeide_1.0.1_3139_20190612_1256_amd64.deb_bundle)

unzip <FILE>.sh.zip

It will generate a .sh file. Give it permits for execution.

chmod 777 <FILE>.sh

Finally, execute the installation

sudo ./<FILE>.sh

You must accept all license agreements.


Windows

Last release of STM32CubeIDE can be obtained here: https://www.st.com/en/development-tools/stm32cubeide.html.
For Windows like distributions, download the STM32CubeIDE-Win file. To download it, you will need to provide name and a valid email address.

Unzip the file and execute the binary. Follow all steps and accept all conditions.

MAC

Last release of STM32CubeIDE can be obtained here: https://www.st.com/en/development-tools/stm32cubeide.html.
For MAC like distributions, download the STM32CubeIDE-MAC file. To download it, you will need to provide name and a valid email address.

Unzip the file and execute the binary. Follow all steps and accept all conditions.

IMPORTANT Some problems have been reported related to lasts versions of STM32CubeIDE-MAC, where the code generator does not include macro definitions for the peripheral of nucleo-boards. Last version correctly tested is 1.0.0.

Hello World

In this Section a Hellow World (led blinking) example will be programmed on a NUCLEO-F446RE board:

  • Open STM32CubeIDE
  • Select where to store the workspace. This will be the folder where different projects could be stored.
  • Select Start new STM32 project
  • A microcontroller or board should be selected. In our case, a NUCLEO-F446RE will be used. Then, select board selector and search part number Nucleo-F446RE . Once chosen, press Next
  • Chose a Project name (e.g. ledp) and keep the rest of parameters as they are. Press Finish
  • The STM32CubeIDE will ask if you want Initialize all peripherals with their default Mode. Answer Yes
  • The STM32CubeIDE will inform that yhis kind of projects is associated with the STM32CubeMx prespective and will ask if you want to open this perspective now. Answer Yes .
    Download of required libraries will start. It could take long for the first time depending on your connection settings.
  • Once the project is open, on the left side on the "Project Explorer", look for Src -> main.c .
    Inside the code, look for the while(1) sentence in the main(void) function, and fill it as follows:
    while (1)
    {
      HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);
      HAL_Delay(100);
     /* USER CODE END WHILE */
    
     /* USER CODE BEGIN 3 */
    }
    /* USER CODE END 3 */
    
    
  • In order to compile, Go to Project -> Build All (Ctrl+B or Hammer) . It should compile the code without errors.
    If any error appears, previous steps should be reviewed.
  • In order to start the debugger, Go to Run -> Debug (F11 or bug)
    Select STM32 MCU C/C++ Application and Press OK
  • Leave all configuration propeties as they are and Press OK
  • The STM32CubeIDE will ask if you want to switch to the debug perspective say Switch
  • In order to execute the code, Go to Run -> Resume (F8 or Green Arrow) .
    The led should be blinking at 100 ms.

Problems with STM32CUBEIDE

sprintf %f

All the information on this page is obtained from: http://www.nadler.com/embedded/newlibAndFreeRTOS.html There is some errors on the implementation of malloc on STM32CubeMX, so if using some newlib fuctions (e.g. sprintf %f), the following steps must be implemented:

  • Remove heapX.c form Middlewares->Thirs_Party->FreeRTOS->Source->CMSIS_RTOS_V2->portable->MemMang->heap_X.c
  • Add this file to the Src directory: heap_useNewlib and rename it as heap_useNewlib.c
  • Comment _sbrk function on sysmem.c file; it is already implemented on heap_useNewlib.c
  • Include in FreeRTOSConfig.h the folowing directive:
  • #define configUSE_NEWLIB_REENTRANT 1
    
  • Go to Project -> Porperties -> MCU Settings -> Tool Settings and select float for printf and scanf from newlib-nano

IDE Flickering

First check the value of GTK_IM_MODULE in your environment by executing

echo $GTK_IM_MODULE

If the output is "xim", Eclipse expects it to be “ibus”. So enter the following command in a terminal session to set it to the value.

export GTK_IM_MODULE="ibus"

Now if you launch Eclipse from the same terminal session, you should not experience any flickering issue. If you launch eclipse from a desktop menu entry, then edit the .desktop file (e.g. /usr/share/applications/st-stm32cubeide-1.6.1.desktop) and put the following string in the beginning of the Exec command:

env GTK_IM_MODULE=ibus

E.g. Exec=env GTK_IM_MODULE=ibus /opt/st/stm32cubeide_1.6.1/stm32cubeide %F