stm32单片机零基础怎么入门,用什么语言编程?
我们随便在招聘平台搜”嵌入式开发”这个职位,看到很多职位都要求会STM32,为什么?
我个人也用了STM32单片机几年,感觉非常爽,后面做产品能用ST的基本不用别的。
主要原因有以下几点:
1. 对这个芯片比较熟悉了2. 比较稳定
3. 资源丰富,价格也合理(最近涨价除外)
4. 资料多,有问题能很快解决
5. 不用配置寄存器就能很轻松把外设开起来
其实除了STM32,STM8用着也很不错,虽然是用IAR开发环境,但开发方式都是调库,
大大缩短了产品开发周期。
一般做低功耗的产品,我都首选STM8L系列的单片机。
既然STM32的芯片市场需求这么大,作为开发者来说,想适应市场就必须去学习。
Stm32有人说简单,也有人说难,实际到底是怎么情况呢?
我个人感觉STM32还是比较简单的,就看你怎么学了,至少对于应用来说,很简单也方便。
如果你站在刨人祖坟的角度去学习,会很难!
如果你只想把它当工具用,学习会很简单。
在接触STM32之前,我已经有几个项目的经验了,虽然是用STC和NXP单片机。
但是单片机无非就是那么回事,配置寄存器控制外设,最后外设去控制电路实现产品的功能。
大概就是这么个原理,区别就是不同的单片机外设资源不同,以及配置方式不同。
有些单片机是需要自己手动去配置寄存器的,比如说51单片机,NXP(几年前是,现在不知道有没有提供库)。
有些单片机是直接提供了标准库给你调用,通过调用库函数就能把单片机外设开起来,典型的就是STM32。
这样就会产生一个问题。
如果你之前没接触过51单片机,一上来就干STM32,你很难去理解配置寄存器开外设的流程。
这样相当于给你的学习过程埋下一颗定时炸弹,随时都会爆,具体体现就是你每学一个知识点都会有很多搞不懂的地方,这就是基础知识缺失导致的。
所以,我一直要求的我学员,我不管你有多聪明,必须从51单片机开始学习。
而事实也证明,看似你直接从STM32是走了捷径,实际所花的时间比从51开始学习要多,理解也没那么深。
不管你是入门51还是STM32单片机,如果自学的话,最好是购买一块开发板。
然后对照着开发板配套的视频教程,每看完一个章节都会亲手做一个实验。
顺利的话,基本上半个月就能上手了。
单片机编程一般通过两种语言:
1. 汇编
2. C语言
现在汇编一般用得少,只有那些RAM和ROM非常小的单片机才会用汇编去开发。
大多数都是以C语言为主,所以我建议前期只学习C语言就可以了,我做了10年基本没用汇编开发过产品。
偶尔一些启动文件要用汇编改,比如说移植系统,修改堆栈大小。
这些都非常简单,直接搜一下相关指令看下什么意思就行了,没必要为此系统去学习汇编。
我当初根本没系统去学过STM32,都是有产品用到了,我就顺势买了个开发板(主要是要他们开启外设的例程),视频我都懒得看。
有例程以后,从代码基本上可以看得出来是什么意思,单片机都大同小异。
比如说配置IO口,我们先要把GPIO时钟打开,然后选择你要配置的引脚,设置输入还是输出模式,输出模式又分上拉、下拉、推挽、开漏等等。
最后就可以控制IO输出高低电平了,如果你有别的单片机基础,很快就能上手。
别人提供固件库给你,出发点就是不想让你浪费时间去理解芯片复杂的寄存器配置。
很多人学不会就是这里走了弯路,研究STM32数据手册去配置寄存器,几百上千个寄存器想看完不现实。
所以,学习STM32,方法很重要!
单片机引脚读写操作
自己总结下单片机引脚的用法。
使用单片机时肯定会用到单片机的IO引脚。以51单片机P1口为例。内部结构如图所示
当单片机进行写操作时,引脚锁存器(D触发器)CLK端接收有效电平,然后内部总线上需要写的数据就会通过D触发器传输到Q'。当写1时Q'为0,使MOSFET截止,因此外部引脚电平为1.当写0时Q'为1,MOSFET饱和导通,此时引脚可以看成接地,所以引脚为0。
如果对单片机IO口进行读操作。由图可以看出读操作包括读寄存器和读引脚。以前知道有这两种区别,但是从来没仔细区分过。从图中可以看出读寄存器时读寄存器上的三态缓冲器打开,Q端的值直接传到了内部总线上,而下面的读引脚三台缓冲器是高阻态,读引脚时则相反。
汇编语言中对读寄存器和读引脚做了一定的区别,但说实话我在看汇编代码时还是区分不清两者的区别。现在大家对单片机编程应该大部分采用的都是C语言,在我看来,C语言中已经极大的淡化了读寄存器还是读引脚的区别。
有些人说a=P1是读引脚(a是某个字符变量),P1=P1|0x00是读寄存器(可能是认为这里P1进行了一次逻辑运算,只有寄存器中的值才能进行逻辑运算),但我在用C语言时感觉用P1=P1|0x00也是读的引脚。也有些人说看经过编译器编译后的汇编代码才能分辩出两者的区别,不知道这里大家怎么看读引脚和读寄存器?
在读引脚时需要先向引脚锁存器中写1。因为如果引脚寄存器中是0的话会导通MOSFET,使外部端口一直是低电平,即使外面接的是高电平在读引脚的时候也读的是0。以前知道需要这样做,但读引脚的时候一直没写过1,发现读的也对,现在我觉得这样写不符合规范。
一般来说单片机在上电复位后默认引脚寄存器的值是1,这样一来关断了MOSFET,而我们在使用单片机的时候如果这个引脚作为输入,也不会让它变成一会儿输出一会儿输入,使得能够准确的读出外部端口的值。现在我在写程序时如果端口做为输入引脚,我会在初始化里对其写一次1。当然,以后就不用写了,因为写了一次1后没有其他的写操作,引脚锁存器中会一直保持这个值不变。当然,如果某个单片机引脚同时作为输出和输入引脚复用时,则必须在输出完成后变成输入前先向其写1,再读引脚的值。
相关问答
用 单片机STC 12C5410AD控制DAC0832输出方波,三角波,正弦波...用FOB写啊娱城亚洲版由于题目没有给出DAC0832的接口,本人将采用以下接口:DAC0832的CS引脚接单片机的P1.0口DAC0832的CLK引脚接单片机的P1.1口DAC08...
求 STC 89C52的 单片机 跑马灯C 语言 程序?STC89C52是常用的单片机芯片,以下是该型号单片机跑马灯的C语言程序示例,希望能对您有帮助:```c#includeSTC89C52是常用的单片机芯片,以下是该型号单片机跑...
怎么把程序输入 STC 80C52?STC的单片机没有STC80C52这个型号的,有STC89C52,有STC90C52。但不管什么型号,STC单片机,都需要用电脑的串口下载程序,即烧录程序。因现在的电脑都没有串口...
如何在keil4中添加 STC单片机 ?1.在Keil4中添加STC单片机是可行的。2.因为Keil4是一款集成开发环境(IDE),它支持多种单片机的开发,包括STC单片机。通过添加STC单片机的相关文件和配置,可...
如何将程序代码烧录进 STC单片机 ?1.需要将程序进行编译,生成xxx.hex文件。直接将程序写入单片机,单片机不会安装你的设计运行。2.某宝购买USB转TTL模块,并安装驱动。驱动安装成功后,在计算...
STC单片机 可以用232串口烧写程序么?STC的程序下载实际上就是串口下载,并不是直接通过USB进行的,而是很多电脑没有RS232串口,即使有串口也不如USB方便,因此才使用那种东西来下载的,我在实验室用...
stc 使用教程?学习单片机不需要专门的去学习过多的理论知识,简单的看下C语言能看懂简单的逻辑关系就好!电路知识的话现在主要都是写模块化的产品一般没有特别的需求,不需要...
怎么将程序代码烧录进 STC单片机 -ZOL问答硬件连接方法1:用电脑上的RS232串口,在开发板上接一个MAX232将232电平转为TTL电平后,接单片机的串口,这是传统串口通信方法,不过许多笔记本电脑已无RS232串口。...
stc单片机 如何读出里面的程序?STC单片机的程序是通过编译器编写出来的HEX文件,需要通过编程器将HEX文件下载到STC单片机的闪存中。如果你想读取STC单片机中的程序,需要使用专门的编程器,具...
stc 8g 单片机 程序烧录方法?方法如下:单片机板和转换板连线对应连接好,如发现无法通讯,可调整2、3的连线。1、地线----地线。2、TXD-----RXD。3、RXD-----TXD转换板由于PC供电,指对...