当前位置: 主页 > 建站知识 > 软件开发

零基础学习软件开发4个月-零基础学习前端开发需要学习什么

发布时间:2023-01-24 14:03   浏览次数:次   作者:佚名

a1ec90c4e243525385477915d19fdc6b.png

为什么开始考虑嵌入式开发?

过去五年,从云计算、大数据到机器学习、AI,各种新潮的技术概念层出不穷。

作为一个好奇的软件程序员,每当一个技术概念流行时,我都会凑热闹。

但是,在我的技术栈中,所有开发的软件都需要PC和手机进行人机交互。

怎么破? 搞嵌入式开发!

几年前,一位从事嵌入式开发的朋友给我介绍了嵌入式开发的知识。 由于一直忙于工作,并没有真正认真地接触过它。 带来新机遇?

选择STM32

一开始,朋友推荐树莓派作为我入门的开发板。

Raspberry Pi 可以安装操作系统。 价格适中,功能齐全。 它几乎是一台性能低下的小型计算机。 熟悉各种管脚功能,玩转常用传感器设备,非常方便。 您还可以非常便宜地构建 Linux 操作系统。 ,非常适合编程初学者搭建Linux开发环境。

但是学习不到真正的嵌入式开发知识。 与PC相比,它非常便宜,但是对于嵌入式产品来说,它的功耗、体积和价格都太高了。

向朋友请教后,决定选择真正的单片机开发板来学习嵌入式开发。

在网上搜索资料,得知目前流行的单片机有

其中我选择了STM32。 原因如下:

在技​​术论坛上看到,51虽然经典,但确实有点落伍了。 技术指标和功能不如STM32。 STM32性价比高,功能多,但价格还是很便宜的。 很便宜。 有足够的数据。 不过也看到有人批评资料太复杂,因为STM32确实提供了很多功能,学习内容自然就多了。 比如有5个clock,比51复杂。完整的IDE和library。 到此为止,这是我认为STM32最方便的地方,也是我能够零基础真正上手的原因。 提供官方基于Eclipse的IDE和HAL硬件抽象库(C语言)。 在没有学过单片机原理的前提下,可以通过看HAL库做一些简单的实验。 (要知道,在大多数51单片机教程中,你需要学习一点寄存器知识和汇编语言知识,才能真正做到)。 大多数单片机的开发环境在windows下很方便,但是在OSX下好用的IDE和调试软件很少,不过ST官方提供了跨平台的一体机开发工具。动手

访问ST公司的官方网站。

顺便说一句,MCU的更新速度没有软件领域快,所以网上的技术资料没有软件多,更新速度也不及时,不过正好ST更新了不少这两年的内容比较多,比如STM32CubeMX、STM32CubeProgrammer、STM32CubeIDE介绍的比较少。 ST公司还封装了HAL库(硬件抽象库),将对寄存器的操作封装成简单易用的函数,所以建议大家尝试通过官网查资料。

可见ST的产品很多,32位微处理器只是其中之一。 STM32是ST的32位微处理器(Microprocessor)。

第一步是下载IDE

直接在ST官网上方的搜索框中搜索stm32cubeIDE

a0a1c80ae58a7af2abbc2ac6912614d6.png

STM32CubeIDE 是一款一体式多操作系统开发工具,是 STM32Cube 软件生态系统的一部分。

STM32CubeIDE是一款基于ECLIPSE™/CDT的多功能跨平台开发工具,是STM32Cube软件系统的一部分。

0e300cc139090b65b01a0410e5834534.png

在学习阶段,只用STM32CubeIDE就够了,里面有配置工具和调试工具。

第二步选择开发板

与软件开发不同的是,除了电脑,我们还需要购买单片机。 但是单片机是不能直接用来学习的,需要购买一些简单功能和引出脚的单片机开发板。

可以直接在万能宝上搜索STM32开发板,可以看到很多不同型号和价格的开发板。 接下来怎么选择?

单片机本身的价格很便宜,只有几元到十几元,但是开发板的价格差距很大,从几元到几十元甚至几百元不等。 价格差异主要是开发板的外围功能不同。 板子多,接口多,所以价格也高,但我们一开始可能用不上。 作为入门,我选择了最小的系统板。

最小的系统板只包含一些基本的接口和管脚零基础学习软件开发4个月,体积小,价格便宜。

不过最小系统板有几种,它们的区别主要在于STM32微处理器的型号。

看官网上的图片

0e9fb66b9e903e39446bac0b160a5b50.png

fc86c8d7917a5ec4278ff271f53132da.png

从图中可以看出,ST公司根据性能和用途将处理器分为很多型号,其中F0和F1系列更适合入门学习,这也是STM32开发板F0和F1较多的原因某宝上F1。 其中以F103C8T6型号最多,因为它的性能和功能足够丰富,可以用来学习。 其中一款代号为“BluePill”的开发板非常好用,价格也便宜。

BluePill开发板是这样的,大家对比一下买吧,价格12-22不等(新手推荐买带焊脚的):

2c702645430630f87e28963a59b752f4.png

买买买,建议买2-3件。 根据我的经验,买到有问题的板子的几率很小。 有2-3个板。 如果发现有疑问,可以换一个试试,看看是不是我自己的问题,还是板子的问题,而且作为新手,手头有两三块备用板子,可以放心大胆的玩,不怕玩不好,学习更有效率。

第三步,购买配件

除了开发板,我们还需要购买一些设备进行调试和开发。 学习的时候完全不懂,身边也没有人指导。 买板子的时候很迷茫,怎么用,然后就可以用配件一点一点的做实验。

必要配件:

ST-Link V2 烧录程序:将写好的程序安装到MCU工具中。 面包板:方便连接电路进行实验。 一般安卓手机充电器和数据线即可)

可选配件(初学者可能不会用,但如果想更深入,迟早要用到):

各种传感器:除了控制开发板的小灯,用传感器做实验也是很有意思的。 发光二极管:类似于传感器的作用,是为了方便实验。电阻:很多发光二极管的额定电压和电流都很低,需要组合电阻。 USB TTL传输:另一种编程方式。 另外,在电脑上进行串口调试时,在编程的第四步中会用到焊接设备。

设备配置齐全后,就可以开始第一个小实验了。

以BluePill开发板为例,首先连接ST-Link V2,连接方法很简单,开发板上的TX连接到ST-Link上的RX,开发板上的RX连接到ST-Link上的TX,开发板上的Gnd接ST-Link的Gnd,Vcc接Vcc,然后插到电脑USB口。

a2abe070ec0eba29dff353ede416dcf3.png

打开STM32CubeIDE,新建工程,导航上会出现一些配置选项。

Eclipse部分我就不细说了,主要说一下STM32库的选择。

不同类型的处理器具有不同的库和配置。 因此,STM32CubeIDE在新建工程前,会要求选择MCU型号,在搜索框中输入对应的MCU型号,然后在列表中选择OK。

9fb7d139395c3b8389b13a724a8cbdfd.png

236d271b1d26cc357697b54121b1339f.png

之后,IDE 会用相应的库初始化项目。

项目创建完成后,点击左侧文件窗口中的.ioc文件

bee2ca3443103e52279d3f55a1e0caa1.png

这个文件非常重要。 在ST推出CubeMX之前,做初始化非常麻烦。 任何管脚、配置时钟、中断使能、串口配置等都需要编写初始化代码,现在CubeMX把这些工作都变成了可视化配置,CubeMX的这个功能集成在了CubeIDE中。

68754d9569355b46915cf62048619b22.png

ed75f9318071c2ec825bab0fec37a3e1.png

通过可视化配置,STM32CubeIDE生成标准的初始化代码,类似下图

ce86bfcb1602971745f8834b31be29d7.png

279ed6973b5779424df037888873ee8f.png

在生成的main.c文件中,可以看到很多注释。 请注意,这些注释并非多余,它们都是有用的。 为什么? 因为,修改.ioc文件会提示是否重新生成main.c文件。 一般必须重新生成,否则修改后的配置不会生效,那么代码之前已经写在main.c中了怎么办? 它会被覆盖吗?除非你的代码是用

/* USER CODE BEGIN xxxxx */
/* USER CODE END xxxxxx */

Between,所有不在 USER CODE BEGIN 和 END 之间的代码都将被覆盖。

STM32CubeIDE生成的main.c留有很多地方可以写用户代码,通过注释引导大家写在正确的地方。

0ae2da4cd81e4bd0afd580155d1619e3.png

接下来,写一个简单的实验代码,让BluePill上的PinC13发光

首先打开ioc文件,配置pc13为输出引脚

7f23a743bff74d8d2bc448bdb91bff14.png

保存配置,重新生成main.c文件

然后在主循环中添加代码,

while (1)
  {
    /* USER CODE END WHILE */
    /* USER CODE BEGIN 3 */
        //设置C组13引脚为低电平
        HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
        //延时200ms
        HAL_Delay(200);
        //设置C组13引脚为高电平
        HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);
        //延时200ms
        HAL_Delay(200);
  }
  /* USER CODE END 3 */

OK,一个简单的flash程序就完成了。

第五步编程调试

还记得用ST-link访问并插到电脑上吗? 很快就会用到。

打开调试配置

757a2ab473451307acacb7afc9600727.png

刚才介绍的是SWD接线方式,所以这里选择SWD接口

6bf39f51c912220f89157a92201014cb.png

接线正常后,点击Debug按钮,程序会自动烧写到开发板的单片机中运行。

这时,你应该能看到BluePill上的小绿色在快速闪烁。

至此,介绍也差不多结束了零基础学习软件开发4个月,但是单片机的知识还是很复杂的。 与这篇文章相比,这篇文章很肤浅,是冰山一角。 我只是从一个软件程序员的角度来介绍一下。 我想通过这篇文章让我想学习STM32单片机开发的新同学看到了一个比较完整的从0到第一个闪灯实验的过程,并在此基础上概述了单片机的大纲学习和发展。

单片机的开发需要耐心学习很多基础知识。 有兴趣的同学可以留言一起学习!