Skip to content

Commit

Permalink
Merge branch 'main' into gh-pages
Browse files Browse the repository at this point in the history
  • Loading branch information
Minsecrus committed Aug 19, 2024
2 parents f6889bb + e654ce6 commit a708166
Show file tree
Hide file tree
Showing 25 changed files with 67 additions and 33 deletions.
Binary file added images/Embedded/CLion的STM32开发配置图.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
File renamed without changes
File renamed without changes
File renamed without changes
Binary file added images/Embedded/OpenOCD检查图.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
File renamed without changes.
1 change: 1 addition & 0 deletions 教程/正文/Embedded/初识STM32.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# 初识STM32
21 changes: 21 additions & 0 deletions 教程/正文/Embedded/寄存器编程.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# 寄存器编程

> 本节主要介绍操作 **寄存器** 来操作底层硬件
## 1. 寄存器(Register)概念

计算机中央处理器(CPU)内部的高速存储单元,用于临时存储数据和指令。它们是CPU执行指令过程中不可或缺的一部分,因为它们可以提供比内存更快的访问速度,从而加快数据处理速度。

寄存器的种类和数量因CPU架构的不同而有所差异。常见的寄存器类型包括:

1. **通用寄存器**:用于存储操作数和中间结果,如EAX、EBX、ECX、EDX等(在x86架构中)。
2. **程序计数器(PC)**:存储下一条要执行的指令的地址。
3. **堆栈指针(SP)**:指向当前堆栈的顶部。
4. **基址指针(BP)**:用于访问堆栈中的局部变量和函数参数。
5. **指令寄存器(IR)**:存储当前正在执行的指令。
6. **标志寄存器(FLAGS)**:存储执行指令后的状态标志,如零标志、符号标志、进位标志等。
7. **段寄存器**:在实模式下用于存储代码段、数据段和堆栈段的基地址。

寄存器的设计和优化对计算机的性能有着重要影响,因此现代CPU通常会有大量的寄存器,并且会采用各种技术来提高它们的访问速度和效率。

## 2.
File renamed without changes.
16 changes: 16 additions & 0 deletions 教程/正文/Embedded/引言.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# MdrHAL 项目概述

## 项目介绍

## 教程目录

- [引言](/教程/正文/Embedded/引言.md)
- [环境搭建](/教程/正文/Embedded/环境搭建.md)
- [程序下载与调试](/教程/正文/Embedded/程序下载与调试.md)
- [初识STM32](/教程/正文/Embedded/初识STM32.md)
- [寄存器编程](/教程/正文/Embedded/寄存器编程.md)
- [自己写库——构建库函数雏形](/教程/正文/Embedded/库函数雏形.md)
- [初识HAL库](/教程/正文/Embedded/初识HAL库.md)
- [操作GPIO](/教程/正文/Embedded/操作GPIO.md)
- [RCC——使用时钟](/教程/正文/Embedded/操作时钟.md)
- [术语表](/教程/正文/Embedded/术语表.md)
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -137,4 +137,4 @@ CMSIS包括以下几个关键部分:
6. **标志寄存器(FLAGS)**:存储执行指令后的状态标志,如零标志、符号标志、进位标志等。
7. **段寄存器**:在实模式下用于存储代码段、数据段和堆栈段的基地址。

寄存器的设计和优化对计算机的性能有着重要影响,因此现代CPU通常会有大量的寄存器,并且会采用各种技术来提高它们的访问速度和效率。
寄存器的设计和优化对计算机的性能有着重要影响,因此现代CPU通常会有大量的寄存器,并且会采用各种技术来提高它们的访问速度和效率。
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
很大一部分原因是因为大多数人最初是从51单片机学习过来的,
51就是基于Keil去开发的,然后迁移到STM32的时候也就沿用下来了。

![Keil开发环境界面](/images/项目/嵌入式/Keil界面图.png)
![Keil开发环境界面](/images/Embedded/Keil界面图.png)

Keil操作简单,容易上手,而且可以很方便地进行调试。
但是对于以前不是做嵌入式开发的软件开发人员来说,
Expand All @@ -34,40 +34,60 @@ Keil操作简单,容易上手,而且可以很方便地进行调试。

openocd全名叫做Open On-Chip Debugger,是一个自由开放的片上调试工具和编程工具,
目前已经发布到0.11.0版本,目前主流调试器几乎都支持。

安装好之后,添加环境变量:

![OpenOCD环境变量](/images/项目/嵌入式/OpenOCD环境变量图.png)
![OpenOCD环境变量](/images/Embedded/OpenOCD环境变量图.png)

在终端输入,进行测试:
```shell
openocd
```
如果有信息输出如下,那就是装好了。

![OpenOCD检查](/images/Embedded/OpenOCD检查图.png)

3. MinGW

Clion需要使用MinGW环境来配置工具链,安装方法见 [MinGW]()
Clion需要使用MinGW环境来配置工具链,安装在网上有很多教程,这里就不赘述了。

安装好之后,添加到环境变量:

![MinGW环境变量](/images/项目/嵌入式/MinGW环境变量图.png)
![MinGW环境变量](/images/Embedded/MinGW环境变量图.png)

在终端输入,进行测试:
```shell
gcc -v
```
如果有信息输出如下,那就是装好了。

![MinGW检查](/images/项目/嵌入式/MinGW检查图.png)
![MinGW检查](/images/Embedded/MinGW检查图.png)

4. [ **arm-none-eabi-gcc** ](https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads)

> 注:为什么不是gcc?
>
> 在开发stm32的时候,编译工具链要使用gcc-arm-none-eabi,为什么不是gcc呢?
> 这就要说到Win下的交叉编译了,因为我们要在PC机上编译出可以运行在ARM上的程序,
> 使用gcc编译出的是在PC上运行的程序,所以我们要使用gcc-arm-none-eabi进行交叉编译,才能运行在ARM上。

安装好后,添加到环境变量:
![GNU-arm-none-eabi环境变量](/images/项目/嵌入式/GNU-arm-none-eabi环境变量图.png)
![GNU-arm-none-eabi环境变量](/images/Embedded/GNU-arm-none-eabi环境变量图.png)

在终端输入,进行测试:
```shell
arm-none-eabi-gcc -v
```
如果有信息输出如下,那就是装好了。
![GNU-arm-none-eabi检查](/images/项目/嵌入式/GNU-arm-none-eabi检查图.png)
![GNU-arm-none-eabi检查](/images/Embedded/GNU-arm-none-eabi检查图.png)

5. CLion

安装见[ **CLion** ](/杂项/工具和环境/工具/编程工具.md#1-文本编辑器和代码编辑器)

配置CLion的STM32开发方式,如下:

![CLion的STM32开发配置](/images/Embedded/CLion的STM32开发配置图.png)



1 change: 1 addition & 0 deletions 教程/正文/Embedded/程序下载与调试.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# 程序下载
Empty file.
9 changes: 0 additions & 9 deletions 教程/正文/项目/MdrHAL/寄存器编程.md

This file was deleted.

16 changes: 0 additions & 16 deletions 教程/正文/项目/MdrHAL/引言.md

This file was deleted.

Empty file.

0 comments on commit a708166

Please sign in to comment.