发布时间:2018-08-29 阅读量:2898 来源: 发布人:
今天小编从社区问答中无意中看到有网友提问:“ STM32难吗?”在现在的MCU使用量中,STM32绝对是翘楚,所以学习它的人也比较多。因为它是在51单片机的基础上增加了一些外设,相比51还是有一定的难度。针对这点,很多网友也是各有说辞,到底难不难,我们来看看大家怎么说?
问题来源》》http://ask.52solution.com/question/36
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()。要不然你今天写的代码,下个星期甚至明天就看不懂了,你会很难受的= =。
针对他们的讨论,小编也去搜罗了一些STM32的入门学习技巧,希望给初学者一些参考。
1、STM32的开发是基于C语言的,当然也使用了一些简单的汇编(启动文件)语言,汇编我们不需要去了解很多,熟悉几条简单的指令就行。C语言的话就需要做到熟练掌握了,因为STM32的开发库使用了大量的结构体、指针等知识,所以要想学好STM32,学好C语言是第一个前提!
2、掌握了C语言这个前提以后,就可以开始STM32的学习了,STM32毕竟也是个MCU,也就是单片机,是相对于51单片机更复杂一点的单片机,所以就要了解单片机的工作原理,知道MCU是怎么工作的,知道MCU内部RAM ROM CPU等等是如何协调工作的。
3、一个完整的项目不仅仅只有MCU,还有复杂的外围电路,比如LED、蜂鸣器、LCD、各种传感器电路、电源电路等等,所以还要熟练掌握基础的电路知识。例如三极管、MOS管、二极管等等器件,以及三极管搭建的开关电路、放大电路等等。
4、自学STM32,一定要先易后难,不要着急做项目,先把MCU的基本外设熟练掌握,再去做项目。可以先把MCU简单的外设实验做一遍,比如:STM32启动文件、GPIO、USART、IIC、SPI、RTC、DMA、ADC、定时器等,先把这些简单的外设熟练掌握,再去学习SDIO、ETH以太网、CAN等等复杂的外设。其实在掌握了简单的外设之后,就可以先去做些项目锻炼一下,在实践中提升自己。
最后,我想说的是,学习技术是个漫长的过程,况且技术也在不断的发展进步,我们一定要保持一颗终身学习的心态,一点点循序渐进的学习,这样才会长久的学习下去。
无源晶振与有源晶振是电子系统中两种根本性的时钟元件,其核心区别在于是否内置振荡电路。晶振结构上的本质差异,直接决定了两者在应用场景、设计复杂度和成本上的不同。
RTC(实时时钟)电路广泛采用音叉型32.768kHz晶振作为时基源,但其频率稳定性对温度变化极为敏感。温度偏离常温基准(通常为25℃)时,频率会产生显著漂移,且偏离越远漂移越大。
有源晶振作为晶振的核心类别,凭借其内部集成振荡电路的独特设计,无需依赖外部电路即可独立工作,在电子设备中扮演着关键角色。本文将系统解析有源晶振的核心参数、电路设计及引脚接法,重点阐述其频率稳定度、老化率等关键指标,并结合实际电路图与引脚定义,帮助大家全面掌握有源晶振的应用要点,避免因接线错误导致器件失效。
晶振老化是影响其长期频率稳定性的核心因素,主要表现为输出频率随时间的缓慢漂移。无论是晶体谐振器还是晶体振荡器,在生产过程中均需经过针对性的防老化处理,但二者的工艺路径与耗时存在显著差异。
在现代汽车行业中,HUD平视显示系统正日益成为驾驶员的得力助手,为驾驶员提供实时导航、车辆信息和警示等功能,使驾驶更加安全和便捷。在HUD平视显示系统中,高精度的晶振是确保系统稳定运行的关键要素。YSX321SL是一款优质的3225无源晶振,拥有多项卓越特性,使其成为HUD平视显示系统的首选。