Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Split from this old, abandoned thread.I see the same error. I'm using STM32F302, talking to MCF8329A using I2C. I can see the STM32 is reading the MCF8329A perfectly fine with no error when I power cycle it.But when I run the firmware on debug mode on stmCubeIDE, I see the I2C doesn't respond, it responds with an error from I2C_WaitOnFlagUntilTimeout.
While implementing I²C communication between the STM32F446RE and the MPU6050, the communication does not work when running in debug mode. However, if the board is reset by just unplugging and re-plugging the power, the I²C communication works correctly, as verified with a logic analyzer. But the communication is not observed in debug mode. What might be the issue
Heyho,question about FDCAN and repeating / timed transmission of the same messages:(this is neither about TT CAN nor auto re-transmission, but e.g. for messages which need to be sent every 100 ms repeatedly and "manually")After the first setting of the TX buffer or TX FIFO, and after the first successful transmission, is the TX buffer (incl. the 2 "control" words) somehow altered / changed?If not, can the same message simply be sent again by setting the corresponding bit in the register TXBAR ?
Hi Guys, I am completely new in the world of ST Microcontroller. I have worked with PIC Microcontrollers using MikroC Compiler. After studying various tutorials on this topic, I am getting it slowly. While going through code of generation of PWM, I came across a function " HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);" which, I assume, starts PWM. My question, Is it a library function? If so, how can it be accessed. Incidentally it is stated that I have installed STM32 CubeMX and STM32 Cube IDE.
Trying to report a minor issue with published development board design files.The files fail to import into KiCad on Linux with a fairly cryptic error message.After much digging I discovered that the Altium project file has: ```[Document1]DocumentPath=Project_Overview.SchDoc```While the actual file on disk in zip archive is "Project_overview.SchDoc" the difference in capitalization between "Overview" and "overview" causes the files to not open correctly on Linux (which is case sensitive about file paths), while working on Windows. I suspect someone re-named the file at somepoint without fixing all references to it.Re-naming the file, or editing the .PrjPcb file fixes the issue, but this is non-obvious.Specific board: https://www.st.com/en/evaluation-tools/nucleo-h753zi.htmlSpecific download link: https://www.st.com/resource/en/board_manufacturing_specification/mb1364_bdp.zip
I have added digitalTime (digitalClock1), textArea (T_DATE_DISPLAY),,BoxProgress (tankLevelA), CircleProgress (valveOpenA), and button (buttonWithIcon1). Please find the code and the errors of the last trial (please note I have wandered through lots of modifications in vain, I must be doing something fundamentally wrong):ERROR:: Please see Reply due to excess charactersmain.c please see the 2nd. reply due to number of charaters model.hpp#ifndef MODEL_HPP #define MODEL_HPP #include <touchgfx/hal/Types.hpp> #include <touchgfx/Model.hpp> class Model : public touchgfx::Model { public: Model(); void tick() override; // Demo mode methods float getTankLevel() const { return tankLevel; } float getValvePosition() const { return valvePosition; } bool isDemoModeActive() const { return true; } protected: // Demo mode variables float tankLevel; float valvePosition; bool tankIncreasing; bool valveIncreasing; void updateDemoData(); }; #endif
Dear STM Community,Over the past while, I have steadily (and successfully) progressed through many STM32/TouchGFX tutorials - with the ultimate aim of sending/receiving data over an RS485 link. Most of these tutorials are produced by Controllerstech. All has been going well until one particular tutorial.I am using the very latest software:TouchGFX Designer 4.26.0STM32CubeIDE 2.0.0STM32CubeMX 6.16.0When I build the design in STM32CubeIDE, I get the error message:make: *** No rule to make target 'C:/Users/XXX/Desktop/TouchGFX-projects/TouchGFX-UART-Control/TouchGFX', needed by 'Utilities/jpeg_utils.o'. Stop."make -j16 all" terminated with exit code 2. Build might be incomplete. One thing I have noted is that this directory doesn't exist: C:/Users/XXX/Desktop/TouchGFX-projects/TouchGFX-UART-Control/TouchGFXCould this be a path length truncation - and hence the error I have spent days trying to drill down to why this error appears.I have loo
All clock setup and tracing enable checkbox checked and port0 selected but still no SWO printf debug messages in CubeIDE debugger. Further research led to the SWO pin function (PB3) that deliveres the trace data from the board to the debugger. However Blackpill's SWD header only has four pins GND,Vcc,CLK,DIO, enough for firmware flashing, manual memory inspection but I fear not for SWO tracing .Is my "analysis" correct, that the stock SWD header is per design not capable of SWO tracing?ST-Link V2 only offers one additional pin (besides NRST) named SWIM on its 10-pin connector.I assume that is not where PB3 ought be connected to, correct?
Hello people,I have been developing a firmware to be used in the stm32g051. One of the features is the ability to respon to request to get information from the uC. I used dma for the uart1 tx and rx. I was happily developing and testing the new feature added into the stm32g051. Then when I use it without the debugger, it is unable to stablish communications between the PC and the microcontroller. The curious thing is the fact that I remove the debugger -I disconnect it- and the communication still works. It is the "reset" without debugger what is unable to stablish the connection. I change the clocks following the several post regarding this problem but the solution still eludes me.
Hello everyone!I'm facing a problem when trying to switch a bank on STM32H745 MCU. The issue happens only when the debugger is disconnected. Our implementation uses the HAL library to perform Bank switch like this:HAL_FLASH_Unlock(); HAL_FLASH_OB_Unlock(); FLASH_OBProgramInitTypeDef info; HAL_FLASHEx_OBGetConfig(&info); // swap banks in option bytes info.OptionType = OPTIONBYTE_USER; info.USERType = OB_USER_SWAP_BANK; if (info.USERConfig & OB_SWAP_BANK_ENABLE) info.USERConfig &= ~OB_SWAP_BANK_ENABLE; else info.USERConfig |= OB_SWAP_BANK_ENABLE; __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_ALL_ERRORS_BANK1); __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_ALL_ERRORS_BANK2); HAL_StatusTypeDef ret = HAL_FLASHEx_OBProgram(&info); if (HAL_OK == ret) { // launch new configuration ret = HAL_FLASH_OB_Launch(); } (void)HAL_FLASH_OB_Lock(); (void)HAL_FLASH_Lock(); __HAL_RCC_CLEAR_RESET_FLAGS(); NVIC_SystemReset();In some of the builds it does not work and after reset it keeps r
I’m using an ST‑LINK V3 Minie with an STM32F100RBT6B Discovery board (which also has an STM32F103C8T6), and it works perfectly. However, when I connect the same ST‑LINK V3 Minie to my custom board that uses the same STM32F100RBT6B chip, it fails to connect.I’ve wired VCC (VTref), GND, NRST, TMS/SWDIO, and TCK/SWCLK exactly as specified.Black - GroundWhite - VccYellow - ResetBlue - ClockPurple - TMSOn the Discovery board this setup works fine, but on my custom board the debugger cannot establish communication.Could anyone suggest what additional checks I should perform on the custom board?
HiI'm trying to make a text that gets bigger automatically with smooth animation.Is there any way to make it happen using touchgfx?I tried, but I couldn't find a good way to implement it.I tried to make two typed text (one bigger, one smaller), but switching these two seems too unnatural and awkward.Is there any way to dynamically change font size with animation?
Hi,I’m working with the LAN9253 and an STM32F446ZCH6, using Quad-SPI for Ether CAT communication. I attempted to interface with the LAN9253 over QSPI using the STM32 HAL libraries, but I haven’t been able to get it working.Are there any existing libraries or reference implementations available for using QSPI with the LAN9253?Thank you,Deekshitha.
This branches off from the second question I asked in here. Using the example code (Ux_Device_Audio2.0_PlayBack) right off the bat does not work, and this is what I've done so far.HardFault DiagnosisEncountered HardFault_Handler() when audio playback started.Fault analysis revealed:FORCED = 1IMPRECISERR = 1 (Imprecise data access violation)Fault occurred in _ux_utility_memory_copy() due to an invalid destination address: 0x3071BFBA.Buffer Pointer ResetThe destination address was out of bounds.Manually reset BufferCtl.wr_ptr = 0.This resolved the HardFault and allowed playback to start.However, pausing or stopping playback caused the last audio segment to loop indefinitely.Fixing Audio LoopingAdded BSP_AUDIO_OUT_Stop(0) inside the alternate_setting == 0 block of the stream change function.This stopped the looping but introduced a screeching sound mid-playback.This raised questions:Is the buffer not clearing properly?Is the screeching due to stale audio segments?Memory Layout Correc
Hi, I've got a STM32U5G9ZJ-DK2 Discovery kit.I'm trying to setup the ADC to work with GPDMA doing a continuous acquistion of two channels into a large buffer of samples. I got it working perfectly fine with ADC4, but I just don't get it work with ADC1.From what I can tell it looks like the DMA Request from ADC1 is not forwarded to the GPDMA.ADC1 itself works, too. It works well in interrupt mode (triggering an IRQ after the sequence of two channels).Is the a special trick to enable the GPDMA request from ADC1, like is there a certain clock or power domain that must be enabled? hdma_adcx.Instance = GPDMA1_Channel8; hdma_adcx.InitLinkedList.Priority = DMA_LOW_PRIORITY_LOW_WEIGHT; hdma_adcx.InitLinkedList.LinkStepMode = DMA_LSM_FULL_EXECUTION; hdma_adcx.InitLinkedList.LinkAllocatedPort = DMA_LINK_ALLOCATED_PORT0; hdma_adcx.InitLinkedList.TransferEventMode = DMA_TCEM_LAST_LL_ITEM_TRANSFER; hdma_adcx.InitLinkedList.LinkedListMode = DMA_LINKEDLI
Hello!I am trying to get an MQTT project to work, but having some issues. At some points randomly the program stops and does not respond to the remote server anymore. In hopes of figuring it out I tried to enable stack checking from ThreadX settings from CubeMX, and generated the code. BUT, whenever the stack checking was disabled, DNS was able to retrieve the IP address always. Now, it fails every time.The function "nx_dns_host_by_name_get" is called from the begging of SNTP thread. After calling the mentioned function, the return status is NX_DNS_QUERY_FAILED (0xA3). I have the DNS set up as to retry 3 times with a timeout of 10 seconds.Checking from WireShark I can see that the device did send out the query to get the IP address, and the router answered, but for some reason the packet was not received/saved on the device side. After that I get 3 different ARP packets from the router, which is trying to identify my device, but no responses. Finally, 2 more attempts are made by t
Hi,We're planning to integrate a file system with the VENC_SDCard example for the STM32N6x7:https://github.com/STMicroelectronics/STM32CubeN6/tree/main/Projects/STM32N6570-DK/Applications/VENC/VENC_SDCardWe found Revision 3 of UM1721 Developing applications on STM32Cube™ with FatFs dated February 2019 and were wondering if that's the most recent revision of the document?https://www.st.com/resource/en/user_manual/um1721-developing-applications-on-stm32cube-with-fatfs-stmicroelectronics.pdfWill
I am trying to start 6 virtual com ports over usb. I could start 4 using a USB composite pack made by a developer. From what I have read and tried, there are not enough endpoints for 6 com ports and only maximum for 4 (9 bidrectional EPs, 1 reserved for EP0; 2 IN EPs and 1 OUT EP per com port). Is it possible to start 6 com ports at all by reusing or bypassing an IN EP?
I am working with the Nucleo-STM32F753ZI board and using the internal OPAMP peripheral. The supply is 3.3 V, and according to the datasheet the OPAMP output should swing close to the rails, but in my case the maximum output I can get is only around 2.4 V.Has anyone faced this issue on STM32F7 series?Is there any configuration, calibration, or internal routing limitation that restricts the OPAMP output range on this board?Any guidance on how to achieve the full output swing (near 3.3 V) would be helpful.
Hy, I received the STM32N6 DK Kit, switched it on - and it crashes immediately. All demos run smoothly, but as soon as I start the AI demo, the display turns grey after approx 2 seconds. I power the device over USB port with my 65W Laptop Power supply, jumper JP2 set to 3-4 (5V_USB)When running the DCMIPP_ContinuousMode_FSBL example project, I see a stable, smooth camera image, so apparently no connection issues to the camera.Any hints?Best regardsHarald
Hi,I'm looking for some guidance on configuring the STM32N6570-DK so i can use the screen and onboard mic / headphone out jack.It looks like everything i need is in stm32n6570_discovery_audio.h and stm32n6570_discovery_lcd.h, and i did manage to get the screen going with some configuration from this repo: https://github.com/jpcano/STM32N6-digits When I then try and enable audio the following calls succeed:void Audio_Setup(void){ AudioInit.Device = AUDIO_IN_DEVICE_DIGITAL_MIC; AudioInit.SampleRate = AUDIO_FREQUENCY_16K; AudioInit.BitsPerSample = AUDIO_RESOLUTION_16B; AudioInit.ChannelsNbr = 1; AudioInit.Volume = 80; if (BSP_AUDIO_IN_Init(0, &AudioInit) != BSP_ERROR_NONE) { Error_Handler(); } if (BSP_AUDIO_IN_Record(0, AudioBuffer, AUDIO_BUFFER_SIZE) != BSP_ERROR_NONE) { Error_Handler(); }}after this the transfer callbacks never get hit and any calls to drawing the screen, HAL functions like UART sending or blinking a led also stop working.I did try the STM
I am looking for any example project that uses Azure RTOS FileX and LevelX using onchip flash.I understand the programming flash can be segmented and used for general purpose file storage but I cannot find any example across any series packages which uses the on chip flash. Is this even possible?I am mostly looking on how to set the levelx configuration parameters in STM32CubeMX. I know how to integerate the low level flash drivers from the HAL.
I've set up my STM32U5A9J-DK to use ThreadX and connect to my PC via USBX and Audio Class.I'm correctly see the Audio Device on my PC and I can easily stream audio to it. The only thing is that, for some reason, the callback for new frame done is not fired audio_stream_parameter[0].ux_device_class_audio_stream_parameter_callbacks.ux_device_class_audio_stream_change = USBD_AUDIO_PlaybackStreamChange; audio_stream_parameter[0].ux_device_class_audio_stream_parameter_callbacks.ux_device_class_audio_stream_frame_done = USBD_AUDIO_PlaybackStreamFrameDone;The strage thing is that USBD_AUDIO_PlaybackStreamChange is correctly calledVOID USBD_AUDIO_PlaybackStreamChange(UX_DEVICE_CLASS_AUDIO_STREAM *audio_play_stream, ULONG alternate_setting) { /* USER CODE BEGIN USBD_AUDIO_PlaybackStreamChange */ /* Do nothing if alternate setting is 0 (stream closed). */ if (alternate_setting == 0) { return; } BufferCtl.state = PLAY_BUFFER_OFFSET_UNKNOWN; /* Start reception (stream opened).
I'm using an ov2640 camera. When I use HAL_DCMI_Start_DMA(&hdcmi, DCMI_MODE_CONTINUOUS, (uint32_t)camBuf0, (CAM_W * CAM_H) / 2);, HAL_DCMI_FrameEventCallback is called, but when I use HAL_DCMI_Start_DMA(&hdcmi, DCMI_MODE_SNAPSHOT, (uint32_t)camBuf0, (CAM_W * CAM_H) / 2);, HAL_DCMI_FrameEventCallback is never called. Why is this happening? Below are the relevant settings. I'm using an STM32H743 MCU. static void MX_DCMI_Init(void) { /* USER CODE BEGIN DCMI_Init 0 */ /* USER CODE END DCMI_Init 0 */ /* USER CODE BEGIN DCMI_Init 1 */ /* USER CODE END DCMI_Init 1 */ hdcmi.Instance = DCMI; hdcmi.Init.SynchroMode = DCMI_SYNCHRO_HARDWARE; hdcmi.Init.PCKPolarity = DCMI_PCKPOLARITY_RISING; hdcmi.Init.VSPolarity = DCMI_VSPOLARITY_LOW; hdcmi.Init.HSPolarity = DCMI_HSPOLARITY_LOW; hdcmi.Init.CaptureRate = DCMI_CR_ALL_FRAME; hdcmi.Init.ExtendedDataMode = DCMI_EXTEND_DATA_8B; hdcmi.Init.JPEGMode = DCMI_JPEG_DISABLE; hdcmi.Init.ByteSelectMode = DCMI_BSM_ALL; hdcm
Hello all,I am working with the STM32WB series and using a 32 MHz crystal for the HSE (specifically the Murata XRCGB32M000F1SBBR0 on my custom board).To verify correct operation, I measured the analog waveform on OSC_IN and OSC_OUT using a low-capacitance active probe (Keysight N2796A). ObservationOn both my custom board and the official NUCLEO-WB55 evaluation board, I consistently measure the following:OSC_OUT ≈ 500 mVpp, ~400 mV DC biasOSC_IN ≈ slightly lower amplitude but similar bias (~400 mV)The two boards produce almost identical results, so this does not appear to be a layout or crystal-selection issue on my side. Documentation gapI cannot find any ST document (datasheet, reference manual, AN2867, or app notes specific to STM32WB) that specifies:Expected voltage swing amplitude on OSC_IN or OSC_OUTExpected bias pointTypical or minimum oscillator drive level in terms of Vpp for HSE on the STM32WB seriesThe datasheet provides the crystal requirements (ESR, CL, drive leve
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.