- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
STM32裸机编程的基础知识(1)
这个系列将介绍 STM32 裸机编程的基础知识,以便更好地理解 STM32Cube、Keil 等框架和 IDE 是如何工作的。本指南完全从头开始,只需要编译器和芯片数据手册,而不依赖任何其它软件工具和框架。
这个系列涵盖了以下话题:
存储和寄存器
中断向量表
启动代码
链接脚本
使用 make 进行自动化构建
GPIO 外设和闪烁 LED
SysTick 定时器
UART 外设和调试输出
printf 重定向到 UART
用 Segger Ozone 进行调试
系统时钟配置
实现一个带设备仪表盘的 web 服务器
我们将使用 Nucleo-F429ZI 开发板 (淘宝购买) 贯穿整个指南的实践,每个章节都有一个相关的完整小项目可以实战。最后一个 web 服务器项目非常完整,可以作为你自己项目的框架,因此这个示例项目也提供了其他开发板的适配:
STM32 Nucleo-F429ZI
TI EK-TM4C1294XL
树莓派 Pico-W
对其他板子的适配支持还在进行中,可以提交 issue 来建议适配你正在用的板子。
工具配置
为继续进行,需要以下工具:
ARM GCC, /gcc-arm-embedded - for compiling and linking
GNU make, /software/make/ - for build automation
ST link, /stlink-org/stlink - for flashing
Mac 安装
打开终端,执行:
$ /bin/bash -c $(curl -fsSL /Homebrew/install/HEAD/install.sh)$ brew install gcc-arm-embedded make stlink
Linux (Ubuntu) 安装
打开终端,执行:
$ sudo apt -y install gcc-arm-none-eabi make stlink-tools
Windows 安装
scoop install gcc-arm-none-eabi make stlink
验证安装:
1. 下载这个仓库,解压到 C:\\
2. 打开命令行,执行:
cd C:\\bare-metal-programming-guide-main\\step-0-minimal
make
数据手册
STM32F429 MCU datasheet
Nucleo-F429ZI board datasheet
微控制器介绍
微控制器(microcontroller,uC 或 MCU)是一个小计算机,典型地包含 CPU、RAM、存储固件代码的 Flash,以及一些引脚。其中一些引脚为 MCU 供电,通常被标记为 VCC 和 GND。其他引脚通过高低电压来与 MCU 通信,最简单的通信方法之一就是把一个 LED 接在引脚上:LED 一端接地,另一端串接一个限流电阻,然后接到 MCU 信号引脚。在固件代码中设置引脚电压的高低就可以使 LED 闪烁:
存储和寄存器
MCU 的 32 位地址空间按区分割。例如,一些存储区被映射到特定的地址,这里是 MCU 的片内 flash,固件代码指令在这些存储区读和执行。另一些区是 RAM,也被映射到特定的地址,我们可以读或写任意值到 RAM 区。
从 STM32F429 数据手册的 2.3.1 节,我们可以了解到 RAM 区从地址 0开始,共有 192KB。从 2.4 节我们可以了解到 flash 被映射到 0共 2MB,所以 flash 和 RAM 的位置像这样:
从数据手册中我们也可以看到还有很多其它存储区,它们的地址在 2.3 节”Memory Map” 给出,例如:”GPIOA” 区从地址 0开始,长度为 1KB。
这些存储区被关联到 MCU 芯片内部不同的外设电路上,以特殊的方式控制外设引脚的行为。一个外设存储区是一些 32 位寄存器的集合,每个寄存器有 4 字节的空间,在特定的地址,控制着外设的特定功能。通过向寄存器写入值,或者说向特定的地址写一个 32 位的值,我们就可以控制外设的行为。通过读寄存器的值,我们就可以得到外设的数据或配置。
MCU 通常有许多不同的外设,其中比较简单的就是 GPIO(General Purpose Input Output,通用输入输出),它允许用户将 MCU 引脚设为输出模式,然后置 “高” 或置 “低”;或者设置为输入模式,然后读引脚电压的 “高” 或 “低”。还有 UART 外设,可以使用串行协议通过两个引脚收发数据
您可能关注的文档
最近下载
- 医学影像学模拟考试题与答案.docx
- 2021OceanStor Dorado 6000, Dorado 18000系列产品白皮书.docx VIP
- 华为OceanStor18000系列案例集.pptx VIP
- 医学影像学试题(附参考答案).docx
- oceanstor 18000系列高端存储系统可靠性技术白皮书.pdf VIP
- 部编人教版五年级上册语文全册表格教案(新审定).pdf VIP
- 2024年新生儿窒息复苏(新版指南).pptx VIP
- 华为OceanStor18000系列高端存储.PDF VIP
- oceanstor18000系列存储系统产品介绍.pptx VIP
- 华为OceanStor 融合存储最佳实践.pdf VIP
文档评论(0)