0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32F103系列开发_点亮LED灯

DS小龙哥-嵌入式技术 来源:DS小龙哥-嵌入式技术 作者:DS小龙哥-嵌入式技 2022-05-26 10:03 次阅读

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

image-20220211100907094

下载后,根据提示,一直点击next即可。软件安装在英文目录下,防止出现一些不必要的麻烦。

3. 点亮LED

准备工作就绪之后,下面就入门STM32,点亮LED灯。

拿到开发板先看一下LED原理图,找到LED的硬件接线位置。

image-20220211101603486

关于keil软件如何新建STM32工程的文章之前是写过的,详细步骤看这里: https://blog.csdn.net/xiaolong1126626497/article/details/119879328

点亮LED灯,需要控制STM32的GPIO口输出指定的电平,STM32GPIO口编程步骤分为:

开时钟

配置GPIO口模式

控制GPIO口输出

中文参考手册里的第6章和第8章分别介绍了时钟寄存器和GPIO口配置寄存器,主要看这两章节即可。

image-20220211102155405image-20220211102348433

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口示例代码:

/*
函数功能: LED初始化
硬件连接: PB6 PB7 PB8 PB9
特性: 低电平点亮
*/
void LED_Init(void)
{
    //开时钟
    RCC->APB2ENR|=1<<3;
    //配置GPIO口
    GPIOB->CRL&=0x00FFFFFF;
    GPIOB->CRL|=0x22000000;
    GPIOB->CRH&=0xFFFFFF00;
    GPIOB->CRH|=0x00000022;
    //上拉
    GPIOB->ODR|=1<<6;
    GPIOB->ODR|=1<<7;
    GPIOB->ODR|=1<<8;
    GPIOB->ODR|=1<<9;
}
审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    6893

    浏览量

    148685
  • led灯
    +关注

    关注

    22

    文章

    1564

    浏览量

    107183
  • STM32
    +关注

    关注

    2249

    文章

    10725

    浏览量

    350313
  • STM32F103
    +关注

    关注

    33

    文章

    475

    浏览量

    62895
收藏 人收藏

    评论

    相关推荐

    如何使用STM32F103通用定时器中断来实现LED闪烁呢

    STM32F103系列的单片机一共有几个定时器呢?如何使用STM32F103通用定时器中断来实现LED闪烁呢?
    发表于 11-24 07:44

    如何利用STM32F103点亮一个LED

    基于STM32F103点亮一个LED1、实验目的2、实验要求3、proteus仿真图4、程序代码1、实验目的1、掌握使用KEIL MDK5进行软件
    发表于 12-16 08:28

    基于STM32F103 RET6芯片点亮LED

    博客内容基于STM32F103 RET6芯片,点亮PC3引脚LED,程序主要参考B站:STM32F103
    发表于 12-16 06:10

    如何利用STM32F103寄存器方式点亮LED流水灯?

    如何利用STM32F103寄存器方式点亮LED流水灯?
    发表于 02-08 07:51

    STM32F103寄存器方式点亮LED流水灯的过程

    STM32F103寄存器方式点亮LED流水灯嵌入式系统第六周作业1、学习和理解STM32F103系列芯片的地址映射和寄存器映射原理;了解GP
    发表于 02-09 06:37

    STM32F103系列芯片简介

    目录一、STM32F103系列芯片地址映射和寄存器映射原理以及GPIO端口初始化设置二、STM点亮流水灯一、STM32F103系列芯片地址映
    发表于 02-10 07:08

    STM32F103寄存器点亮LED流水灯简析

    STM32F103寄存器方式点亮LED流水灯点灯:点亮LED,需要用到GPIO端口。为了
    发表于 02-10 07:03

    如何利用STM32F103寄存器方式点亮LED流水灯?

    STM32寄存器规则是什么?如何利用STM32F103寄存器方式点亮LED流水灯?
    发表于 02-11 07:47

    如何去实现一种STM32F103点亮LED流水灯的设计

    STM32F103系列芯片的映射原理是什么?GPIO端口的初始化设置步骤有哪些?如何去实现一种STM32F103点亮LED流水灯的设计?
    发表于 02-11 07:12

    如何使用STM32F103系列芯片以寄存器的方式点亮LED流水灯

    STM32的IO口可以由软件配置成哪几种模式呢?如何使用STM32F103系列芯片以寄存器的方式点亮LED流水灯?
    发表于 02-11 08:12

    怎样通过STM32F103寄存器去点亮LED流水灯呢

    怎样通过STM32F103寄存器去点亮LED流水灯呢?有哪些基本步骤?
    发表于 02-11 06:52

    如何利用STM32F103点亮LED

    STM32F103点亮LED
    发表于 02-21 06:38

    STM32F103设计开发原理图.pdf

    STM32F103设计开发原理图
    发表于 05-19 10:04 251次下载

    STM32F103点亮LED流水灯

    本文主要叙述了什么是寄存器及用寄存器和库函数的方式点亮LED流水灯,本文主要采用stm32f103c8t6开发开发环境:keil μVis
    发表于 11-26 10:21 20次下载
    <b class='flag-5'>STM32F103</b><b class='flag-5'>点亮</b><b class='flag-5'>LED</b>流水灯

    STM32F103实验一:点亮LED

    STM32F103点亮LED
    发表于 12-27 18:36 49次下载
    <b class='flag-5'>STM32F103</b>实验一:<b class='flag-5'>点亮</b><b class='flag-5'>LED</b>灯