STM32F103 系列开发 _ 点亮 LED 灯
1. 前言
STM32 目前市面上使用比较广泛,资料多,接下来就介绍如何快速入门 STM32,进行基础开发。
这篇文章是 STM32F103 系列文章的第一篇,主要介绍开发环境的搭建、编程思路、如何查看原理图、配置时钟,配置 GPIO 口模式等等。
下面文字是来至 STM32 中文手册,对 STM32 系列做了详细的介绍:
STM32 是一个微控制器产品系列的总称,目前这个系列中已经包含了多个子系列,分别是: STM32 小容量产品、 STM32 中容量产品、 STM32 大容量产品和 STM32 互联型产品;按照功能上的划分,又可分为 STM32F101xx、 STM32F102xx 和 STM32F103xx 系列;
● 小容量产品是指闪存存储器容量在 16K 至 32K 字节之间的 STM32F101xx、 STM32F102xx 和 STM32F103xx 微控制器。● 中容量产品是指闪存存储器容量在 64K 至 128K 字节之间的 STM32F101xx、 STM32F102xx 和 STM32F103xx 微控制器。● 大容量产品是指闪存存储器容量在 256K 至 512K 字节之间的 STM32F101xx 和 STM32F103xx 微控制器。● 互联型产品是 STM32F105xx 和 STM32F107xx 微控制器。
整体来说,STM32F10x 系列里所有型号芯片大多数功能模块都是相同,主要是区别还是:引脚数量不一样,FLASH 闪存、RAM 空间大小不一样,还有就是功能模块的数量不一样。 配置高的芯片,引脚多,功能模块多。
配置低的型号,引脚自然就少,功能模块就少。 但是只要有这个功能模块,所有型号的代码都是一样的编写方式。所以,STM32F10x 系列里所有型号代码都是通用的。
目前 STM32 开发方式主要由 3 种:寄存器、标准库、HAL 库。 其中 HAL 库是目前意法半导体主推的开发方式,有 STM32CubeMx 软件加持,可以一键生成 keil 工程,图形化编程非常方便,资源网上也有很多。
当前这个系列文章的 STM32 开发主要是选择寄存器方式开发,寄存器开发优点是: 代码较少、整体比较精简,运行效率较高。但是学习成本、入门成本、调试难度比 HAL 库要难一些,因为使用寄存器开发,需要不断的看芯片手册,了解寄存器每个位的详细功能,需要对芯片寄存器非常熟悉。但是寄存器开发相对比较通用,所有的芯片都支持寄存器开发,了解寄存器开发之后,对优化库函数、HAL 库的效率、对其他芯片编程、入门 Linux 驱动开发、了解硬件等都有一定的帮助。
2. 开发前准备
入门 STM32 开发,首先需要准备一块开发板,拿到开发板的原理图、下载 STM32 的中文参考手册,下载一个串口下载软件、准备一台 windows 电脑安装 keil5 软件。
开发板淘宝很多,推荐买:搭载 STM32F103ZET6 芯片的板子,可以买系统板也可以买开发板,系统板的板载资源少,引脚都引出来的,可以自己买模块扩展;开发板板载资源较多,引脚基本也是引出来的,板子的价格比较贵,购买可以参考正点原子、野火等一些厂家的板子。 一般购买板子之后,都有配套的资料包:原理图、手册都有了。
STM32 支持 st-link、jlink、串口等多种下载方式,其中成本比较低的就是串口下载,不需要购买额外的硬件,生成 hex 文件之后,通过串口下载到开发板运行,如果 hex 文件较大,下载速度比较慢。如果资金允许,购买 st-link、jlink 下载更加快,调试更加方便。
keil 软件最新版可以在这里下载:http://www.myir-tech.com/download.asp?nclassid=108&anclassid=71
下载后,根据提示,一直点击 next 即可。软件安装在英文目录下,防止出现一些不必要的麻烦。
3. 点亮 LED 灯
准备工作就绪之后,下面就入门 STM32,点亮 LED 灯。
拿到开发板先看一下 LED 原理图,找到 LED 的硬件接线位置。
关于 keil 软件如何新建 STM32 工程的文章之前是写过的,详细步骤看这里: https://blog.csdn.net/xiaolong1126626497/article/details/119879328
点亮 LED 灯,需要控制 STM32 的 GPIO 口输出指定的电平,STM32GPIO 口编程步骤分为:
开时钟
配置 GPIO 口模式
控制 GPIO 口输出
中文参考手册里的第 6 章和第 8 章分别介绍了时钟寄存器和 GPIO 口配置寄存器,主要看这两章节即可。
GPIO 口模式配置寄存器有两个:CRL 和 CRH,一个 IO 口由 4 个二进制位表示,STM32 是 32 位的 MCU,一个寄存器是 32 位,GPIO 口分为 GPIOA,GPIOB,GPIOC 等很多组,每一组的 GPIO 口的数量是 16 个。所以要配置一组 GPIO 口的模式需要 64 个二进制位,所以就分成了两个寄存器来表示。 CRL 配置 0~7 的 GPIO 口,CRH 就配置 8~15 的 IO 口。
如果 GPIO 口作为普通的输出,一般配置位置推挽输出,如果作为按键这种输入检测硬件,一般配置为上下拉输入。如果需要使用 GPIO 口内置的功能输出,就配置为复用功能推挽输出。
配置 LED 灯对应的 GPIO 口示例代码:
版权声明: 本文为 InfoQ 作者【DS小龙哥】的原创文章。
原文链接:【http://xie.infoq.cn/article/10d832ecb6c8280c625b91c9a】。文章转载请联系作者。
评论