历史上的今天
返回首页

历史上的今天

今天是:2025年12月20日(星期六)

2022年12月20日 | 这样学习STM32单片机,从菜鸟到牛人很简单!

2022-12-20 来源:zhihu

我想说,为了学习单片机而去学习单片机的思路不对。


你问,如何系统地入门学习stm32呢?应该如何零基础学习电子产品设计呢?


这本身就是一个错误的问题。假如你会使用8051 , 会写C语言,那么STM32本身并不需要刻意的学习。


你要考虑的是, 我可以用STM32实现什么?创客学院带你走进stm32世界


为什么使用STM32而不是8051?是因为51的频率太低,无法满足计算需求?是51的管脚太少,无法满足众多外设的IO?是51的功耗太大,电池挺不住?是51的功能太弱,而你要使用SPI、I2C、ADC、DMA?是51的内存太小而你要存储的东西太多?


当你需要使用STM32某些功能,而51实现不了的时候, 那STM32自然不需要学习,你会直接去寻找STM32某方面的使用方法。比如要用spi协议的网卡、要使用串口通信、要使用rtos等等...


从菜鸟到牛人的学习步骤


我们假定大家已经对STM32的书籍或者文档有一定的理解。如不理解,请立即阅读STM32的文档,以获取最基本的知识点。


英文好的同学,请不要以为你很牛,可以只看英文文档。毕竟你是中国人,你最熟悉的,理解最好的还是中文。看英文的速度还是比看中文慢一些,我们要的是最短的时间,而不是追求短时间内记住所有细节。当然,如果是一篇论文,建议看英文原版还是有好处的。


STM32处理器进入国内市场时候,ST官方(或者第三方)的推广工作做得非常好。翻译了大量的英文文档,迎合了国内的很多工程师的思维。


学习的时候,关注两个比较重要的文档:《STM32F103xxx参考手册》,《STM32固件库使用手册》。这是针对有充足的时间、精力的同学,建议去下载需要查阅的文档,以获取更多信息。


阅读《STM32F103xxx参考手册》,一定要注意,不需要全部阅读——没有时间的。建议选读,但是前几章必读。存储器和总线架构、电源控制、备份寄存器、复位和时钟控制,通用和复用功能I/O,中断和时间等等前几章一定要花时间阅读。


后面章节,讲述的是具体的功能模块设计。如果我们用到哪个模块,就可以去阅读哪个模块。比如在使用AD的时候,就需要去阅读第10章ADC。其他不举例。相信每个初学者都有自己的研究方向和判断。


阅读《STM32固件库使用手册》,主要是为了简化编程。STM32给我们提供了一个非常好的固件函数库,我们只要去调用即可。当然,我们也可以不去碰这些固件库——传说使用它会使得代码效率变低,是有道理的。网络上也出现了很多网友自己写的代码,没有使用带固件库函数。如何取舍,在于您的选择。


这里我主要强调的是,阅读《STM32固件库使用手册》的时候,前面几章也是必须阅读的。比如第一章文档和库规范中的命名规则,编码规则,这些都是需要注意的。


第二章是最关键的,希望大家熟读。第二章描述了固件库的架构,我们如何去使用固件库的步骤等。有了第二章的基础,我们就可以借助固件库写出自己的代码了。


第四章开始之后,就可以根据大家的需要来阅读。实际上,后续的章节,都是描述某个模块有什么什么函数,每个函数如何使用等。


关于后面的章节,建议对GPIO库函数、中断部分库函数、复位和时钟设置的库函数要比较熟悉,因为平时经常会用到。


以上提到的这两个文档,已经足够您看的了,呵呵。希望您能从中获取大量的STM32基础知识。


设定一个不错的两周入门计划


(1)这里所谓的“入门”,指的是能理解并掌握一些常用的STM32外设,真正想掌握一款处理器,两周根本说明不了什么问题。只能说,你已经有所了解了。但是,这对我们初学者来说已经足够了。


(2)这里所谓的“两周”,根据每个人的时间安排不同而不同。


如果您每天有充足的时间学习,那么可以规定自己尽快地能独立地进行简单的STM32开发。


如果您每天只有业余时间来学习STM32,建议根据您的具体情况安排时间。毕竟计划时间如果安排太紧,反而收不到良好的效果,只能进入恶性循环,这是我们要避免的。


但是建议,不管您有无充足的时间,都必须给自己做一个计划!!


这里列出一个思路,仅供参考。


步骤一,安装完STM32学习的软件,比如J-Link、Keilfor ARM(MDK)、ISP(如果需要从串口下载的话)。这些软件安装的详细步骤,可以参考我们推出的相应教程进行。


步骤二,挑选部分例程的HEX,比如LED灯的例程HEX文件,下载到芯达STM32开发板中,观察两个LED灯的闪烁情况。这部分的操作,可以参考我们推出的相应的教程进行。


实际上,以上两个步骤,是为了熟悉要使用的工具软件而已。属于找感觉的阶段。其实我们还没开始STM32的学习呢!


步骤三,准备几个常用的文档,比如《STM32的用户手册》,《STM32固件库使用手册》等文档。用于平时查阅。这些文档,在光盘中的芯片手册目录中均可找到。


步骤四,开始查看例程的编写,看看例程是如何写的,自己可否修改下例程,达到自己想要的效果呢?


步骤五,Ucos-II的移植,是否需要试一下?


恭喜你,至此,你已经可以自如进行独立的开发了。最后一步,给自己一个目标(项目),把它实现出来!


再次强调,以上只是一个学习STM32的思路,供大家参考。下面列出了前面关键的步骤,希望大家能尽快入门。


第1步:熟悉调试软件


对初学者来说,我们至少需要安装两个软件:J-Link驱动软件、MDK(就是原来的Keil)软件。


这两个软件在安装软件的过程可以查看神舟开发板用户手册,这里不再重复,大家可以参考我们推出的教程《如何安装J-Link驱动软件》以及《如何安装MDK(Keil)软件》。


如何验证自己已经熟悉调试软件的操作了呢?很简单,神舟STM32开发板光盘里附带了很多HEX格式的文件,可以选择一些HEX文件,来观察运行结果。


该步骤要达到的目标:熟悉调试软件,如烧写HEX出现问题,可简单判别问题所在,并独立解决。


第2步:GPIO编程


这是第一次接触固件库的编程,一定要硬着头皮去了解固件库。建议大家尽量去用固件库。而不是避开固件库自己写代码——这样只能在学习中才会发生。实际的项目中,代码成百上千个,如何一个一个自己写?调用固件库中的函数来完成,才是王者之道。


GPIO本身的编程实际上很简单:


1、设置GPIO口的引脚为输入或者输出模式。我们在进行点灯代码的时候,一般设置为推挽输出模式。


2、操作寄存器,往寄存器里置1或者清零操作——这个步骤,固件库已经提供了专门的GPIO_SetBits函数和GPIO_ResetBits函数,我们只要去调用即可实现对IO口的置1和清零。


3、实现多种花样的LED闪动,使得自己熟悉GPIO的编程过程。


该步骤要达到的目标:熟悉调试软件,如烧写HEX出现问题,可简单判别问题所在,并独立解决。


第3步:开始全新的STM32深入研究


经过以上调试软件的熟悉和GPIO口的编程调试后,相信您已经对STM32有一定的了解。


至少知道如何利用STM32的固件库去写一个代码。在这个阶段,将要接触到串口编程、TFT液晶屏驱动编程、定时器编程、串行外设接口SPI编程、存储器编程、SD卡与文件系统移植、USB读写、UCOS移植等,有精力还可以研究其他外设。


推荐阅读

史海拾趣

Astro Industries Inc公司的发展小趣事

随着国内市场的饱和,Astro Industries Inc开始将目光投向海外市场。公司制定了详细的国际化战略,通过参加国际展览、建立海外销售网络等方式,积极开拓国际市场。同时,公司还针对不同国家和地区的市场需求,推出了定制化的产品,满足了不同客户的特殊需求。这些举措使得Astro Industries Inc在国际市场上也取得了不俗的成绩。

ETA-USA公司的发展小趣事

ETA-USA一直注重技术创新和研发实力的提升。公司拥有一支高素质的研发团队和先进的研发设施,不断推出具有竞争力的新产品和解决方案。同时,ETA-USA还积极与高校、科研机构等合作,共同推动电子技术的创新和发展。

Cypress(赛普拉斯)公司的发展小趣事

Cypress在USB技术领域取得了显著的成就。自1996年开始深耕USB产品以来,Cypress逐渐成为了USB领域内的领先者。公司推出的EZ-PD系列产品是业界第一个支持USB PD 3.0供电规范的解决方案,赢得了市场的广泛认可。此外,Cypress还不断推出新的USB产品和技术,推动了USB技术的不断发展和创新。

EXXELIA Group公司的发展小趣事

近年来,随着汽车电子、物联网等应用领域的快速发展,Cypress也制定了新的发展战略。公司将以MCU+存储+USB为核心产品,为汽车电子、物联网等应用领域提供完整的嵌入式系统解决方案。为了实现这一目标,Cypress将继续加大研发投入,推动技术创新和产品升级。同时,公司还将加强与国际合作伙伴的合作,共同开拓新的市场和应用领域。

Boyd Corporation公司的发展小趣事

随着公司规模的扩大和市场需求的增长,Boyd Corporation积极拓展全球业务版图。公司在多个国家和地区设立了生产基地和研发中心,以便更好地服务全球客户。通过全球化布局,Boyd Corporation不仅提升了生产效率,还加强了与全球客户的合作关系,进一步巩固了其在电子行业的领导地位。

Cadeka公司的发展小趣事

近年来,随着电子行业的快速变革和新兴技术的不断涌现,Cadeka公司面临着前所未有的挑战。为了应对这些变革,公司及时调整发展战略,加大在新兴技术领域的投入。同时,公司还积极与合作伙伴开展合作,共同探索新的商业模式和市场机会。通过这些努力,Cadeka公司成功应对了行业变革带来的挑战,继续保持了在电子行业中的领先地位。

这些故事虽然是虚构的,但它们反映了电子行业发展的一些普遍规律和趋势。希望这些故事能够为您提供一些启发和参考。

问答坊 | AI 解惑

无线传输的解决办法

网由KL-W7523低功耗GPRS/GSM数据采集模块 生产厂商:昆仑海岸产地:北京品牌:关注指数:1555询价技术咨询打印 网由KL-W7523低功耗GPRS/GSM数据采集模块是标准KL-W7000模块的一款升级产品,它除了保留原有模块的一些基本功能外,最优越的特性表现 ...…

查看全部问答>

.out文件有未决的符号为什么也能运行?

一个简单程序: #include \"stdioLib.h\" int main() {    char a1[10];    char a2[10]=\"123456789\";    memcpy(a1,a2,10);    printf(a1);    return 1; } 编译生成 .out文件后 ...…

查看全部问答>

RAID组被破坏后,硬盘里的数据会丢失吗

比如我用2个硬盘建个RAID 0,现在我删除RAID 0配置,硬盘里的数据还在吗? 又比如我用2个硬盘建个RAID 0,我换掉其中一个硬盘,重建RAID 0,原硬盘的数据还在吗?…

查看全部问答>

版主,救火、、、备份数据无法保存

                                 在使用备份数据区域时,发现硬件复位和上电复位时,均无法保存备份数据,而时间是可以保存的,不知为题出在哪,可 ...…

查看全部问答>

STM32F103系列PLL有36M的吗?

                                 我的芯片明明是STM32F103VET6,可是怎么弄PLL最高输出44M,倍数再高一点就完蛋,为了RCC前前后后弄了差不多2天时间 ...…

查看全部问答>

ARM培训资料by英蓓特

ARM培训资料by英蓓特,仅供学习交流 [ 本帖最后由 zyc1 于 2011-4-21 22:19 编辑 ]…

查看全部问答>

有源滤波器 对运放的哪些参数有要求啊

本帖最后由 paulhyde 于 2014-9-15 08:53 编辑 有源滤波器 对运放的哪些参数有要求啊  …

查看全部问答>

【设计工具】赛灵思混合信号解决方案白皮书

赛灵思最新推出的业界领先的 28nm 7系列FPGA 相对前几代FPGA 系列而言,极大地丰富了集成模拟子系统的功能。7 系列的模拟子系统被命名为 XADC,内置两个独立的 12 位 1 MSPS 模数转换器 (ADC) 和一个 17 通道模拟多路复用器前端。通过将 XADC 与 FP ...…

查看全部问答>

嵌入式学习需知

           嵌入式系统几乎包括了生活中的所有电器设备,如掌上 PDA 、移动计算设备、电视机顶盒、手机上网、数字电视、多媒体、汽车、微波炉、数字相机、家庭自动化系统、电梯、空调、安全系统 ...…

查看全部问答>

STM32F107,UART发送错误数据

小弟初学STM32F以前玩过51单片机,现在搞这个对使用ST的库相对还不是很适应,按照教程创建了一个MDK工程,添加了V3.5的库,main里做了GPIO测试没有问题,但是使用UART却出了问题,我使用的是STM32F107VCT6,使用它的USART1端口重新映射到了PB6,PB7 ...…

查看全部问答>