STM32 学习指南:从 8051 到 STM32,你需要知道的一切

我不是说STM32不好,而是这种为了学习单片机而去学习单片机的思路不对。你问,如何系统地入门学习stm32?我的观点是:当你debug的时候寄存器很重要,当你需要理解芯片工作细节的时候寄存器很重要,当你开发的时候寄存器不重要。你首先要想的应该是你的代码写的有bug,而不是库函数有bug。

STM32 学习指南:从 8051 到 STM32,你需要知道的一切

不要学STM32,我不是说STM32不好,但是单纯为了学MCU而学MCU的想法是错误的。

你问,如何系统地入门学习stm32?

这道题是错的,如果你会用8051,会写C语言,那你就没必要刻意去学STM32了。

你需要考虑的是,我可以用 STM32 实现什么?

为什么要用STM32而不选8051?是因为51的主频太低,满足不了运算的需求?是因为51的引脚太少,满足不了众多外设的IO?是因为51太耗电,电池撑不住?是因为51的功能太弱,要用SPI,I2C,ADC,DMA?是因为51的内存太小,要存的东西太多?

当你需要使用STM32的某些功能,而51无法实现的时候,那么你就不需要学STM32了,直接去寻找STM32在某些方面的用处。比如需要使用SPI协议网卡,使用串口通信,使用R​​TOS等等……

关于寄存器与库

我的观点是:寄存器在你调试的时候很重要,在你需要了解芯片的工作细节的时候很重要,但是寄存器在你开发的时候并不重要。如果你没有遇到必须直接配置寄存器的情况,那么就不要直接在寄存器级别进行开发,因为面向寄存器开发的好处往往无法抵消这样做的坏处。面向寄存器的开发效率很高,但是你需要浪费10倍甚至100倍的时间才能提高0.01%的效率。既然ST已经为你提供了很好的库,就没有理由再重新发明轮子了。

那么什么时候我们必须直接控制寄存器?

首先,某个代码块被调用得非常频繁。例如,如果你有一个庞大的 for 循环,那么 for 循环中的每一步都应该仔细优化。好的优化可以实现更好的性能。这种情况在图像处理相关的代码中很常见。

第二,库函数有bug。这种情况遇到的概率很低,但确实存在。不过一般来说,如果MCU出现意外行为,你首先应该想到的是你的代码有bug,而不是库函数有bug。如果库函数真的有bug,去Google搜一下,相信你绝对不是第一个掉坑的人。

对于传统的电子工程师来说,使用库编程可能感觉有些空洞和不切实际。但如果你写过 Web、服务器端代码或桌面代码,你一定会明白 API、封装和抽象的含义。

单片机

树莓派 3B 和 Raspbian OS:帮助萌新了解必备基础知识

2024-5-30 2:03:19

单片机

农村常见的树莓如何种植?建园与支架设置是关键

2024-5-30 3:01:47

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索