8年7个月前修改于 8年7个月前IP:澳大利亚
845961
22楼
最近沉迷STM32实现Type-C快充协议再加上学校的项目一直在鼓捣STM32,RM0091都快能背了(大雾

发表下感受:
1. 了解寄存器级别的操作还是很有必要的
比如说要把一个引脚从GPIO输出模式切换成定时器输出模式,就需要好好考虑下切换期间会发生什么。有时候直接用HAL_GPIO_Init会产生Glitch,假如驱动的是控制高压开关的MOS管啥的很容易爆炸
而且HAL_GPIO_Init很慢,本来几个位操作就能解决的非要弄个循环x

2. 抽象是要付出代价的
以STM32F030来说,官方最开始出的是标准库,然后是HAL+LL(硬件抽象层+底层库),LL和标准库基本是一个东西(很多函数and/or宏都能一一对应),HAL则是更高层次的封装,更有可移植性。
实验发现用了最简单的ADC功能,HAL比LL多用500字节RAM,2k的ROM,对于只有32k Rom 4k Ram的STM32F030K6还是很需要考虑的
分析了下HAL的实现, HAL要求使用者保存一个结构体,里面保存了初始化参数还有一些状态机的状态之类的。窝木有用ADC的DMA但是这个结构体里面还是有小一半的DMA相关...而且初始化参数还存着...大概率一直用不到的东西。

所以窝感觉HAL更适合USB SPI I2C这些定死的不需要频繁和硬件底层打交道的通信外设

题外话:
一行printf不开优化的情况下有24k rom,开了也好不到哪去,所以最好方法就是不用printf甚至不用任何stdlib里的东西

更新:
CubeMX适合开局,但是不要完全依赖这个,个人感觉里面也就是看引脚的映射和初始化时钟配置坠有用
评论
文号 / 845961

万流景仰
名片发私信
学术分 11
总主题 171 帖总回复 1713 楼拥有证书:学者 机友 笔友
注册于 2011/09/23 14:21:19最后登录 2026/04/15 00:20:51
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:0

个人简介

怪哉!灵异的三极管电流流向! 这素一个在仿真的RCC电路,示波器上绿色的是集电极电流红色的是发射极电流。窝萌都知道发射姬电流素集电极电流和基极电流之和,所以讲道理发射极电流一定比集电极略大。可仿真结果刷了三观,Q1集电极电流一部分流经基极,然后流经Q2的C->E。

笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的