第1篇 资料下载、环境搭建
第一章 百问网视频体系及学习路线
1.1课程视频变化
2011-2020:百问网录制了10年的Linux视频。
2021:
1、首次进入单片机领域,发布单片机课程!
2、重新录制Linux课程,新芯片、新内核,新路线!站在更高的角度上实现单片机与Linux的统一:学习上统一起来!
1.2单片机学习路线
对于单片机的学习,百问网提供了两条路线。第一条是基于厂家提供的HAL库进行开发;第二条是基于寄存器进行开发。
1.2.1基于HAL库开发
HAL库是ST公司目前主力推的开发方式,用户通过调用厂家提供的封装好的函数,可以直接实现某些功能,无需对底层原理进行深入了解,而且各种资料、教程很多。因此可以大大节省程序开发周期,同时程序的移植性、稳定性也很好,适用于项目的快速开发。
但是由于HAL库帮你封装好了一切,用户只需要调用即可,所以开发易上手,入门门槛低,如果只做简单的HAL库开发,上限不高,核心竞争力不强,对后续的学习提升并没好处,所以百问网着重推出单片机的第二条学习路线——基于寄存器开发。
1.2.2基于寄存器开发
对单片机进行开发,实质上就是配置单片机的各种寄存器。通过寄存器进行开发,可以深入了解单片机底层的一些原理和细节,这些都是RTOS的核心,也是学习RTOS的必备知识。当你掌握这些知识后,就可以学习各种RTOS比如鸿蒙、rt-smart还有一些其他的RTOS,即使对于u-boot也需要这些基础知识。目前对于这些系统,百问网都有提供配套的开发板。
对于路线2相关资料、教程相对较少,教程推出后,深受好评,很多有多年工作开发经验的老工程师,也在学习这套课程。
1.3Linux学习路线
对于Linux的创新,百问网将其分为了两步,分别是快速入门系列和各类专题系列。
1.3.1快速入门
对于快速入门系列,百问网先学习Linux应用基础,在学习驱动开发,最后开始做项目。经过这三步,可以让大家对Linux的开发有个完整的概念,涉及底层、上层、和整体的项目。
1.3.2各类专题
当你入门以后,就可以深入学习各类专题了,比如驱动专题中,百问网会深入讲解各类驱动程序。
1.4如何选择学习路线
百问网的课程内容非常丰富,那么如何选择适合自己的学习路线呢?百问网提供了三条学习路线,其中大部分课程都是免费的,目前是由Linux驱动大全是收费的。可以去百问网官网(www.100ask.net)查看全部教程。
路线1:学习HAL库的开发。
路线2:学习单片机核心,掌握这些单片机的核心之后,就可以按照你的兴趣去学习各类RTOS。
路线3:如果不想从单片机入门的话,可以先学习Linux应用开发基础,在学习驱动,最后去做项目。当你入门以后就可以去学习各类专题。
1.5课程特点
1.5.1学习单片机
将单片机的学习与Linux的学习统一起来。
Linux驱动 = 驱动框架 + 硬件编程
丑陋的单片机程序 = 粗暴的硬件编程
优秀的单片机程序 = 软件框架 + 硬件编程,这里面会有一个容易扩展的框架。
百问网单片机程序 = 仿Linux框架 + 硬件编程
所以百问网单片机程序 ≈ Linux驱动,在学习单片机的时候也可以学习Linux的核心。
以LCD为例:
在Linux中,把程序分为应用层和驱动层,在驱动程序中,会抽象出两个结构体分别存放LCD的分辨率和显存等信息。
在单片机程序中,仿照Linux,也抽象出与上述类似的结构体,这样,在学习单片机的时候,也就掌握了Linux的核心。
所以假设你不会单片机,在学习百问网的单片机课程时,也会把Linux驱动的一些知识也学习了。目前单片机课程支持三款开发板:STM32F103,STM32MP157,IMX6ULL。
1.5.2学习linux
如果你已经会单片机了,可以直接学习百问网的Linux驱动视频,有两款开发板支持:STM32MP157,IMX6ULL。
1、灵活选择
Linux驱动 = 驱动框架 + 硬件编程,所以学习Linux可以选择学习驱动框架还是学习硬件编程。,大家可以根据自己的实际情况,灵活选择学习方向。
若对硬件编程已经很熟悉了,可以学习QEMU视频,它简化了硬件操作,可以专心学习驱动框架。若想获得更多的实战经验,可以学习IMX6ULL、STM32MP157视频,涉及硬件编程。
2、专属服务
提供随堂测试、模拟考试、私人课堂、课后作业四项服务。百问网会在群里面根据大家的需求时不时的做一些直播,帮助大家学习。
第二章 资料下载
1、对于单片机HAL库的学习,可以选择是看文档还是看视频。
百问网提供了100ASK_STM32F103用户手册供大家学习,里面有单片机的一些介绍还有26个具体例程。
视频资料目前还在录制中,没有全部推出。
2、对于寄存器的学习,百问网有基础部分的视频(目前已经录制完毕),还有关于FreeRTOS、RT-Thread的讲解(目前还没有录制)。
2.1百问网资料下载
对于第一条学习路线(基于HAL库)所有资料(除了视频)都在百度网盘中。
下载方式1:百度云网盘
链接
:https://pan.baidu.com/s/1Fe-SrqlFo1Xl4-1BTaWlpA 密码:root
下载方式2:微力同步
复制密钥在微力同步APP中使用:B3AIVGI73TMGVTEV27EYWKMHTLCKIRU5NXTUYR35EWYI6PVNSUU47BO
对于第二条学习路线(基于寄存器)所有资料(除了视频)都在Git中。关于Git的使用,可以再官网资料下载中心里面找到Git简明教程。
git clone https://e.coding.net/weidongshan/noos/doc_and_source_for_mcu_mpu.git
相关的全部资料大家都可以在百问网的官网(www.100ask.net)中找到。
1、进入官网,选择左上方资料下载。
2、选择对应的开发板
3、下载资料,不仅包含两条学习路线的资料,同时还有GUI的教程资料。
HAL库资料中,有开发手册,里面既有理论介绍也有程序讲解,可以根据手册进行学习。
目前百问网也推出了GUI教程,使用LVGL编写了一套GUI系统,目前相关文档已经出完,视频教程还没出全,可自行根据文档学习。
百问网LVGL系列教程: http://download.100ask.org/gui/lvgl/100ask_lvgl.html
2.2ST官方资料下载
ST官网的资料很庞大,涉及到许多方面而且全是英文,如何快速准确的找到想要的芯片资料,也是一个问题。
对于一个MUC而言,会有各种手册对其进行介绍,其中数据手册和参考手册尤为重要,必须下载。其他的比如Cortex-M3/M4编程手册,闪存编程手册、勘误手册、官方固件包示例源码、官方固件包用户手册、HAL库用户手册等, 可以根据具体需求下载。
1、进入ST官网,在顶部搜索框内输入要查找的芯片。
2、点击查找到的芯片进入详细界面。
3、点击documentation,进入文档界面,里面有该芯片的各种文档手册。
4、选择所需要的手册下载。
2.3视频资料
1、进入官网,找到对应开发板分类。开发板分类–>F103-PRO–>HAL库开发–>基于HAL库的开发。
2、选择对应视频教程
2.4开发版资源介绍
100ASK_STM32F103的资源如下图,其中红色标记部分是初学阶段需要使用,一定要理解。
这里将红色重要元件进行介绍。
1、DC电源接口:接入12V的电源。
2、电源指示灯:开发板电源输入正常——灯亮,输入异常——灯灭。
3、电源拨动开关:向下拨动——关闭电源,向上波动——打开电源。
5、启动方式选择开关:所谓启动,一般来说就是指下好程序后,重启芯片时,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存。用户可以通过设置BOOT1和BOOT0引脚的状态,来选择单片机复位后的启动模式。
(一)boot0 = 0,boot1 = 0/1时,从用户闪存(flash)启动,是STM32内置的Flash,一般我们使用JTAG或者SWD模式下载程序时,就是下载到这个里面,重启后也直接从这启动程序。
(二)boot0 = 1,boot1 = 0时,从系统存储器启动,这种模式启动的程序功能是由厂家设置的。
(三)boot0 = 1,boot1 = 1时,从内置SRAM启动,既然是SRAM,自然也就没有程序存储的能力了,这个模式一般用于程序调试。
13、三色LED灯:可以根据不同的PWM信号显示不同的颜色。
19、开发板主控芯片:STM32F103ZET6
32、JTAG接口:将芯片与下载器连接起来,用于下载和调试代码。
36、USB转串口接口:把电脑和开发板连接起来,用于调试打印。
38、复位按键:按下时,芯片产生复位。
第三章 环境搭建
3.1嵌入式软件开发步骤
嵌入式开发通常分为六个步骤:编辑、预处理、编译、汇编、链接、调试和下载。每个环节都需要相应的软件实现,如果将这些软件集成在一起,就叫集成开发环境(Integrated Development Environment,IDE)。
编辑:在文本编辑器中,使用某种编程语言编写代码,保存到源文件中,生成.c文件。
预处理:通过预处理,将.c源文件中的预处理指令进行预处理,得到预处理文件.i文件。
编译:编译器将预处理文件通过一系列语法、词法分析以及优化,得到汇编.s文件。
汇编:汇编器将汇编文件中的汇编代码编译成机器使用的可重定位目标文件.o文件。一个源文件对应一个.o文件,多个源文件对应多个.o文件。
链接:连接器将多个.o文件一一链接起来,得到一个可执行目标文件.elf文件。.elf文件可以通过转换得到一个.bin文件。
调试和下载:开发人员将可执行目标文件下载到芯片中,根据现象判断程序是否满足需求。
将编辑器、预处理器、汇编器、链接器、调试器集成在一起,就是集成开发环境(lntegrated Development Environment.IDE)IDE,比如Keil或STM32CubeMX这样的软件。
3.2STM32CubeMX下载与安装
3.2.1 安装Java运行环境
由于STM32CubeMX软件是基于JAVA环境运行的,所以需要安装JRE才能使用。
打开资料包找到\3_开发软件\4_初始化代码生成器(STM32CubeMX)\jre-8u281-windows-x64,点击安装即可。
3.2.2STM32CubeMX安装
STM32CubeMX是ST公司推出的一款代码初始化生成工具,支持ST所有现役芯片。
官方下载:https://www.st.com/zh/development-tools/stm32cubemx.html
资料包安装:\3_开发软件\4_初始化代码生成器(STM32CubeMX)\en.stm32cubemx_v6-0-1
打开下载得到的文件夹,双击SetupSTM32CubeMX-6.0.1。
注意,若自己选择安装路径则安装路径中最好不要有中文,否则可能会发生意想不到的错误。
安装完成。
3.3Keil安装
Keil-MDK(Keil ARM Microcontroller Development Kit)前生是德国Keil公司,后被ARM收购,可以看
作是ARM官方的集成开发环境。
Keil官网下载:https://www.keil.com/download/product/
在百问网提供的资料包中也有Keil的安装包。路径是\3_开发软件\2_集成开发环境IDE(Keil)
上边的是Keil需要的芯片SDK包。下边的就是Keil的安装程序,双击运行MDK532。
选择安装路径,注意要是自定义路径,最好路径中不要有中文。
随便填写一些信息。
等待安装完成。
安装完成,点击finish。
打开软件,点击ok。
安装pack包,双击运行Keil.STM32F1xx_DFP.2.3.0,点击Next。
等待安装。
点击finish,安装完成。