stm32难吗

从何入门请大神指点? 

请先 登录 后评论

2 个回答

Ollie

入门其实不难的, 没学过51也没关系, 我就是大一开始学stm32的, 现在想配个外设什么也不难, 操作系统就比较深入了.

你照着官方例程, 自己把程序敲上去观察结果, 有示波器最好不过了, 调通信的时候很好懂. 等能运行例程了, 你再改改程序的配置, 照着reference了解不同模式的不同作用, 很快就懂了

另外选择一本好书很重要,选一本开发案例书看看吧

请先 登录 后评论
Celestine

不是说难不难,关键是看方法。

不知道楼主是什么专业的。所以我整体地说一下。

首先你要知道计算机的基本原理。无非就是处理器、控制器、存储器(包括存代码的ROM和存数据的RAM)。然后了解图灵机的基本模型,现在计算机都是基于这个,即取指令、执行指令的顺序模式。好,现在你已经知道计算机是么回事了,嵌入式系统和通用PC都是这个模型。

然后你想学嵌入式,入手一个板子动动手,这样很好,但是你一看stm32的资料,傻了,那引脚数量,那Port数(好一点的开发板10组左右的Port,多达80多个引脚),然后就不知道从哪儿弄起了。有人说没学过51也无所谓,错倒是没错,但是不适合密集恐惧症= =。首先学会基本的IO口操作,诶,一组端口被接在LED上了,好,弄个延时(最简单的while延时),循环移位端口寄存器,流水灯诶,好玩,有意思。

发现IO操作如此简单,简直不够玩嘛,这个时候去学习定时器,stm32定时器通过它给的库函数来设置,照着例程,学着做就行了。然后你学会精确定时了。配合你学的IO操作,对着开发板的电路和相应的芯片资料,试着驱动一个SEG管显示器,然后再结合定时器的精确定时,你就可以做一个精确的数字时钟了!

然后想再做一点高深的,学AD和DA转换,发现AD可以用来测量电压,太棒了,我的板子就是电压表,再也不用带着笨重的电压表了。然后DA可以产生特定的波形,用最简单的查表法,照着例程做,用示波器一测,成了。当然你有兴趣,做一个基于查表法的音乐播放器都可以,注意用GoldWave之类的软件解码出wav文件中的电平采样值,然后DA端口是不能直接驱动扬声器的,去查相应的运放电路,一般是LM386。

然后你想玩一点更牛掰的模块,神马蓝牙啊、wifi啊、NAND Flash啊,你就需要一点总线和时序的知识了,去翻阅嵌入式相关的书籍,虽然很无聊难受,但至少你要理解诸如PCI(用得不多)、I2C、RS232的接口和时序,后面两个非常常用,建议熟记,然后动手能力强了自己写一个时序库,方便重用。有了时序的知识,再猛啃芯片/模块的资料,就知道该怎么去扩展了。

再想玩大的,我的板子要同时运行多个模块,要足够强大,就可以试着学一学嵌入式操作系统了,搞个移植什么的了。

以上只是说了大体学习思路,如果你觉得有困难,学会查资料是很重要的,多用google,偶尔用百度,csdn上的代码一般比较好(但也不一定),一般来说官方的examples是相当好的学习资料,虽然注释都是英文,但是搞技术的,不会点英文怎么行,不说查资料了,代码规范、变量命名总要英文吧。

个人觉得还是应该从简单的51开始,高级一点的板子都去调用库函数了,只有51是直接操作底层的寄存器,这样也有助于理解单片机的原理,至少定时器是怎么设定的,如何重装的,有哪些工作方式你要明白吧。然后开发模式也相对比较重要,推荐《时间触发嵌入式系统设计模式——基于8051》一书,不要觉得你学会了A模块和B模块就可以很简单地把AB同时写在板子上了,naive!然后你会发现好多教材一教接口的时候往往假定单片机只处理这一个模块而忽略了对别的模块的并行处理,不要再写delayms这样low逼的代码了啊(╯‵□′)╯︵┻━┻。注意代码规范(我假定你没有写代码的经验),多看别人的代码,看别人代码是怎么命名的,一般嵌入式开发采用下划线式的命名,即Modulename_Action,如LED_display,I2C_Read(),I2C_Write()。要不然你今天写的代码,下个星期甚至明天就看不懂了,你会很难受的= =。

请先 登录 后评论
  • 3 关注
  • 0 收藏,1891 浏览
  • Mabel 提出于 2018-01-18 02:43

热门话题更多