STM32CubeMX + HAL库学习「附工程源码」
STM32CubeMX + HAL
- 一些说明
【STM32CubeMX + HAL库学习「附工程源码」】-- 底层配置
-- Cube基本使用
-- HAL库函数
-- 中断回调函数
-- 外设对应时钟
- 配置示例
-- 小编有话说
-- RTC
-- SDIO + FATFS
-- SDRAM
-- LTDC + DMA2D
-- 待补充...
STM32CubeMX + HAL一些说明底层配置使用STM32CubeMX代码生成工具 , 不用关注底层配置的细节 , 真舒服 。
使用教程:
密码:bgvi
虽然Cube+HAL很舒服 , 但新手不建议用 。 最好还是先去学一下标准库怎么用 , 有个大致概念后 , 再来学这一套 。
Cube基本使用
- 新建工程
- 选择芯片
- Pinout --tt-darkmode-color: #809CB9;"> , 选择RCC(HSE:Crystal/Ceramic Resonator)、SYS(Debug:Serial Wiire)
- Clock Configuration , 配置时钟树
文章插图
- Project Manager , 配置工程输出项
文章插图
- Pinout --tt-darkmode-color: #809CB9;"> , 选择功能(若是选GPIO相关 , 可以直接在Pinout view选择;若是其他功能 , 可以在左边Categories打开 , 会自动配置引脚)、设置Parameter Settings/NVIC等
文章插图
- GENERATE CODE , 生成工程 , 用KEIL打开编辑
- 函数形式:均以HAL_开头
- 寻找过程:在驱动文件stm32f4xx_hal_XXX.c或其.h文件中找函数定义 , 一般在靠后位置
- 其他说明:HAL库并没有把所有的操作都封装成凼数 。 对于底层的寄存器操作(如读取捕获/比较寄存器) , 还有修改外设的某个配置参数(如改变输入捕获的极性) , HAL库会使用宏定义来实现 。 而且会用__HAL_作为这类宏定义的前缀 。 获取某个参数 , 宏定义中一般会有_GET;而设置某个参数的 , 宏定义中就会有_SET 。 在开发过程中 , 如果遇到寄存器级别或者更小范围的操作时 , 可以到该外设的头文件中查找 , 一般都能找到相应的宏定义 。 HAL库函数第一个参数一般都是句柄(一个包含了当前对象绝大部分状态的结构体) , 虽然增加了开销 , 但是用起来便捷了非常多 。
- 函数形式:HAL_XXX_XXXCallback() 。
- 寻找过程:中断文件stm32f4xx_it.c - > 中断函数XXX_IRQHandler(void) -> HAL库中断函数HAL_XXX_IRQHandler(GPIO_PIN_13) -> 回调函数HAL_XXX_XXXCallback()
- 随便进入一个外设初始化函数 , 如MX_GPIO_Init()
- 随便进入一个时钟使能函数 , 如__HAL_RCC_GPIOC_CLK_ENABLE()
- 随便进入一个RCC宏定义 , 如RCC_AHB1ENR_GPIOCEN
- 或者直接进入stm32f429xx.h文件
- 里面有所有外设与时钟对应关系 , 如RCC_AHB1ENR_DMA1EN
- 例子源码: 密码:bf5q
- 如果配置过程中 , 参数不知道怎么设置 , 可以去标准库例程(如野火、正点原子)中看对应的参数是什么
- Cube软件只是帮你配置了底层 , 一些初始化代码还是需要自己手动加的 , 如SDRAM充电初始化、读写函数等
文章插图
文章插图
- 假期弯道超车 国美学习“神器”助孩子变身“学霸”
- 想自学Python来开发爬虫,需要按照哪几个阶段制定学习计划
- 未来想进入AI领域,该学习Python还是Java大数据开发
- Google AI建立了一个能够分析烘焙食谱的机器学习模型
- 学习大数据是否需要学习JavaEE
- 学习“时代楷模”精神 信息科技创新助跑5G智慧港口
- 非计算机专业的本科生,想利用寒假学习Python,该怎么入手
- ?优学天下带着学习机冲刺上市,智能教育硬件有多烧钱?
- 数据分析与机器学习:侦测应用内机器人作弊关键
- 打破开发壁垒,2020深度学习开发者峰会百度飞桨认证PPDE分享开源收获