Using UART IDLE Interrupt for Receiving Variable Length Serial Data

Using UART IDLE Interrupt for Receiving Variable Length Serial Data

Introduction In serial communication applications, we often use receive and transmit interrupts, which most of you are familiar with. There is a very useful interrupt that may be overlooked, which is the bus IDLE interrupt. When a frame of data transmission ends, the bus will maintain a high level state, at which point the MCU’s … Read more

Engineer Notes | Receiving Variable Length Data Using UART IDLE Interrupt

Engineer Notes | Receiving Variable Length Data Using UART IDLE Interrupt

Introduction In serial communication, we often use receive and transmit interrupts, which everyone is familiar with. There is another very useful interrupt that may be overlooked, namely the bus idle state IDLE interrupt. When a frame of data transmission ends, the bus remains high idle, which triggers the MCU’s IDLE interrupt. In this article, we … Read more

Unlocking C++ Embedded Development: A Complete Guide to HAL Design

Unlocking C++ Embedded Development: A Complete Guide to HAL Design

I. The “Unsung Hero” in Embedded Development – HAL In the vast realm of embedded development, there is a crucial role that often remains “behind the scenes” – the Hardware Abstraction Layer (HAL). It serves as a bridge connecting upper-level software applications with a diverse range of underlying hardware devices. For C++ embedded developers, a … Read more

Why Are 2 Data Points Lost During SPI Transmission?

Why Are 2 Data Points Lost During SPI Transmission?

Someone used the STM32F4 chip to validate the SPI functionality. When using two on-chip SPI modules for transmission and reception based on interrupts, it was found that there was always a loss of received data, seemingly losing the last 2 data points. The code used the HAL library’s API functions. What could be the reason? … Read more

Developing Embedded Systems with C++: A Comprehensive Guide

Developing Embedded Systems with C++: A Comprehensive Guide

Writing embedded systems is indeed an interesting task. Unlike regular application development, we have to deal directly with the hardware and also worry about memory usage and real-time performance. As a veteran in embedded systems for over a decade, I find that developing embedded systems with C++ is quite cool. It allows us to utilize … Read more

High-Speed I2C Driver for OLED Screen

High-Speed I2C Driver for OLED Screen

Write summaries, discuss careers, and win DJI drones, Redmi tablets, Huawei headphones, and JD cards! This article is from the Breadboard Community’s “Lingdong Mini-F5333 Development Board” free evaluation activity. 【Purpose of Experience】Light up the OLED screen and learn to use I2C peripherals. 【Experimental Equipment】 MIN-F5333 Development Board OLED Display Screen 【Implementation Steps】 1. Copy the … Read more

STM32WLE5 IoT Tutorial for Lanqiao Cup

STM32WLE5 IoT Tutorial for Lanqiao Cup

[Note] 1. If the images in the article are unclear, please contact customer service. 2. Reproduction, commercial use, piracy, and other actions that harm this public account are prohibited. 3. Any suggestions or content updates can be discussed with customer service. 4. The following link is the initial version of the tutorial; this article will … Read more

Comparative Analysis of Four STM32 Libraries: Register, Standard Peripheral Library, HAL, and LL

Comparative Analysis of Four STM32 Libraries: Register, Standard Peripheral Library, HAL, and LL

Follow+Star Public Account Number, don’t miss the wonderful content Author | strongerHuang WeChat Public Account | strongerHuang 1. Should I choose register development for STM32, or the Standard Peripheral Library? 2. Do you have the STM32L0 Standard Peripheral Library? 3. What are the differences between HAL and LL libraries? … Now, let’s discuss the four … Read more

Understanding the Causes of FreeRTOS Task Scheduling Failures

Understanding the Causes of FreeRTOS Task Scheduling Failures

Recently, a friend and I discussed some strange aspects of the FreeRTOS code generated by STM32CubeMX. void LED01Tog(void const * argument){ /* USER CODE BEGIN LED01Tog */ /* Infinite loop */ for(;;) { HAL_GPIO_TogglePin(GPIOF,GPIO_PIN_10); osDelay(500); } /* USER CODE END LED01Tog */} We added two LED toggle functions, compiled our code, and found that the … Read more