# Firmware - STM32 - Study #1 ###### tags: `Firmware` `STM32` `Study` --- __VisualGDB__: * [Using the STM32 UART interface with HAL - Read](https://visualgdb.com/tutorials/arm/stm32/uart/hal/) * [Using the STM32 UART interface](https://visualgdb.com/tutorials/arm/stm32/uart/) * [Controlling STM32 Hardware Timers with Interrupts - read](https://visualgdb.com/tutorials/arm/stm32/timers/) * [Controlling STM32 Hardware Timers using HAL - read](https://visualgdb.com/tutorials/arm/stm32/timers/hal/) * [Using STM32 timers in PWM mode - read] (https://visualgdb.com/tutorials/arm/stm32/pwm/) * [Using the I2C Interface on the STM32 Devices](https://visualgdb.com/tutorials/arm/stm32/i2c/) * [Using the DMA Controller on STM32 Devices](https://visualgdb.com/tutorials/arm/stm32/dma/) * [A detailed tutorial on STM32 ADC](https://visualgdb.com/tutorials/arm/stm32/adc/) * [Tutorials > Embedded > STM32 Peripherals >](https://visualgdb.com/w/tutorials/category/tutorials/embedded/stm32_periph/) * https://visualgdb.com/w/tutorials/tag/stm32/ --- [By ShawnHymel](https://www.digikey.tw/en/maker/profiles/72825bdd887a427eaf8d960b6505adac) * [STM32 Education](https://www.st.com/content/st_com/en/support/learning/stm32-education.html?ecmp=tt8919_gl_enews_nov2018&cid=stmDM47234&bid=457693233&uid=6ZXY7hZzNw/Ka24Fgr94jLNbNITIr+psbBAk4/1BPVE=) * [MOOC - STM32CubeMX and STM32Cube HAL basics](https://www.youtube.com/playlist?list=PLnMKNibPkDnGtuIl5v0CvC81Am7SKpj02) * [Text Books](https://www.st.com/content/st_com/en/support/learning/stm32-education/text-books.html) --- [成大資工 Wiki - PWM](http://wiki.csie.ncku.edu.tw/embedded/PWM) --- * [Getting Started with STM32 - Timers and Timer Interrupts](https://www.digikey.tw/en/maker/projects/getting-started-with-stm32-timers-and-timer-interrupts/d08e6493cefa486fb1e79c43c0b08cc6) * [Getting Started with STM32 - Working with ADC and DMA](https://www.digikey.tw/zh/maker/projects/getting-started-with-stm32-working-with-adc-and-dma/f5009db3a3ed4370acaf545a3370c30c) * [Getting Started with STM32 - I2C Example](https://www.digikey.tw/zh/maker/projects/getting-started-with-stm32-i2c-example/ba8c2bfef2024654b5dd10012425fa23) * [Getting Started with STM32 - Introduction to STM32CubeIDE](https://www.digikey.tw/en/maker/projects/getting-started-with-stm32-introduction-to-stm32cubeide/6a6c60a670c447abb90fd0fd78008697) * [Getting Started with STM32 - Introduction to FreeRTOS](https://www.digikey.tw/zh/maker/projects/getting-started-with-stm32-introduction-to-freertos/ad275395687e4d85935351e16ec575b1) --- * [STM32 Basic Timer in Interrupt & PWM mode](https://www.emcu-homeautomation.org/stm32-basic-timer-in-interrupt-pwm-mode/) --- https://simonmartin.ch/resources/stm32/dl/ --- * [【STM32】HAL库 STM32CubeMX教程六----定时器中断](https://blog.csdn.net/as480133937/article/details/99201209) * [【STM32】HAL库 STM32CubeMX教程四---UART串口通信详解](https://blog.csdn.net/as480133937/article/details/99073783) * [【STM32】STM32CubeMX教程二--基本使用(新建工程点亮LED灯)](https://blog.csdn.net/as480133937/article/details/98947162) --- * [STM32CubeMX—GPIO输入输出实验](https://blog.csdn.net/qq_33728095/article/details/97148029) * [STM32CubeMX—PWM波输出实验](https://blog.csdn.net/qq_33728095/article/details/96159745) * [STM32CubeMX—外部中断实验](https://blog.csdn.net/qq_33728095/article/details/97152998) --- # [STM32 HAL Library Tutorial](https://deepbluembedded.com/stm32-hal-library-tutorial-examples/#:~:text=The%20STM32Cube%20Hardware%20Abstraction%20Layer,for%20all%20the%20hardware%20peripherals.) The STM32Cube __Hardware Abstraction Layer (HAL)__, an STM32 abstraction layer embedded software ensuring __maximized portability across the STM32 microcontroller__. The HAL is available __for all the hardware peripherals__. The __low-layer APIs (LL)__ offering a __fast light-weight expert-oriented layer__ that is closer to the hardware than the HAL. The LL APIs are __available only for a set of peripherals__. The HAL and LL are complementary and cover a wide range of applications requirements: The HAL offers high-level and __feature-oriented APIs__, with a high-portability level. They __hide the MCU and peripheral complexity to end-user__. The LL offers __low-level APIs at registers level__, with better optimization but __less portability__. They require deep knowledge of the MCU and peripherals specifications. The source code of HAL and LL drivers is developed in Strict ANSI-C which makes it independent from the development tools. It is fully documented and is MISRA-C 2004 compliant. ---