STM32开发笔记9: STM32CubeF0固件架构

发布者:Susan苏最新更新时间:2019-07-17 来源: eefocus关键字:STM32  STM32CubeF0  固件架构 手机看文章 扫描二维码
随时随地手机看文章

单片机型号:STM32CubeF0


    本文介绍STM32CubeF0固件架构。


    STM32CubeF0固件架构图如下图所示。  

图片  

    1、Board Support Package (BSP) 

    This layer offers a set of APIs relative to the hardware components in the hardware boards


(such as LCD, Audio, microSD and MEMS drivers). It is composed of two parts:


    • Component


    This is the driver relative to the external device on the board and not to the STM32. The


component driver provide specific APIs to the BSP driver external components and could be portable on any other board.


    • BSP driver


    It allows linking the component driver to a specific board and provides a set of user friendly APIs. The API naming rule is BSP_FUNCT_Action().Example: BSP_LED_Init(), BSP_LED_On()


    The BSP is based on a modular architecture allowing an easy porting on any hardware by just implementing the low-level routines.

    (大意:BSP是板级支持包的意思,分为2个部分:组件和BSP驱动。组件是线路板上扩展器件的驱动,而非STM32,组件提供了特定的API用于BSP驱动这些外部组件并且在其它板上移植。BSP驱动用于连接组件到指定的线路板,并提供一系列用户友好的API。这些API遵循BSP_FUNCT_Action的命名规则。BSP基于模块化结构,便于移植。) 


    2、Hardware Abstraction Layer (HAL) and Low Layer (LL)

    The STM32CubeF0 HAL and LL are complementary and cover a wide range of applications


requirements: (大意:STM32CubeF0覆盖了极广泛的用户需求)

    The HAL drivers offer high-level function-oriented highly-portable APIs. They hide the


MCU and peripheral complexity to end user.The HAL drivers provide generic multi-instance feature-oriented APIs which simplify user application implementation by providing ready to use process. As example, for the communication peripherals (I2S, UART…), it provides APIs allowing initializing and configuring the peripheral, managing data transfer based on polling, interrupt or DMA process, and handling communication errors that may raise during communication. The HAL driver APIs are split in two categories:


    – Generic APIs which provides common and generic functions to all the STM32Series


    – Extension APIs which provides specific and customized functions for a specific family or a specific part number.  

    (大意:HAL提供了高层、功能导向和高便捷性的API,它对最终用户隐藏了MCU和外设的复杂性。通过使用进程的方式,HAL驱动提供了多实例、特性导向的API用于简化用户的应用程序设计。例如,I2S和UART,它提供了初始化和配置外设进程,管理数据传输(轮询、中断和DMA)进程,以及在通讯过程中降低误码率的进程。HAL驱动包含2组:一般和扩展。)

    The Low Layer APIs provide low-level APIs at register level, with better optimization but


less portability. They require a deep knowledge of MCU and peripheral specifications. The LL drivers are designed to offer a fast light-weight expert-oriented layer which is closer to the hardware than the HAL. Contrary to the HAL, LL APIs are not provided for peripherals where optimized access is not a key feature, or for those requiring heavy software configuration and/or complex upper-level stack (such as USB).


    The LL drivers feature:


    – A set of functions to initialize peripheral main features according to the parameters


specified in data structures


    – A set of functions used to fill initialization data structures with the reset values


corresponding to each field


    – Function for peripheral de-initialization (peripheral registers restored to their


default values)


    – A set of inline functions for direct and atomic register access


    – Full independence from HAL and capability to be used in standalone mode (without HAL drivers)


    – Full coverage of the supported peripheral features.


    (大意:底层API提供寄存器级底层API,可以用于优化系统系能但移植性较低。他们需要对MCU和外设有一个较深的理解。LL实际上是一个快速、轻量级、专家导向层更接近与硬件。)

 

    其它的就不介绍了,理解起来应该没有什么问题。



关键字:STM32  STM32CubeF0  固件架构 引用地址:STM32开发笔记9: STM32CubeF0固件架构

上一篇:STM32开发笔记10: HAL_Init函数
下一篇:STM32开发笔记8: STM32CubeF0介绍

推荐阅读最新更新时间:2024-11-09 09:53

STM32单片机内存管理器代码
本代码适用于无操作系统的STM32单片机开发,功能强大。 可申请到地址空间连续的不同大小的内存空间,且用户接口简单,使用方便。 memory.h: memory.c:
[单片机]
stm32内部时钟有哪些时钟源 stm32使用内部时钟配置教程
stm32内部时钟有哪些时钟源 在STM32中,可以用内部时钟,也可以用外部时钟,在要求进度高的应用场合最好用外部晶体震荡器,内部时钟存在一定的精度误差。 内部时钟有2个时钟源可以选分别是HSI、LSI、(内部高速,内部低速,),高速时钟主要用于系统内核和总线上的外设时钟。低速时钟主要用于独立看门狗IWDG、实时时钟RTC。 1、HSI是高速内部时钟,RC振荡器,频率为8MHz,上电后默认的系统时时钟 SYSCLK = 8MHz,Flash编程时钟。 2、LSI是低速内部时钟,RC振荡器,频率为40kHz,可用于独立看门狗IWDG、实时时钟RTC。 使用时需要注意 注释掉这个SystemInit(); 时钟配置函数 //配
[单片机]
STM32之旅6——WWDG
WWDG是stm32f103的窗口看门狗,使用的时钟是APB1的时钟,在使用wwdg是被一个小问题困扰了很久——没有打开中断,无法喂狗,一直复位。 初始化完之后需要使能中断: __HAL_WWDG_ENABLE_IT(&hwwdg, WWDG_IT_EWI); 在中断回调函数中喂狗: void HAL_WWDG_EarlyWakeupCallback(WWDG_HandleTypeDef *hwwdg) { HAL_WWDG_Refresh(hwwdg); }
[单片机]
<font color='red'>STM32</font>之旅6——WWDG
stm32设置唯一MAC地址
stm32参考手册中指出,在地址为0x1FFFF7E8处,有一个唯一的身份标识寄存器。 可以直接访问该值。 printf( rnChip ID: %x, %x, %xrn , *(vu32*)(0x1ffff7e8), *(vu32*)(0x1ffff7e8+4), *(vu32*)(0x1ffff7e8+8)); Chip ID: 5d8ff39, 36364e4e, 43137403 虽然这个96bit的ID是唯一的,但是MAC地址却只有48bit,因为量产有不同批次,而且采购的很随机的话这个ID号也是不唯一的,比较靠谱一点的还是自己在指定FLASH位置定义一个变量,这样程序就写死去读这个地方的值,而这个地
[单片机]
<font color='red'>stm32</font>设置唯一MAC地址
玩转STM32(11)CPU的心跳历程
前面说CPU怎么样才有脉搏,也就是给CPU装了一个心脏,这样这个由泥沙组成的CPU才能开始拥有像生命的力量了。在前文后面,提到了使用25MHz晶振作为外部的频率来源,但是我们的目标是让CPU工作在168MHz的频率,这样才可以让CPU工作得更快,运行代码更快,效率更高。当然,如果你想让CPU工作在25MHz也是可以的,只是有点不值得,用这么贵的硬件,运行这么低的频率。要想快,就得提高CPU运行的频率,那么怎么样才可以把25MHz的频率转换为168MHz的频率呢?可以看到168M是比25M频率高很多,显然要使用到倍频电路,也要使用到分频电路。比如把25M按25分频系数来分频,那么得到频率就是1M,然后再使用倍频电路,比如使用336作
[单片机]
玩转<font color='red'>STM32</font>(11)CPU的心跳历程
解析STM32的启动过程及STM32 启动文件选择
STM32 启动文件选择 小容量产品是指闪存存储器容量在16K至32K字节之间的STM32F101xx、STM32F102xx和STM32F103xx微控制器。 中容量产品是指闪存存储器容量在64K至128K字节之间的STM32F101xx、STM32F102xx和STM32F103xx微控制器。 大容量产品是指闪存存储器容量在256K至512K字节之间的STM32F101xx和STM32F103xx微控制器。 互联型产品是指STM32F105xx和STM32F107xx微控制器。 - startup_stm32f10x_ld_vl.s: for STM32 Low density Value line devices - st
[单片机]
如何互换STM32中UART的Rx和Tx引脚及电平的反转
今天给大家分享关于STM32关于UART的一些新特性,主要针对较新系列STM32(如:STM32H7、G0、G4等)的UART,可通过软件改变Rx和Tx引脚、电平反转、高低反序、介绍超时等。 支持RXD和TXD管脚互换 有些时候,我们在外接RS232芯片时,可能会将RXD和TXD两根线接反。这类低级错误,一般是老司机才会犯。 如果大家知道USART的TXD和RXD管脚可以互换,那么在连接外设RS232芯片时,如果发生错误,就不必再修改硬件,只需直接在软件中将RXD和TXD的管脚反转过来即可修正错误。 参考上图,设置SWAP位,即可将RXD和TXD管脚互换。 支持接收和发送的电平极性反转 第二个新特性:Tx和Rx电平极
[单片机]
如何互换<font color='red'>STM32</font>中UART的Rx和Tx引脚及电平的反转
stm32 mmc卡写文件然后读出来 串口输出
硬件环境:神州一号板 软件环境:MDK 1、sd卡硬件初始化 PA5---------CLK PA6---------MISO PA7---------MOSI PB7---------CS void TurnToSD(void) { SPI_InitTypeDef SPI_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_A
[单片机]
<font color='red'>stm32</font> mmc卡写文件然后读出来 串口输出
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved