Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Hi All,I am trying to impliment a frequency shift keying (FSK) routine to represent a each bit of a byte as FSK.My routine is kind of working (see the IRQ for TIM3 below). My FSK is :Bit 0 & Start : 3600Hz Bit 1 & Stop : 1200HzThis ensures that timing is alway 833.3us, and transisitons only occur at the end of a full cycle (avoiding glitches).In this example pictured I am sending a 'U' to be encoded (this has a binary value of '0b01010101') so its easy to see the FSK changes.What I've noticed is that when I change from bit from 0 (3600Hz) to 1 (1200Hz) the output polarity keeps the previous polarity level. This makes it look like last pulse of the 3600Hz waveform is streatched.My question is, How can I change the polarity of the PWM ouput on each sucessive bit?Here is my IRQ code: extern volatile uint8_t transmitting; extern volatile uint8_t transmit_data; extern volatile uint8_t bit_count; extern volatile uint8_t bit_index; extern volatile uint8_t current_bit; extern
Hello, I'm working on a project in the TouchGFX Designer environment and when I try to execute the "Run Simulator" command, this error occurs. Run Simulator Generate Done Generate Assets make -f simulator/gcc/Makefile assets -j8 Reading ./application.config Reading ./target.config Done Post Generate touchgfx update_project --project-file=simulator/msvs/Application.vcxproj Done Post Generate Target touchgfx update_project .cproject file: ../../STM32CubeIDE/CM7/.cproject Writing STM32CubeIDE project file: ../../STM32CubeIDE/CM7/.project Writing STM32CubeIDE project file: ../../STM32CubeIDE/CM7/.cproject Done Compile make -f simulator/gcc/Makefile -j8 Reading ./application.config Reading ./target.config Linking build/bin/simulator.exe C:/TouchGFX/4.25.0/env/MinGW/bin/../lib/gcc/i686-w64-mingw32/7.3.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -lSDL2 C:/TouchGFX/4.25.0/env/MinGW/bin/../lib/gcc/i686-w64-mingw32/7.3.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -lSDL2_imag
I want to display "Hello, world" on the onboard screen of my STM32F429I-discovery board. Searching around the internet showed that the BSP has a library called "stm32f429i_discovery_lcd.h" that suits this purpose. Simply including the library with#include "stm32f429i_discovery_lcd.h"yielded build errors, because the compiler could not find the library file. In addition, even after adding the file location to my project's include path, I got warnings stating that "static SDRAM_HandleTypeDef SdramHandle" is not defined, which suggested to me that some associated source files might not be included in the build.After a long time I finally just decided to include the BSP/Components directory and the BSP/STM32F429I-Discovery directory to my project, add the include paths, and add the two folders to the source location.With this code, I had hoped that the screen would turn red, but unfortunately, it does literally nothing:#include "main.h" /* Private includes ---------------------------
Hi!I have a board with a STM32H730 chip, my RAM is configured as not cacheable and instruction access disabled,as performance decreases a lot otherwise, but now i'm getting a hardfault after drawCachedAreas(); is executed,As i can't see what that function is doing, i thought that mayb someone could help me. If someone is invested enough here is my MPU configvoid MPU_Config(void) { MPU_Region_InitTypeDef MPU_InitStruct; /* 1) Deshabilita el MPU para reconfigurar */ HAL_MPU_Disable(); /* ———————————————————————————————————————————————————— * Región 0: fondo 4 GB NO_ACCESS (cubre todo excepto QSPI, SDRAM y SRAM) *———————————————————————————————————————————————————*/ MPU_InitStruct = (MPU_Region_InitTypeDef){0}; MPU_InitStruct.Enable = MPU_REGION_ENABLE; MPU_InitStruct.Number = MPU_REGION_NUMBER0; MPU_InitStruct.BaseAddress = 0x00000000U; MPU_InitStruct.Size = MPU_REGION_SIZE_4GB; MPU_InitStruct.SubRegionDisable = 0x87; // deja libres subregs 2 y 3
Hi The FrontendHeap is very small and i have "unused" external flash.So my intension was to increase the .bss secction in linkerscript with a memory block in the linker file,which causes a hard fault.I'm new in ARM linker file and have no clue about linking more than one memory block to one secction, especally the bss secction.I'm not sure, which way i have to take in the linker file, so i try the following (short form) which based on aarticle. im not sure about the pattern bss# and the start and end flags.Pleas see the extract from linker file, which caused the error by linking in STM32 IDE.I'm thankful for every hint, how to make the bss secction larger by a additional memory block.
I have multiple issues to report with the MC Workbench (MCWB). I am using Version 6.3.2 and trying to get a dual motor BLDC setup working on custom hardware.In the .zip-file there is a minimal project required for viewing the issues and additionally what is required to run on the custom hardware.It is not possible to restrict current sensing (3-shunt setup) to one ADC, as intended by the MCWB.When trying to restrict either Motor1/2 to a single ADC with the end goal of having one ADC used for each motor, i get the following error when trying to generate the project:"ERROR [LineInfo_to_exitCode.manage_IocGenerationError] Unable to generate ioc file due to: When calling function "add_extra_regular_cnv_if_needed", required parameter "cnv" (parameter #2) was specified, but had null/missing value...."This is a bug in my opinion, because with the pinout, it should be possible to use either ADC1/2/3 for Motor2 and ADC1/2 for Motor1. The amount of conversions should also be smaller than the max
hi ,i enable tamper4 and RTC in stm32mx and only enable bit RTC_CR_TAMPTS, TSE=0no other code add into rtc.c or tamper.c Using debug mode to clear TSF and CTAMP4F.when push button will happen hard fault. Only two code in main while loop "led" and "hal_delay", if i remove HAL_Delay , will not happen . someone can help me?HAL_Delay(1000);HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_11);
Hi,I had 8-Gigabyte External EMMC Memory to store the images in my custom Board, as my internal flash for the STM32H745XiH6 microcontroller is only 2MB. How to store the images in the external flash (EMMC)? Should I need to change the linker scripts and .map files in the project? If it is, can you please explain it clearly?
Hello,I am utilizing the following components:Nucleo-H723ZH (STM32H723)eMMC: 4GBI have already created the following files:user_discio.cuser_discio.heMMC_Driver.ceMMC_Driver.hAfter connecting an SD card reader to the CN8 connector on the Nucleo STM32H723 board and using an eMMC card reader, the FATFs system is reporting that the eMMC is not ready. I am encountering problems when performing operations like f_mkfs or f_mount, receiving a "Not ready" error. Despite numerous checks of the configurations and parameters, I have not been able to resolve this issue.
Using NUCLEO H723ZGI made a simple SPI module for communication as master(this is the only module i am using)I used the MOOC training on using SPI as a guide for programmingOn observing clockI found it to be discontinuous during transmit cycle - this puts the receiving slave SPI into error0x84 codeSee Scope shots of clockI was wondering if any one else has seen this beforeThanx in advance for any suggestions/repliesJay
All,I have somehow concocted a CubeMX configuration (attached) that causes the CPU to latch up when the LTDC clock is enabled during HAL initialization. Here's what I'm seeing/doing:Debugger loads flash, breakpoints at HAL_Init() in main().Set a breakpoint on the first line of HAL_LTDC_MspInit() inside Core/Src/stm32u5xxx_hal_msp.c.Run program. main() calls MX_LTDC_Init(), which calls HAL_LTDC_Init(), which calls HAL_LTDC_MspInit(), stopping at the breakpoint.Open the Variables view, expand hltdc, then expand hltdc->Instance. Observe that the LTDC peripheral registers are viewable in the debugger.Step up to and then over the call to the macro __HAL_RCC_LTDC_CLK_ENABLE(). Observe that the LTDC peripheral register values go blank, and the debugger has lost communication with the MCU.Here's the "before":Before the crashAnd here's the "after":After the crashMy question is... why is this happening? It does this on both the U5G9 DK2 b
I am currently trying to use the LCD screen of the STM32N6570DK development board. But when I integrate the relevant information from the official firmware package into my project and try to use CUBEIDE for DEBUG, an error message will appear like this:But this problem doesn't always arise, and for such a main function:When I ran the "UTIL_LCD_SetFuncDriver() "function, the LCD backlight screen seemed to have some reaction, but it couldn't perform the setbackcolorr or clear functions properly. My screen remained dark.Is it because my configuration is incompatible with the relevant BSP firmware library, as the corresponding CUBEMX configuration is not provided in the firmware package? These are all my files, I have tried my best to make everything in order but in vain:
I have tried the BSP example from the STM32CubeN6 package, and the LCD works correctly. However, I am trying to create the smallest possible code to make the screen work, and I started a project from scratch using STM32CubeMX and STM32CubeIDE.What I did was to enable the minimum amount of peripherals to make LCD work in CubeMX, and the code generator added the necessary HAL files, etc..Then I added the discovery_lcd BSP for this board among other needed files like stm32_lcd and the fonts...The code compiles, and the LED1 and LED2 blink as part of the while loop I coded.However, the LCD is blank (but I can see that is active because the backlight is on). I am expecting to see a white background with some text.You can find my code here: https://github.com/jpcano/STM32N6-digits/tree/lcd Do you have any ideas?
Can't download CAD library of STM32F769BI from the ultra librarian for Fusion360.
Hi,I'm trying to get started with the STM32 NUCLEO-H7S3L8 board to create a USB HS device. I am new to the boot/application split development (also to trustzone) and don't know where to find the right resources to get started. I have tried using the STM32CubeIDE examples importer but keep receiving "failed to copy error" which I don't know how to debug. I have also tried loading the project from the git repo, I can compile and run the boot project but know how to properly setup the application project to run as well.I would really appreciate some pointers on where to find the information to get the CDC_Standalone example running and how to develop with the boot and application.Apologies I can't be more specific, I seem a little out of my depth and don't know where to start!
Hello Team,We have Purchased the NUCLEO-F767ZI Eval board for our board bring up activity.We have configured the SPI with 15Mhz, i can see lot of ringing from the EVAL board which is more than 4 to 4.5V at Clock and MOSI lines can you look into it, any solution for this?We have observed that at the output of the EVAL board no other devices connected to the Eval board.
Hi, I´m beginner in SMT32 MCU design, I´m doing a design for the above MCU and in the document "AN4555" that is for hardware develoment of these MCU series I founf that So for my package (64 pins) the VREF and the VDDA power signals are bounded inside the MCU, and I only have the VDDA pin available on my package, then the AN4555 states that if the these power signals (VREF and VDDA) are internally bounded I need a 1uF capacitor on this pin, so in this case I need to place a capacitor on the VDDA pin? And for another side if the decoupling recommedation for the VDDA pin is to place a 1uF it´s necessary to add another 1uF capacitor because on this pin (VDDA) there is the VREF power signal bonded internally?
Hey , New to STM32 HereI was learning about the different DMA modes, and I came across a study case that compares the time taken by each mode in a DMA memory-to-memory transfer (from Flash to SRAM). Here's the comparison below:I'm using a Nucleo-F401, and I wrote a simple code to measure the transfer time using a timer, like this:I was surprised that the results were not as expected — for example, DMA MEM2MEM transfers with word alignment took longer than those with byte alignment. Can someone please explain because this is so confusing
I have build the SNK1M1 project directly from github. For some reason it is missing PDOs. As a result there are several things I am not capable of doing.Any idea why this is not showing PDOs in the STM32CubeMonitor panel?Next to VDM SOP there should be a tab for the PDOs but its missing. Seems that the source is built with the expectation that there will be PDOs. The SNK1M1 itself does not seem to have PDOs even if I add some with the MX configuration they still do not appear.
Core : STM32H743Z , STM32H753V, STM32H750 @ 480MHzExternal Sync Clock (as EXTI0): 10MhzI tried to read/write GPIO ports with TIM2_UP and TIM3_UP events, in sync with an external clock. Data transfer (both in and out) is taking place, but not synchronised with EXTI.EXTIx 'events' are not triggering. Howvere EXTI 'interrupt' is working but the maximum data rate is less than 3MHZ Basic code initiated by CubeMX.Is there any working example for GPIO read with DMA and EXTI ?Thanks for your help in advance!
Hello. I configured the USB port on CubeMX and the generated code compiles with error usbd_cdc_if.h: No such file or directoryI seem to only google arduino references to this file ??Any clues gratefully accepted.
I'm trying to configure the STM32H7S3L8 to work with a 24-bit parallel RGB LCD. From what I've read, this kind of interface usually requires either an LTDC peripheral or a dedicated display controller board. However, I can't find any documentation confirming whether the H7S3L8 includes LTDC.Can anyone confirm if the STM32H7S3L8 supports LTDC? If not, is there any practical way to drive a 24-bit RGB display directly from this chip, such as using the FMC, or do I need to add an external display controller?
Hi AllI have a digital power converter topology (H-bridge) which requires waveform to look like the following:As can be seen in the above, complementary waveform is being sent on bottom 2 channel in 1st 10ms and then they are being in the IDLE state while complementary waveform is being sent on other 2 channels in next 10ms.I have achieved above using HRTIM (TIMERA and TIMERB) and TIM17.The issue is that TIM17 interrupt the CPU and in the interrupt (in this case, at a freq. of 50hz), HRTIM outputs are being enable and disabled using the following code:void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { /* USER CODE BEGIN Callback 0 */ /* USER CODE END Callback 0 */ if (htim->Instance == TIM16) { HAL_IncTick(); } /* USER CODE BEGIN Callback 1 */ if(htim->Instance == TIM17) { static uint8_t toggle = 0; toggle = !toggle; HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, toggle ? GPIO_PIN_SET : GPIO_PIN_RESET); HAL_HRTIM_WaveformOutputStop( &hhrtim1, HRTIM_OUTPUT_T
Hi. I have a board with STM32G0 that I want to wake up from STOP mode via external signals. And so I used 16 interrupts from GPIO and they work correctly. However, I need one more external input for waking up. Specifically, I have a PA15 pin that has an external pull-up, and the signal that is supposed to wake up pulls this pin to GND. PA15 has AF: TIM2_CH1 and TIM2_ETR. I tried to use ETR, but I don't have the option to select the edge and I don't know why CubeIDE sets this pin as push-pull. Generally, I tried several modes/configs and none of them wakes up the processor, or even jumps to the interrupt from TIM2. Can you suggest something? Example? Tutorial? Because when I search for similar threads, I still come across cyclic timer wake-up every x seconds, and I need to wake up the timer the same way as with EXTI. If its impossible, i eventually can change pin and use UART to wake up (if it will work :)), but i think it should be possible using timer. Thanks in advance.
Code generation failed to generate void SPD_TIM_M1_IRQHandler(void);Because the comment section was not closed off with "-->" Line 171 in stm32_mc_common_it.c.ftl: <#else> <#--CondFamily_STM32F0 || CondFamily_STM32F4 || CondFamily_STM32F7 || CondFamily_STM32F3 || CondFamily_STM32G4 || CondFamily_STM32H5 || CondFamily_STM32H7 || CondFamily_STM32L4> <#if (M1_ENCODER == true) > void SPD_TIM_M1_IRQHandler(void); Needs to be: <#else> <#--CondFamily_STM32F0 || CondFamily_STM32F4 || CondFamily_STM32F7 || CondFamily_STM32F3 || CondFamily_STM32G4 || CondFamily_STM32H5 || CondFamily_STM32H7 || CondFamily_STM32L4 --> <#if (M1_ENCODER == true) > void SPD_TIM_M1_IRQHandler(void); Error is only apparent when both Encoder and Hall sensor are used because of the double function name SPD_TIM_M1_IRQHandler
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.