CMSIS标准及HAL库学习记录(1)

本文介绍了如何利用CMSIS和HAL库提高嵌入式程序的可移植性和维护性,特别是在STM32F407VG芯片上。通过Keil MDK 5.24a,结合RTX5源代码,详细阐述了工程配置过程,包括选择CMSIS CORE, DSP, RTOS组件以及HAL库的相关驱动。虽然STM32CUBE能加速开发,但为了深入学习,选择了手动配置。文章最后提及编写BSP驱动和应用主函数以实现LED灯的控制。" 129927026,5613065,深入理解Spring Bean:生命周期与管理,"['spring', 'java', '后端开发', 'bean管理']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    工作中总会遇到嵌入式程序的可移植性问题,因为代码量的庞大和编写代码人的不统一性,尤其是遇到开发人员离职的问题。在代码的几年维护和需求变更等等各种修改工作后,代码便变得难以维护。那么如何保持代码的可持续维护性?如何让代码在平台变更,各类不同硬件架构的产品之中游刃有余?ARM为我们提出了一个方案:CMSIS 和HAL库。以下是ARM官网关于CMSIS的架构图,由于理解尚不够深入,而且本人能力有限,不予详细说明。

本次学习基于Keil MDK 5.24a,基于STM32F407VG芯片,使用Software Pack方式和Keil提供的RTX 5源代码进行学习。

首先创建工程,在新工程的Software Pack相关选项中勾上CMSIS项下CORE      DSP      RTOS(API)中的Keil RTX5      RTOS2(API)中的KEIL RTX5的Source     Device中勾选Startup STM32CUBE中的Classic方式 HAL库中勾选需要的驱动

如果使用STM32CUBE软件作为辅助开发,可以更快的上手相关开发,图形和列表化的配置能够把复杂的时钟系统和外设配置的井井有条。但是本次目的以学习为主,不采用软件辅助的方式进行开发。

<
### STM32 HAL与固件的相关文档及手册 对于STM32开发人员来说,了解HAL和固件的文档结构及其功能是非常重要的。以下是关于如何获取这些资源以及它们的主要组成部分。 #### 1. **HAL相关文档** HAL(Hardware Abstraction Layer)是由STMicroelectronics提供的一套标准化接口,用于简化不同系列MCU之间的移植工作[^1]。其主要文档存储位置如下: - **Documentation 文件夹** 在HAL目录下的 `Documentation` 文件夹中包含了详细的帮助文档,涵盖了API描述、使用指南等内容。开发者可以通过阅读这些文档来快速上手并理解HAL的功能实现方式[^3]。 - **Release_Note.html** 这份文件位于根目录下,记录了当前版本的所有更改点、新增特性以及已知问题等重要信息。它有助于用户掌握最新动态,并决定是否升级至新版本。 #### 2. **固件相关文档** 相比HAL,传统的标准外设驱动(Standard Peripheral Library),即所谓的“固件”,虽然逐渐被取代,但仍有一些遗留项目可能仍在使用该。其文档通常也随一起发布。 - **PDF格式的手册** 固件一般会附带一份或多份`.pdf`形式的技术参考手册,详细介绍各个模块的工作原理及函数调用方法[^2]。 - **Example Projects** 正如提到过的,在某些情况下可以直接基于现成例子进行调整优化而无需完全重写逻辑代码。通过研究这些实例程序能够加深对整个框架的理解程度。 #### 3. **CMSIS相关内容** 值得注意的是,无论是在HAL还是旧版固件里都会涉及到CMSIS(Core Support Package & Device Specific Peripherals Interface Standard),具体资料可查阅路径为: ```plaintext STM32Cube_FW_F1_V1.8.0\Drivers\CMSIS\ ``` 此部分不仅定义了处理器核心层面的操作规范还扩展到了特定设备上的寄存器访问机制等方面。 --- ### 示例:定位某个外设驱动的帮助文档 假设现在需要查询UART通信方面的详细参数设定,则可以在上述提及到的不同层次里寻找对应的章节链接或者关键词索引进入深入学习阶段。 ```c // 使用HAL初始化串口示例 void MX_USART2_UART_Init(void){ huart2.Instance = USART2; huart2.Init.BaudRate = 9600; huart2.Init.WordLength = UART_WORDLENGTH_8B; huart2.Init.StopBits = UART_STOPBITS_1 ; huart2.Init.Parity = UART_PARITY_NONE; huart2.Init.Mode = UART_MODE_TX_RX; if (HAL_UART_Init(&huart2) != HAL_OK){ Error_Handler(); } } ``` 以上片段展示了利用HAL API完成基本配置过程的一部分操作流程图解说明应该参照官方给出的标准样式编写相应段落以便于后期维护管理等工作顺利开展下去。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值