过来人教你如何系统学STM32

更新时间:2023-06-20 06:41:30 阅读: 评论:0

过来⼈教你如何系统学STM32
不要去学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、封装、抽象的意义。
雾霾对于这个话题,⽼司机筒⼦们也有⾃⼰的看法~
icecut:
1.使⽤STM32 是因为功能⽐ avr 好,各种资源⽐较多,所以选 STM32F103,那时候芯⽚还没这么多.还是⽤寄存器开发的时代。
2. 后来,开发板越来越多,开始切换成使⽤官⽅库的时代的确⼤⼤提⾼了⽣产⼒。但是很多⼈⽐较保守,不愿意⽤库.各种理由去让⾃⼰使⽤
寄存器。例如:性能差, 有 bug, 代码量太⼤, 把控不好…纵然这些困难存在还是让⼀些初学者尝到了甜头,底层不⽤学的太好也可以开发了。
3. ARM 官⽅也开始推这种通⽤库了。⽽此时st发现⼀剑⾛天涯的⽅法的确有很多弊端,开始了stmcubemx 的推⼴。软件会根据你的配
置和芯⽚,⽣成轻量级的代码,代码量⼩很多,并且有推荐freertos,以及闭源的 ui 库⽀持,做为⼀个多年的软件开发者,发现新的设计的确很好。但是,给⼈的要求会更多,⽐如⾃动⽣成代码,就要求你写的代码在固定位置,这样才不会被覆盖.如果你想发挥芯⽚的最⼤性能,软件的枷锁还是有⼀些的。当然,对于这种资深应⽤,⾃⼰也能管理好代码框架。
4. ST芯⽚的遍地开花,软件上配合 STM32cubeMx 的开发利器,轻松⽣成⼀个好⽤的⼯程并且开发好合适的代码。⼤⼤缩短调试的⼯作
量,当然,带 os 和 no os 的 开发还有很多差距,如果你想⽤ no os 的代码,搬过来,直接死路⼀条…我曾经拿着很⾼的⼯资给公司⽤这种⽅法,轻松的⼯作。
5. 最近在做互联⽹,所以,有时候还是⼿痒痒,还想弄 ST 的芯⽚玩玩…
菜鸟同学:
单⽚机本⾝没啥好折腾的,重点还是软件架构,针对项⽬设计软件,深度研究⼀种单⽚机,其他单⽚机都⼤同⼩异,⼤多数菜鸟都把时间荒废在单⽚机本⾝应⽤上,然后会⼏个外设就说的很简单怎么样,这个就是为什么现在单⽚机开发⼈员混杂的原因,都认为很简单,但是⼤部分都是蜻蜓点⽔,让其开发个项⽬试试,简直惨不忍睹,如果让其换⼀个芯⽚,这货估计就要折腾⼀个星期来熟悉芯⽚,所以⼤部分看到如此提问的我都不好意思回答。
秋天的文章lxyppc:
刚开始发现⼀款⽐较有意思的产品,主控⽤的是avr,把⾥⾯的代码反编译之后就想抄了,仔细想想要是还⽤avr很快也会被别⼈给抄去,这个时候发现了stm32这个⽚⼦,还带USB,于是乎就把反编译出来的代码移植到了stm32上,把通信接⼝由uart改成USB。
江枫渔⽕:
说句公道话:花⼀个星期或者更多时间熟悉芯⽚很正常。每个芯⽚公司的芯⽚还是有风格和使⽤上的差异。实际⽤⼀个不曾惯⽤的芯⽚的时候,都是对着数据⼿册上寄存器写的。
楼主后⾯的话说起库和寄存器开发⽅式了,恐怕⼜引起⼀阵论战。不过我只是说说⾃⼰的感受,先声明,我没怎么⽤STM32开发过东西。
我⽤ATMEL的芯⽚,⽤寄存器操作⽅式。我不可能⽤官⽅库。
但我可以将⽤寄存器写的功能进⾏封装成函数或模块。
冰零分⼦:
1.⾸先了解下芯⽚架构,看看这个芯⽚都能⼲什么事。
2.然后跟视频或教程通看⼀遍,了解下实现⼀个功能⼤致需要的步骤。
3.其次选⼀个项⽬直接实践,只要知道⼤致步骤,库函数配置⽹上⼀搜⼀⼤把,做项⽬的同时会解决各种各样的问题,这就是提⾼的过程,这个项⽬做完基本外设配置过程就熟悉了。
4.最后再做个项⽬尽量不去参考教程或⽹上的配置过程⾃⼰独⽴完成,加深印象。这个过程可以结合寄存器配置了解底层运作原理。
总的来说我的学习过程是先观其⼴再究其深。
弈涯:
刚开始接触STM32是正点原⼦的MiniSTM32,那时候在学校有的就是时间,当时就⽤寄存器将提供的所有例程,⾃⼰重新对照着DataSheet敲⼀次,根据⾃⼰的想法做⼀些改变。从C到编程思想再到STM32的了解,都有了较⼤的进步。现在在单位也在做STM32的编程,不过都不⽤寄存器了,但是感觉之前敲的例程还是对现在的⼯作有了很⼤的帮助。觉得吧,还是得多动⼿,基础的东西还是得⾃⼰去完整的过⼀遍。
Larm1:
1. 刚开始使⽤寄存器配置时,感觉要看的⽂档,花的时间确实⽐较多;
2. 后来官⽅退出了固件库,刚开始使⽤的时候感觉⼜不踏实,后来习惯了,省了很多的时间;
3. 现在都是直接找官⽹的相关功能外设代码直接测试、调试,不懂得才去看⽂档,时间长了觉得对硬件资源都⽣疏了许多;
广播体操第九套4. StmCube由于没有带系统,没怎么使⽤过;
5. 以后的路还长着呢…
shizaigaole:
和学其他单⽚机⼀样:
1. 买块开发版,熟悉编译,下载环境;
2. 写个跑马灯,⾃⼰感受⼀下;
3. 把STM32的中断,尤其是定时中断搞清楚;
4. 作为硬件应⽤来说,⼀定还要仔细看看IO引脚相关电⽓⽅⾯的参数。
到这⼀步就基本⼊门了。
但是要熟练使⽤STM32,还要踏踏实实的把STM32的⽂档⼿册读⼀遍。
然后学习编译器⾃带的例程,把这些例程精简以后移植到⾃⼰得开发版上去跑⼀跑。
其实做⼏个模块后,就基本熟悉了。
以后要⽤的就再去啃⼿册和例程。
主爱如故歌谱shizaigaole:
说⽩了三句话:
1.熟悉编译下载环境;
2.啃⼿册;
3.研习官⽅例程。
feilusia:
这是我⾃⼰的学习路线:连曦
1、51学习寄存器操作(⽹上资料⼤把,不局限谁的资料)
2、STM8学习寄存器和库操作(看风驰电⼦的资料)
3、STM32学习寄存器和库操作(看正点原⼦的资料)
谷草转氨酶高4、CC2541学习协议栈(看amo的资料、看我写的资料)
5、安卓⼊门学习(看《第⼀⾏代码》)………………(⽬前我所处阶段)
6、安卓蓝⽛学习(未知)
ywlzh:
哈哈哈 我路过,也说说吧,初学STM32,我也是从8位,16位单⽚机⾛过来的,学习的第⼀步,就是点亮个灯。有⼈是只管点亮就⾏了,有⼈是会继续深究为什么会点亮。
⽬的是⼀样的,但有⼈是⾛个过场,有⼈能举⼀反三。
学习交流群:864588072

本文发布于:2023-06-20 06:41:30,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1046612.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:寄存器   代码   开发   配置
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图