STM32F103系列开发_点亮LED灯

发布时间:2023-05-25  

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;
}


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>