单片机学习笔记1--资料下载、环境搭建(基于百问网STM32F103系列教程)

2023-11-04

第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,安装完成。
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单片机学习笔记1--资料下载、环境搭建(基于百问网STM32F103系列教程) 的相关文章

随机推荐

  • 国内及Github优秀开发人员列表

    自从入了Android软件开发的行道 解决问题和学习过程中免不了会参考别人的思路 浏览博文和门户网站成了最大的入口 下面这些列表取名为 国内及Github优秀开发人员列表 就是浏览后的成果 虽然下述列表出自Android软件开发 文章定为不
  • python科研项目_通过科研人员论文项目等数据,训练识别导师/学生的分类器

    student and teacher classifier 通过科研人员论文项目等数据 训练识别导师 学生的分类器 代码包括特征选择基础 网格搜索确定特征选择方法参数 不平衡数据的处理 oversampling和undersampling
  • -day18面向对象进阶

    day18 面向对象进阶 课程目标 掌握面向对象进阶相关知识点 能更加自如的使用面向对象来进行编程 今日概要 成员 变量 实例变量 类变量 方法 绑定方法 类方法 静态方法 属性 成员修饰符 公有 私有 对象嵌套 特殊成员 对比 问题 洗衣
  • mysql group by 中文_MySQL GROUP BY 语句

    MySQL GROUP BY 语句 GROUP BY 语句根据一个或多个列对结果集进行分组 在分组的列上我们可以使用 COUNT SUM AVG 等函数 GROUP BY 语法 SELECT column name function col
  • 单片机学习 1-LED灯的点亮(全操作)

    LED灯 P0 P1 P2 P3结构图 除了P0端口需要自己外接上拉电阻 否则只能输入输出低电平 其它自带上拉电阻 因此都可以实现高低电平的输入输出 LED灯介绍 LED灯本质是发光二极管 单片机输入电流控制在3mA 20mA之间 可串联电
  • ubuntu pycharm 无法输入中文

    很多人反馈是和ubuntu20 04有关 但是其实应该是和pycharm20 2 3有关 只需要替换掉版本里面的jbr即可 1 下载jbr https confluence jetbrains com pages viewpage acti
  • 数组-第三大的数

    题意 给定一个非空数组 返回此数组中第三大的数 如果不存在 则返回数组中最大的数 要求算法时间复杂度必须是O n 示例 1 输入 3 2 1 输出 1 解释 第三大的数是 1 示例 2 输入 1 2 输出 2 解释 第三大的数不存在 所以返
  • 笔记本电脑运行特别慢怎么解决

    其实不管是笔记本电脑还是台式电脑 用久了肯定多多少少都会有点卡顿的情况出现 很多人的笔记本就是用久了就有这种情况 面对这种情况 如果大家想快速的解决问题 就一起学学今天的关于笔记本电脑运行特别慢怎么解决的内容吧 工具 原料 系统版本 win
  • 操作系统fork()进程

    1 fork 是创建进程函数 2 c程序一开始 就会产生 一个进程 当这个进程执行到fork 的时候 会创建一个子进程 3 此时父进程和子进程是共存的 它们俩会一起向下执行c程序的代码 4 需要注意 子进程创建成功后 fork是返回两个值
  • C语言—星空&下雪特效(Easyx)

    目录 实现效果如图 01 星空 静态 02 下雪 动态 实现效果如图 01 星空 静态 include
  • [C++11]std::promise

    一 std promise介绍 std promise 是C 11并发编程中常用的一个类 常配合std future使用 其作用是在一个线程t1中保存一个类型typename T的值 可供相绑定的std future对象在另一线程t2中获取
  • vue click.stop 阻止点击事件继续传播(阻止事件冒泡)

    场景 H5 移动端 弹窗表单 背景是遮罩 点击表单外遮罩时关闭弹窗 点击表单则不关闭弹窗 click stop 阻止点击事件继续传播
  • 进阶指针【指针的进阶使用方法】

    进阶指针目录 前言 字符指针 指向字符 指向字符串常量 指向同一个字符串常量的字符指针 指针数组 指针数组的定义和使用 数组指针 数组指针的定义 数组指针的使用 函数指针 函数指针的定义 函数指针的使用 函数指针数组 函数指针数组的定义 函
  • Opencv-Python学习(五)

    一 傅里叶变换 傅里叶变换的详细过程及推导可以看一个大佬写的 我这里就不介绍了 链接 傅里叶分析之掐死教程 完整版 更新于2014 06 06 知乎 我这里就介绍一下傅里叶变换的一些概念和opencv中如何实现傅里叶变换 低频 变化缓慢的灰
  • Microsoft Skype产品线梳理

    目录 前言 1 Skype应用程序 2 Skype for Business 3 Skype电话 4 Skype号码 5 Skype连接 总结
  • FPGA:三种基本门电路设计(与门、或门、非门)

    FPGA的设计跟数电是紧密相连的 而我们学习数电时候 学习的第一个内容就是数字逻辑基础 这里面就包含了我们今天要讲解的三种基本的门电路 这里 我们依次讲解过来 1 与门 定义 有两个或多个输入 但只有一个输出 只有在所有输入都是高但电平时才
  • 决策树学习笔记整理

    本文目的 最近一段时间在Coursera上学习Data Analysis 里面有个assignment涉及到了决策树 所以参考了一些决策树方面的资料 现在将学习过程的笔记整理记录于此 作为备忘 算法原理 决策树 Decision Tree
  • GCD(容斥定理)

    Time Limit 6000 3000ms Java Other Memory Limit 32768 32768K Java Other Problem Description Given 5 integers a b c d k yo
  • Python爬虫面试知识

    爬虫知识 网络爬虫又称网页蜘蛛 爬虫即是网络上爬行的蜘蛛 可以将理解为一种在互联网上自动提取网页信息并进行解析数据的程序 网络爬虫主要的分类有 聚焦网络爬虫 增量网络爬虫 通用网络爬虫 深层网络爬虫 Robots协议又称机器人协议 通常在网
  • 单片机学习笔记1--资料下载、环境搭建(基于百问网STM32F103系列教程)

    第1篇 资料下载 环境搭建 第一章 百问网视频体系及学习路线 1 1课程视频变化 2011 2020 百问网录制了10年的Linux视频 2021 1 首次进入单片机领域 发布单片机课程 2 重新录制Linux课程 新芯片 新内核 新路线