不要去学STM32。
我不是说STM32欠好,而是这种为了学习单片机而去学习单片机的思路不对。
你问,怎么体系地入门学习stm32?
自身便是一个过错的问题。假设你会运用8051 , 会写C言语,那么STM32自身并不需求故意的学习。
你要考虑的是, 我可以用STM32完成什么?
为什么运用STM32而不是8051? 是由于51的频率太低,无法满意核算需求?是51的管脚太少,无法满意很多外设的IO? 是51的功耗太大,电池挺不住?是51的功用太弱,而你要运用SPI、I2C、ADC、DMA? 是51的内存太小而你要存储的东西太多?
当你需求运用STM32某些功用,而51完成不了的时分, 那STM32天然不需求学习,你会直接去寻觅STM32某方面的运用方法。比方要用spi协议的网卡、要运用串口通讯、要运用rtos等等…
关于寄存器vs库
我的观念是:当你debug的时分寄存器很重要,当你需求了解芯片作业细节的时分寄存器很重要,当你开发的时分寄存器不重要。假如你没有遇到非直接装备寄存器不行的状况,那么就不要直接面向寄存器层面开发, 由于面向寄存器开发取得的优点往往抵消不掉这样做的害处。 面向寄存器开发程序功率高,可是你需求为了进步0.01%的功率糟蹋10倍、甚至100倍的时刻。 已然ST公司现已给你供给了好用的库,没有道理要重新造轮子。
那什么时分有必要直接操控寄存器?
榜首、某一个代码块调用十分频频。比方你有一个巨大的for循环,那么这个for循环中的每一步操作都应该被慎重的优化,优化杰出就可以取得更好的功能。这种状况一般常见于图画处理相关的代码中。
第二、库函数有bug。这个遇到的概率十分低,但的确存在。不过一般来说假如mcu表现出意料之外的行为, 你首要要想的应该是你的代码写的有bug,而不是库函数有bug。 假如库函数真的有bug,你去google搜一下,相信你肯定不是榜首个踩坑的人。
关于传统的电子工程师来讲,运用库编程可能会感到有一点虚,感觉没有兢兢业业的感觉。 但假如你写过web、写过服务器端代码、写过桌面端代码的话,你就一定会了解API、封装、笼统的含义。