技术文档

stc单片机编程语言 stm32单片机零基础怎么入门,用什么语言编程?

小编 2024-11-25 技术文档 23 0

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供电,指对...

猜你喜欢