Join discussions in the Product Forums. Ask questions, learn from your peers, and share insights on ST solutions to accelerate your design journey.
Most recent activity
Hi,I'm building a BLE application using custom template in STM32CubeMX. I have two services. The first one has only one characteristic with the properties "Read" and "Write without response". The second service has two characteristics, both with "Read" and "Notify" properties.The code generated in "custom_app.c" have the function:void Custom_<Srv2Char1>_Update_Char(void){...} void Custom_<Srv2Char1>_Send_Notification(void){...} void Custom_<Srv2Char2>_Update_Char(void){...} void Custom_<Srv2Char2>_Send_Notification(void){...}However, no function is generated for the characteristic of the first service. I expected to have a function like this:void Custom_<Srv1Char1>_Update_Char(void){...} I performed some tests:Used shorter names for the characteristics.Created two new characteristics, one in service 1 and the other in service 2, both with only the "Read" property enabled.In both cases, no "Update_Char" function was generated.I don’t know if this
Hi, I am using L476 controller with MCSDK 6.3.0 to control the BLDC motor, able to control the motor with Motor pilot application. However, i need to control the motor using serial communication IDEs like Realterm or Putty.I referred the document "Motor Control Protocol Suite" but didnt succeed in understanding and implementing the same. Please share some examples of the commands.I want to use command service only not the ASPEP. Looking forward for the support as soon as possible.
Hello, It seems that the pin for TIM1_CH3N should be PE12 as per schematic but CubeMX shows it as PB0. Please correct it and let me know how to fix it at my end for time being.
Could not determine GDB version using command: /opt/st/stm32cubeide_1.2.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.linux64_1.0.0.201904181610/tools/bin/arm-none-eabi-gdb --version/opt/st/stm32cubeide_1.2.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.linux64_1.0.0.201904181610/tools/bin/arm-none-eabi-gdb: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
Hello, I have a question about STM32H7S3A8I6 MCU.https://www.st.com/resource/en/application_note/an5935-getting-started-with-stm32h7rx7sx-mcus-hardware-development-stmicroelectronics.pdfLooking at Table 2 of the description in the PDF above, for graphics, STM32H7S3xx specifies GPU2D as N and GFXMMU as Y.https://www.st.com/resource/en/datasheet/stm32h7s3a8.pdfLooking at Table 21 in the following PDF, there are UFBGA 169 SMPS GFx and UFBGA 169SMPS GP. Can I look at the pin number with GFx? and Is the library in the photo for the STM32H7S3A8I6 MCU?
I'm trying to migrate a project from HAL back to SPL as it's less of a haul than porting our code I have to integrate to HAL. The HAL program compiled but at some point during my porting process I'm now getting link errors ONLY for _fstat and _isatty, not any of the other functions defined in the assert.cThe assert.c is the same between a working SPL based project we have and the new one I'm creating, so nothing has changed there. If I implement _fstat in my main.c it still complains that it can't link.Linker Error:c:/program files (x86)/gnu arm embedded toolchain/10 2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld.exe: c:/program files (x86)/gnu arm embedded toolchain/10 2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libg_nano.a(lib_a-fstatr.o): in function `_fstat_r':fstatr.c:(.text._fstat_r+0xe): undefined reference to `_fstat'I've also tried changing and linking against the soft-fp version of the
How can I attach to a running STM32 target while using its specific JTAG address?I want to debug on an already-running STM32 without altering its memory state (no reset, no download of new firmware). I currently do this on STM32CubeIDE by setting my debug configuration to "No reset" in the "Debugger" tab and setting "Download" to "false" in the "Startup" tab.The target STM32 is in a JTAG chain with other devices.On the VSCode extension: If I select "attach" in "request" the "serverJtagCfg" option becomes invalid. Not entirely sure where to look for this. Any help is appreciated.Thanks
I have tested the LoRaWAN_End_Node example on a B-WL5M-SUBG1 board and I measure power consumption of 1.7uA when the processor is in STOP mode between transmissions. This is exactly what I expected to see.I designed a very simple custom board based on the B-WL5M-SUBG1 design, downloaded the same .elf file to it, and it communicates with my LoRaWAN gateway as I expect. However I measure ~300uA current draw while it is in STOP mode. I have compared my custom board schematic to that of the B-WL5M-SUBG1 several times looking for a difference that would account for that much extra power consumption and I just have not found it.I am using STM32CubeMX v6.16.0, STM32Cube FW_WL V1.4.0, and the part is STM32WL5MOCH6TR. I have attached the schematic of my custom board.I am hopeful that someone can see what I have missed.
Starting a debug session in VS Code using the RTOS proxy plugin for FreeRTOS and a J-Link Adapter consistently fails.Debugging the exact same application without RTOS awareness (serverRtos removed in launch.json) works. So debugging using JLink and the board works. This indicates that there is an issue related to the RtosProxy or RTOS awareness in general.Is there any further configuration needed that than the launch.json below?Environment:STM32CubeIDE for Visual Studio Code v3.7.0Packages in Bundles Manager are all on the newest versionlaunch.json configuration{ "version": "0.2.0", "configurations": [ { "type": "jlinkgdbtarget", "request": "launch", "name": "STM32Cube: STM32 Launch JLink GDB Server", "origin": "snippet", "cwd": "${workspaceFolder}", "preBuild": "${command:st-stm32-ide-debug-launch.build}", "runEntry": "main", "imagesAndSymbols": [ { "imageFileName": "${command:st-stm32-ide-debug-launch.get-projects-binary-from-context1}" } ], "serverRtos": { "enabled"
Hello,I am using an STM32H743 microcontroller. UART8 is configured at a baud rate of 460800 with DMA enabled. The UART output is logged by a USB logger which creates a FAT32 text file.The transmitted data contains mixed data types such as integers, characters, strings, floats, and doubles. To combine the data, I format it into a string using snprintf.I am facing a strange issue:When I format the string using a comma after the first integer, and the second integer variable is zero, the value recorded in the USB log becomes 8 instead of 0.When I replace the comma with a semicolon, the value is recorded correctly as 0.Additional observations:This issue only occurs when the data is generated by the STM32.If the same formatted data is sent from a computer or another hardware source, the issue does not occur.If I log the STM32 UART output directly on a computer terminal, the data is correct.The problem only appears when using the USB logger with STM32 UART DMA output.Could you please advise
I have a bunch of following warnings:c:/programs/ARMtools/EmbeddedBSPs/arm-eabi/com.sysprogs.arm.stm32/STM32F1xxxx/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_gpio.h: In function 'void LL_GPIO_SetPinMode(GPIO_TypeDef*, uint32_t, uint32_t)': c:/programs/ARMtools/EmbeddedBSPs/arm-eabi/com.sysprogs.arm.stm32/STM32F1xxxx/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_gpio.h:343:22: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister] 343 | register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&GPIOx->CRL) + (Pin >> 24))); |in several LL headers.Can this please be fixed in some suitable way? One way to do that might be to replace the 'register' specifier by a macro, which would be defined based on the __cplusplus standard preprocessor macro and its value. A simple version would be to add#if __cplusplus >= 201703L #define register #endifto each header where this occurs, but I am not a C++/build-environment specialist so don't know whether thi
Hello everyone,We are experiencing an issue with a product that integrates an STM32H562ZG microcontroller.Our development environment consists of IAR Embedded Workbench 9.70.1, with the project configured using CMake.Currently, we are observing unexpected behavior during debugging. Specifically, after downloading the firmware using IAR and ST-Link V2 and starting the debug session, the application immediately jumps to NMI_Handler().Unfortunately, even after modifying the code, reflashing the microcontroller, and restarting the debug session, the firmware still ends up in NMI_Handler().Performing a full chip erase and reprogramming with IAR resolves the issue, it becomes inefficient and problematic for debugging because any time the code is modified a full chip erase is needed to make all work.We have seen something related to ECC flash check but we don't know if can be a hint.In our case ICACHE is not activeted (disable by default from CubeMX project). If you needs some other det
How can I boot my own application on sr5e1?I read about DCF and BAF but it is not really clear what I need to do in order to let my code run out of power on.Any hint/guidance? Cheers
Hello everyone,I am using SPI2 of STM32F103RCT6 to communicate with an AT45DB641E DataFlash device. I am trying to understand why the effective SPI data rate is significantly lower than what I expect based on the configured SPI clock.Hardware setupMCU: STM32F103RCT6 (Cortex-M3)SPI instance: SPI2SPI clock: 9 MHzData frame: 8 bitsSPI mode: 2-line unidirectional (full-duplex hardware)NSS: Software-controlled GPIOCore clock: 72 MHzCustom PCB (STM32 + AT45 connected directly)Schematics attachedTest descriptionI am reading the status register of the AT45DB641E.Once the read command is sent and SS is held low, the flash continuously outputs two status bytes as long as clock pulses are provided.I measured the execution time of HAL_SPI_TransmitReceive() by placing timestamps before and after the function call, using the DWT cycle counter (DWT->CYCCNT) available on the Cortex-M3.Here is the code used for testing, the tx and rx buffer are globally defined of size 5000 and datatype uint8_t: /*
Hello I am currently doing a project where I am using a STM32Nucleo-C092RC to generate a PWM signal the only problem is that my peak to peak voltege is only 160 mV. Is there any way to fix it so it is or is my board broken?
I would like to use the single USB internal PHY on the STM32H735 to connect to a 2 port hub chip (like the Microchip USB2422) so that I can connect to both a USB stick for firmware upgrades as well as a cellular module. I started connecting everything up and then I came across a multiple sources saying that you can't connect USB Hubs to the internal PHY and you have to use the ULPI interface to connect to an external PHY, but none of the sources really explain why other than saying the internal PHY isn't capable of High Speed operation, and the USB software from ST doesn't allow for hubs. I don't understand what this has to do with interfacing with a hub IC when I'm perfectly fine with operating at Full Speed. So I have a few quesitons:1) Can I use a USB Hub (like the USB2422) as long as I'm OK with it operating at Full Speed only? Is it technically possible to connect these devices and get them to work?2) Will the USB Host middleware provided through STM32CubeM
Dear Team,How to configure the BOOT0 pin of this module.In the reference design it is let floating with an option to pull up.In the application note (How to develop RF hardware using STM32WBA MCUs - Application note) it is pulled down.May I know in all these three configurations(Pull up, Pull down, floating) what will be happening. From where it is booting.You have any document which describes how to configure this BOOT0 pin.RegardsHariom
Hello,recently I started a project based on a STM32L433RCT3 and the STM32CubeIDE build tooling defaults to C++14. I myself am cautious about bleeding-edge standards but C++14 seems a bit conservative in 2026. I tried both the GCC 13.3 and GCC 14.3 toolchains and C++14 was the default in both, while C++17 is the default of GCC since GCC 11 (C++ Standards Support in GCC).With another project and toolchain I once got nasty to track down bugs when bumping the C++ standard beyond the manufacturer's default so I'm wary to do this. What are the community's experiences using C++ standards beyond C++14?What is the general policy of ST regarding bumps of the default C++ standard version?Best,MarkusPS: I tried the CMake-based toolchain too, which in my case did not set a C++ standard explicitly, so going with my local compiler's (GCC15 C++17) default. As much as I prefer CMake - and appretiate the ongoing move to it - in general I would prefer to stay with the tried-and-tested STM32CubeIDE.
The Application circuits in the Datasheet under section 5 do not list any values for the components, are they available somewhere? All of the reference designs linked in the wiki and on the website are for the STM32WL33C. Do the values directly transfer over? We are also explicitly interested in the configuration without the SMPS as there are no application examples for the STM32WL33C without the SMPS and it is not clear which components can be removed when not using it.
Hello ST Community and ST Engineers, I am currently working with a NUCLEO-WL55JC1 (STM32WL55 dual-core: Cortex-M4 + Cortex-M0+) and I am facing an issue when using dual-core projects generated with STM32CubeMX. I would really appreciate any guidance or confirmation from ST engineers or experienced users. Hardware / Software: Board: NUCLEO-WL55JC1 (STM32WL55 CM4 + CM0+) Tools: STM32CubeIDE, STM32CubeMX, STM32CubeProgrammer Also tested using VSCode with STM32 extensions Firmware packages tested: STM32Cube_FW_WL_V1.3.0 STM32Cube_FW_WL_V1.4.0 Examples tested: LoRaWAN_End_Node LoRaWAN_End_Node_FreeRTOS LoRaWAN_End_Node_DualCore LoRaWAN_End_Node_DualCoreFreeRTOS References followed: YouTube (LoRaWAN workflow overview): https://www.youtube.com/watch?v=8KNfrWoa1fw Dual-core from scratch and CM4/CM0+ LED blink walkthroughs: Playlist: https://www.youtube.com/playlist?list=PLnMKNibPkDnFPqEmJAwEjsSS8MOQZHRNF Specific video: https://www.youtube.com/watch?v
I just bought a NUCLEO-H7S3L8 board and discovered that STLINK-V3EC on it refuses to connect using some USB-A to USB-C cables. It works fine with other similar cables from different vendors. The problem appears to be with cables which provide the default 80uA current on both CC lines. These cables do not work. The ones which have only one CC line connected work fine. The cables which do not work, never gave me any problems with any other USB-C device (e.g. with STLINK-V3MINIE). I am not sure if having both CC lines powered is against the USB-C spec - it seem a bit of a grey area to me. But there seems to be quite a few cables doing it out there. For instance, I am quite sure that the CC lines were the reason for this user's problem with the same board: https://community.st.com/t5/stm32-mcus-boards-and-hardware/nucleo-h7s3l8-is-not-detected/m-p/760442?search-action-id=88460536396&search-result-uid=760442 Could ST consider removing the error condition in this case from the STLINK-V3E
Hi,I am doing a feasibility study for SBSFU on an STM32H750, specifically firmware encryption and authenticity check. I am using the XCUBE expansion pack v2.8.0.- Using prepareimage.py & modified keys.py along with default prebuild and postbuild.sh- Using a single download + single active slot in external memory- All protections are disabledModifications to default example:- Adjusted default linker script to increase active + download slot size- Modified keys.py to append 0xFF bytes to binary before encryption to meet 16 byte multiple requirementMethod altered: AES_CBC:encrypt- generating new AES and ECDSA keys as mentioned in readme.txtAs mentioned in AN5056, section 4.2, I modified SECBOOT_CRYPTO_SCHEME to SECBOOT_ECCDSA_WITH_AES128_CBC_SHA256. I can see that prebuild.sh detects this change and adjusts accordingly. Observations:I have tested the firmware installation using ECDSA signature without encryption to get the following errors.1. Error on first boot after f
Hi everyone! I’ve been diving into the AXI4 protocol for a small design exercise, and while I’m making progress, I’m still trying to build a solid intuition for the VALID/READY handshake, especially on the less 'visible' channels like the Write Response (B channel)...I’ve spent quite a bit of time with the official specification, but there’s a difference between reading the rules and actually 'seeing' how the handshakes play out in a high-performance design. for those of you who work with ARM buses or SoC design professionally, what was the 'aha!' moment for you?did you find it most heloful to strictly study the timing diagrams, or was it more about building small simulation testbenches and observing how the bus stalls when READY is de-asserted??? I’m trying to avoid getting overwhelmed by the sheer volume of the spec and instead focus on a practical, design-first understanding. Any advice on learning strategies or common pitfalls to watch out for would be incredibly helpful. Than
Hello all, I have been running into a lot of issues trying to get the firmware for the BLE onto my board using the STM32WB55RG. Now I did follow this video and originally got it working, but then I accidently hit delete firmware and was unable to get it on again. Right now any time I try to upgrade my firmware I always get the WARNING: FUS_STATE_IMG_NOT_FOUND.I have tried doing a mass erase and then re-upgrading as I saw in another post but that also will not work.Here is the list of steps I take right now:1. Plug in board2. Connect via STM32CubeProgrammer3. Start FUS4. Read FUS Info5. Attempt to upgrade stm32wb5x_BLE_Stack_full_fw.bin at 0x080C70006. Receive error messageThis is a custom board, but I did at one point have the BLE working on it. Here is my option bytes configuration:
Hi, I got stuck in the HardFault_Handler every time after editing some code. I'm using FreeRTOS in c++ combination with classes. First I thought this would be a memory issue. After increasing configTOTAL_HEAP_SIZE and configMINIMAL_STACK_SIZE, I was still stuck in the HardFault_Handler. Even by jumping into a function, before I returned from this function the HardFault_Handler was tripped again. I really tried a number of things... I made a function (bool Controller::DefaultConfig()) to set the default configuration when nothing was available in the flash and I forgot the return true or false. When adding the return with a result, the problem with HardFault was solved. Is this a logical behavior? (A compiler error would make more sense) Greetings, ErX
ST Community highlights – April to June 2026
Already have an account? Login
No account yet? Create an account
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.