stm32 订阅
STM32系列专为要求高性能、低成本、低功耗的嵌入式应用设计的ARM Cortex®-M0,M0+,M3, M4和M7内核(ST's product portfolio contains a comprehensive range of microcontrollers, from robust, low-cost 8-bit MCUs up to 32-bit ARM-based Cortex®-M0 and M0+, Cortex®-M3, Cortex®-M4 Flash microcontrollers with a great choice of peripherals. ST has also extended this range to include an ultra-low-power MCU platform) [1]  。按内核架构分为不同产品:主流产品(STM32F0、STM32F1、STM32F3)、超低功耗产品(STM32L0、STM32L1、STM32L4、STM32L4+)、高性能产品(STM32F2、STM32F4、STM32F7、STM32H7) [2] 展开全文
STM32系列专为要求高性能、低成本、低功耗的嵌入式应用设计的ARM Cortex®-M0,M0+,M3, M4和M7内核(ST's product portfolio contains a comprehensive range of microcontrollers, from robust, low-cost 8-bit MCUs up to 32-bit ARM-based Cortex®-M0 and M0+, Cortex®-M3, Cortex®-M4 Flash microcontrollers with a great choice of peripherals. ST has also extended this range to include an ultra-low-power MCU platform) [1]  。按内核架构分为不同产品:主流产品(STM32F0、STM32F1、STM32F3)、超低功耗产品(STM32L0、STM32L1、STM32L4、STM32L4+)、高性能产品(STM32F2、STM32F4、STM32F7、STM32H7) [2]
信息
外文名
STM32
产品特点
高性能、低成本、低功耗、可裁剪
开发公司
意法半导体 集团
中文名
嵌入式单片机
产品说明
ARM Cortex-M内核单片机
应用领域
嵌入式开发
stm32产品介绍
在STM32F105和STM32F107互连型系列微控制器之前,意法半导体已经推出STM32基本型系列、增强型系列、USB基本型系列、互补型系列;新系列产品沿用增强型系列的72MHz处理频率。内存包括64KB到256KB闪存和 20KB到64KB嵌入式SRAM。新系列采用LQFP64、LQFP100和LFBGA100三种封装,不同的封装保持引脚排列一致性,结合STM32平台的设计理念,开发人员通过选择产品可重新优化功能、存储器、性能和引脚数量,以最小的硬件变化来满足个性化的应用需求。截至2010年7月1日,市面流通的型号有:基本型:STM32F101R6、STM32F101C8、STM32F101R8、STM32F101V8、STM32F101RB、STM32F101VB增强型:STM32F103C8、STM32F103R8、STM32F103V8、STM32F103RB、STM32F103VB、 STM32F103VE、STM32F103ZESTM32型号的说明:以STM32F103RBT6这个型号的芯片为例,该型号的组成为7个部分,其命名规则如下:
收起全文
精华内容
下载资源
问答
  • 在配置好CubeMX之后,就是新建工程的开始了,那么首先我们需要一些准备,本片博客我们会很详细的介绍STM32CubeMx的基本使用和如何创建一个新的工程并且点亮LED灯 面向初学者 如果您想着快速实现工程的创建,可以直接...

    前言

    在配置好CubeMX之后,就是新建工程的开始了,那么首先我们需要一些准备,本片博客我们会很详细的介绍STM32CubeMx的基本使用和如何创建一个新的工程并且点亮LED灯  面向初学者   如果您想着快速实现工程的创建,可以直接跳过功能介绍,观看工程创建一栏 

    并且,在新建工程时,我们分为了具体流程1~7 如果您不想看每部分的讲解,直接按照流程操作即可,5分钟即可成功点亮LED灯

    安装STM32CubeMx请参看《STM32 CubeMx使用教程一--安装教程》

    前期准备:

    1、STM32硬件(我的是STM32F407ZE和STM32F103ZE)

    2、STM32CubeMx软件、 IDE   Keil(MDK-ARM)软件

    3、STM32F4xxHAL库   

    新建工程

    1在主界面选择File-->New Project   或者直接点击ACCEE TO MCU SELECTOR   

     

    出现芯片型号选择  一般我们直接搜索自己芯片的型号即可   

     如果你是设计产品想要选择一款芯片  在搜索栏的下面,提供的各种查找方式,可以选择芯片内核,型号,等等,帮助你找到适合的芯片

    具体流程1:

    • 1 搜索芯片型号
    • 2选择芯片
    • 3创建工程

    那么接下来就是我们整个流程的重头戏了

    这里我们分成三大块来讲解

    1MCU外设资源选择

    在这里可以选择MCU的各种资源和外设

    提供两种方式

    • Categories  种类选择

    将MCU的各种外设和资源分类,供用户选择使用

    • A-Z  顺序选择

    MCU的外设资源按A-Z 排序,供用户选择使用

    2外设配置

    这里可以设置你所选择外设的各种功能

    这里以串口1为例   我们可以选择串口的模式(异步,同步,半双工)   串口接收中断,和串口DMA传输等等

    和我们配置库函数的时候基本一样,但是  STM32CubeMx将这些转换为了图形和选项  ,我们配置的时候不用再去配置各种东西,只需要傻瓜式操作便可以配置我们需要的外设   这便是CubeMx的核心所在

    3预览界面

    这里分为引脚预览系统预览

    引脚预览就是可以查看那个引脚配置了什么功能,和各个引脚位置  

     

    随便点击一个引脚,即可设置该引脚的各种功能

     

          这种颜色表示不可配置引脚  电源专用引脚以黄色突出显示。其配置不能更改

    这种颜色表示你配置了一个I/O口的功能,但是没有初始化相对应的外设功能  引脚处于no mode 状态  

     

      绿色表示配置成功

     

    系统预览

    系统预览就是查看配置的各种外设和GPIO的状态 

    表示没有问题

    表示警告,对应配置出现问题  点击该选项即可外设配置界面查看

     

    具体各个功能的配置(UATR/DMA/ADC/TIM...)我们再接下来的文章会一一讲解,这里就不再过多介绍了

    具体流程2:

    这里只需要把我们的LED对应引脚设置为GPIO_Output即可

    2时钟源设置

    其实也就是32的时钟树框图让你配置  默认时钟是使用内部RC振荡器(HSI) 

    如果不懂的话请看《【STM32】系统时钟RCC详解(超详细,超全面)》

    具体流程3:

    或者先按照图中方式配置为72MHz即可

     

    •  需要配置RCC才能够使用外部时钟源

    3.工程管理

    设置完MCU的各个配置之后,第三个就是工程文件的设置了

    具体流程4:

    这里就是工程的各种配置 我们只用到有限几个,其他的默认即可  IDE我们使用的是 MDK5

    • 存储目录不可以有中文

    然后点击Code Generator,进行进一步配置   (重点)

    将HAL库的所有.C和.H都复制到所建工程中 

    优点:这样如果后续需要新增其他外设又可能不再用STM32CubeMX的时候便会很方便

    缺点: 体积大,编译时间长(很长)

    只复制所需要的.C和.H   (推荐)

    优点:体积相对小,编译时间短,并且工程可复制拷贝

    缺点: 新增外设时需要重新用STM32CubeMX导入   

    不复制文件,直接从软件包存放位置导入.C和.H 

    优点:体积小,比较节约硬盘空间

    缺点: 复制到其他电脑上或者软件包位置改变,就需要修改相对应的路径   

    自行选择方式即可

    具体流程5:

    然后点击GENERATE CODE  创建工程

    创建成功,打开工程

    具体流程6:while循环添加下面两行代码即可

        HAL_Delay(500);
        HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_15);

    配置下载工具

    具体流程7:

    新建的工程所有配置都是默认的  我们需要自行选择下载模式,勾选上下载后复位运行

    所有自己编写的代码请放在/* USER CODE BEGIN XXX */   /* USER CODE END XXX */之间 

     这样我们修改工程的时候你自己写的代码就不会被删除

     

    到此,STM32CubeMX的基本使用介绍完了 ,接下来会更新CubeMX和HAL库配置STM32的UART ADC DMA 定时器 PWM 等等 

    展开全文
  • STM32F103C8T6最小系统

    万次阅读 多人点赞 2019-07-09 23:25:17
    单片机最小系统一般有晶振电路、电源电路、复位电路以及调试电路组成。本文以STM32F103C8T6为例,介绍最小电路的设计和要注意的问题。

    各位同学,看完觉得好就点个赞,点个收藏,再来一波关注。白嫖不利于开源社区的发展,我这浏览数据都12000+了,点赞基本没有,收藏倒是快接近100了。开源本来就是吃力不讨好的事情,更新和创作的动力来源于社区有效的互动。
    在这里插入图片描述

    单片机最小系统一般有晶振电路、电源电路、复位电路以及调试电路组成

    1.电源电路

    主要有两部分组成:

    • 供电电路

    可以使用普通的USB接口电路,5V电源输出
    供电电路

    • 降压电路
      USB的5V输入,然后输出为3.3V
      在这里插入图片描述
      这里使用两种不同的电容。
    • 输入滤波电容的作用:
      输入电压,当接入电源,其幅值是从零起始的,波动非常大,加入足够容量的电容进行滤波后,因电容的充放电效应,该脉动直流变成纹波不大的直流电,这是输入滤波的作用。
    • 输出滤波电容的作用:
      稳压电路的工作过程需要从输出采样,然后根据其反馈值调节输出以达稳压的目的。如果此时没有输出滤波电容,只要因负载变化带来的电压波动频率恰好与稳压电路的调节速率差不多就会产生振荡效应,导致输出失控,所以稳压输出也必须加滤波电容,而且增加滤波电容也可以进一步增加稳压输出的稳定性
    • 大电容和小电容并联的作用:
      至于与大容量电解电容并联的小电容,其作用在于旁路频率较高的波动电压,因为铝电解电容的制造工艺导致其具有较大的ESL(等效电感),无法滤除高频成份,故需加个小电容。

    2.晶振电路

    晶振电路用来给芯片提供时钟信号,原理图如下:
    在这里插入图片描述
    需要注意的是:

    • 画板时晶振尽量离芯片近一点
    • 晶振底部尽量不要穿过其他支路,防止信号串扰
    • 不同型号的晶振可能需要不同的电路设计,根据自己使用的晶振型号设计,例如使用村田的CSTCE系列晶振,可以设计成如下电路:
      CSTCE8M系列晶振电路
    • 晶振的选择要根据数据手册来选,本芯片4-16M可选
      数据手册中对晶振的选择
      注意:上图使用了F102芯片手册,在外接晶振方面F103上是一样的

    3.复位电路

    复位电路如下:
    在这里插入图片描述
    stm32有三种复位方式:电源复位、系统复位和后备域复位

    电源复位时,当NRST引脚被拉低,产生外部复位,并产生复位脉冲,从而使系统复位。

    4.去耦电容

    主要用来滤除杂波,保持引脚电压的稳定。这些电容也尽量离芯片相关引脚近一点。分布在芯片四周即可。
    在这里插入图片描述

    5.调试下载电路

    • BOOT选择
    启动方式BOOT0BOOT1
    从主闪存存储器启动0x
    从系统存储器启动10
    从内置SRAM启动11

    BOOT选择

    • 调试电路(SW接线方式)
      PA13对应SWD,PA14对应SWC
      下载调试电路
      对应仿真器连接如下图:

    SW接线

    6.其他外围电路

    • 电源指示灯
      电源指示
    • 测试LED灯
      测试电路
      注意:如果要使用PC13,PC14和PC15则VBAT需要接3.3V
    • 这是因为VBAT引脚和芯片的其他VSS和VDD引脚功能是一致的,都是用来给相邻片区引脚供电

    在这里插入图片描述

    • 外围接口
      在这里插入图片描述
      注意:排序时,围绕stm32芯片一个方向顺序排列网络标号,依次排列外接IO,方便PCB排版.

    7.芯片STM32F103C8T6

    STM32F103C8T6

    • 封装是LQFP48,注意BOOT引脚接10K电阻

    STM32F103C8T6

    8.PCB布板

    • 正面
      布板
    • 反面
      在这里插入图片描述
      注意布板时提到的几个问题即可

    9.成品

    成品

    • 由于画的是HC-49U的晶振封装,但是不够了,用了个TC-38来凑数,也是8M,效果还不错。

    10.调试结果

    调试成功

    11.LED灯测试结果

    测试成功

    12.原理图说明

    • 楼主提供F103C8T6的原理图,各位可以参考图片版本

    • 照着图片画一版,增强记忆

    • 不提供PCB的原因是:大家使用的元器件库是不一样的,最好根据自己实验室现有器件规格来配置相应的元器件,并设计好PCB。

    • 另外需要说明一点:下载时的积分我设置不了,这是系统自动设置的。虽然,我也想把积分调低一点。

    • 好像能改。。。改成5积分了。
      滑稽

    展开全文
  • STM32】HAL库 STM32CubeMX系列学习教程

    万次阅读 多人点赞 2020-02-07 09:15:30
    STM32CubeMX 简介 1、STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具,目的就是为了方便开发者, 允许用户使用图形化向导生成C 初始化代码,可以大大减轻开发工作,时间和费用,提高...

    STM32CubeMX 简介


     1、STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具,目的就是为了方便开发者, 允许用户使用图形化向导生成C 初始化代码,可以大大减轻开发工作,时间和费用,提高开发效率。STM32CubeMX几乎覆盖了STM32 全系列芯片。 

    在CubeMX上,通过傻瓜化的操作便能实现相关配置,最终能够生成C语言代码,支持多种工具链,比如MDK、IAR For ARM、TrueStudio等  省去了我们配置各种外设的时间,大大的节省了时间,

     

    为什么是CubeMX

    并且随着ST停止了标准库的更新,ST官方大力推荐CubeMX与HAL库的使用,虽然现在还是标准库的主场,但是CubeMX的使用率在逐年提高,所以学习下CubeMX的基本使用也是我们需要掌握的技能之一

     

    本系列学习特点

    在学习HAL库与CubeMX的时候,很多初学者对与各种配置选项可能感觉无从下手,看得懂却又不知道原理,想要配置自己需要的功能又不知道应该如何配置,同时很多人从标准库转到HAL库对于各种函数的应用不太了解,

    在标准库里直接有很多的例程,很多甚至大部分同学配置时只是基于例程修改,整个外设的完整配置流程却不能了解,觉得自己掌握了这个外设,真正的配置与原理却不知道,成为了一个应用者,而不是一个嵌入式开发者,这样子是很不好的习惯,

     

    我们本系列的学习教程,是从 外设原理+STM32CubeMX配置+HAL库函数讲解      三个方面入手讲解

    • 首先讲解对应外设原理,以及外设的各种功能选项和原理,让你了解外设的整个工作流程
    • 随后基于CubeMX配置对应外设功能,将CubeMX上每个对应外设的选项和上面的原理讲解结合起来,让你更好的理解!
    • 最后基于HAL库,讲解对应外设的函数,并实现一个小功能,让你看懂HAL库的使用

    在配置完一套对应外设之后,你会详细地了解外设的配置选项,配置原理,这时候再去看标准库,也会有事半功倍的效果,你会更加详细地了解标准库的各种配置

     

    【STM32】STM32 CubeMx使用教程一--安装教程                                                                                                                【STM32】STM32CubeMX教程二--基本使用(新建工程点亮LED灯)                                                                                      【STM32】HAL库 STM32CubeMX教程三----外部中断(HAL库GPIO讲解)                                                                                【STM32】HAL库 STM32CubeMX教程四---UART串口通信详解                                                                                            【STM32】HAL库 STM32CubeMX教程五----看门狗(独立看门狗,窗口看门狗)                                                                                【STM32】HAL库 STM32CubeMX教程六----定时器中断                                                                                                                  【STM32】HAL库 STM32CubeMX教程七---PWM输出(呼吸灯)                                                                                                        【STM32】HAL库 STM32CubeMX教程八---定时器输入捕获                                                                                                      【STM32】HAL库 STM32CubeMX教程九---ADC                                                                                                                  【STM32】HAL库 STM32CubeMX教程十---DAC                                                                                                              【STM32】HAL库 STM32CubeMX教程十一---DMA (串口DMA发送接收)                                                                              【STM32】HAL库 STM32CubeMX教程十二---IIC(读取AT24C02 )

     

    持续更新中....     

    其他:

    【STM32】系统时钟RCC详解(超详细,超全面)

    【STM32】STM32F4 GPIO八种模式及工作原理详解

    【STM32】STM32CubeMX教程--功能介绍

    【STM32】 定时器---正交解码编码器模式详解

    STM32 HAL CubeMX 串口IDLE接收空闲中断+DMA

    PWM原理 PWM频率与占空比详解

    IIC原理超详细讲解---值得一看

    剩余的ADC RTC时钟,DMA can通信 iic  等 近期会更新,欢迎关注博主

     

     

    展开全文
  • STM32新手入门教程

    万次阅读 多人点赞 2020-11-24 09:53:38
    STM32简介 简介参考自:小马哥STM32四轴学习平台–DragonFly四轴STM32单片机软件入门级飞控算法课程 单片微型计算机简称单片机(MCU(MicrbControl Unit)),我们自己的个人计算机中,CPU、RAM、ROM、I/O这些都是...

    STM32简介

    简介参考自:小马哥STM32四轴学习平台–DragonFly四轴STM32单片机软件入门级飞控算法课程

    单片微型计算机简称单片机(MCU(MicrbControl Unit)),我们自己的个人计算机中,CPU、RAM、ROM、I/O这些都是单独的芯片,然后这些芯片被安装在一个主板上,这样就构成了我们的PC主板,进而组装成电脑,而单片机只是将这所有的集中在了一个芯片上而已。单片机又有8位的如51单片机、16位的如MSP430、32位的如STM32,通常我们说的多少位通常指的是内核(CPU)一次处理的数据宽度。也就是说内核一次处理的位数越多单片机的计算速度就越快,性能也就越强悍。

    STM32是意法半导体(ST)推出一款32位的单片机。STM32具有超低的价格、超多的外设、丰富的型号、优异的实时性、极低的开发成本等优势。STM32凭借其产品线的多样化、极高的性价比、简单易用的库开发方式,迅速在众多32位单片机中脱颖而出。

    STM32芯片内部可以粗略划分两部分:内核+片上外设。如果与电脑类比,内核与片上外设就如同电脑的CPU与主板、内存、显卡、硬盘的关系。
    ARM公司只设计内核不生产芯片,他会将有关内核的技术授权给各半导体厂商例如ST、TI、Atme1、NXP等厂商。这些厂商都是基于这个内核自己设计片上外设如SRAM、ROM、FLASH、USART、GPIO等,然后集成到一个硅片上,这就是我们现在用的芯片。
    芯片内部架构见图:

    image-20201123192912952

    芯片内部内核和外设分别是两个公司设计的,那他们该怎么联系到一起协同高效的工作呢?答案就是总线,学过计算机组成原理的同学都应该知道计算机五大组成部分运算器、控制器、存储器、输入设备、输出设备他们之间的通信就是通过总线。我们上面也说了单片机就是一个集成在硅片上的计算机,所以他内部的连接关系也是靠总线。
    STM32内部一共有11条总线:

    image-20201123194739287

    我们知道,在嵌入式开发中,比如51和Arduino,我们写程序烧入芯片就可以实现控制。那么我们写的程序怎么就能控制我们的单片机工作呢或者程序在控制什么东西呢?
    那个东西就是寄存器,其实不管我们用库开发还是寄存器开发我们本质上就是在控制寄存器上的每个位的通断,并且这些寄存器都有其特定的功能。换句话说每个外设(如GPI0、USART、I2C、SPI.…)都对应有寄存器来对他控制。

    所以STM32可以用寄存器开发也可以用库开发

    STM的选型

    STM32是ST的所有产品的统称,ST有两大家族STM8和STM32。STM8主要针对于低成本,对主频要求比较低、运算速度要求不是很高的低端市场。STM32主要应用于项目对主频要求较高、运算速度比较快、实时性好的中高端市场。STM32有很多产品大致划分可分为主流MCU、高性能MCU、低功耗MCU。其中主流MCU如STM32F1系列、高性能MCU如STM32F4、STM32F7系列、低功耗MCU如STM32L0系列。并且每个系列产品下面还会根据闪存容量、外设数量、封装大小分为很多种类并且价格也是差别很大。

    image-20201123193713582

    STM32型号的说明:以STM32F103RBT6这个型号的芯片为例,该型号的组成为7个部分,其命名规则如下:

    1STM32STM32代表ARM Cortex-M内核的32位微控制器。
    2FF代表芯片子系列。
    3103103代表增强型系列。
    4RR这一项代表引脚数,其中T代表36脚,C代表48脚,R代表64脚,V代表100脚,Z代表144脚,I代表176脚。
    5BB这一项代表内嵌Flash容量,其中6代表32K字节Flash,8代表64K字节Flash,B代表128K字节Flash,C代表256K字节Flash,D代表384K字节Flash,E代表512K字节Flash,G代表1M字节Flash。
    6TT这一项代表封装,其中H代表BGA封装,T代表LQFP封装,U代表VFQFPN封装。
    766这一项代表工作温度范围,其中6代表-40——85℃,7代表-40——105℃。

    我手上是一款德飞莱尼莫M3S V2.3开发板

    (德飞莱)尼莫M3S串口驱动安装及下载程序使用说明书

    用的是STM32F103ZET6,芯片说明书如下:

    微信截图_20201120172445

    之后还购置了一款最小系统板,搭载STM32103C8T6

    image-20201123201356072

    编写程序

    先下载keil软件(官网下载MDK5的安装包):

    微信截图_20201120175054

    注意:

    微信截图_20201120175054

    所以要开发C51就得下载C51的Keil要开发STM32就得下载MDK-Arm

    如果要设置C51和STM32的开发环境,一般需要准备如下文件:

    微信截图_20201120175054

    资源链接: 百度网盘密码:d1cs

    安装可以参考这个:STM32开发环境搭建(Keil)

    MDK5安装破解以及安装stm32与C51支持包(附安装包)

    其中pack文件是STM32的芯片包,可以在安装完keil后下载(KEIL公司的软件包托管网站)双击安装,也可以去keil的pack Installer安装。

    Keil安装

    选择安装路径时包括选择MDK核心组件(Core)的安装路径和外设包(Pack)的安装路径,一般只用选择 Core 的安装路径,Pack 的路径会自动设置为 Core 路径下的ARM/PACK

    安装完成后,会自动弹出 Pack Installer 界面,如果没有的话可以打开安装好的 Keil uVision5 软件,在工具栏上找到 Pack Installer 的图标,然后点击进入:

    mdk5_pack_installer

    由于我们使用的STM32型号为 STM32F103ZET6,还需要安装开发所需要的器件支持包(Device Family Pack, i.e. DFP),所以展开STM系列产品的菜单栏,找到芯片设备,点击左边Packs中的三个组件,Pack Installer 会自动从网上下载最新版本的组件,下载进度在 Pack Installer 底部状态栏显示。(由于我已经通过双击安装好了,所以是Up to date)

    image-20201123165751452

    直接用Keil5新建工程(只能用Keil5快速新建工程)。

    Project-> New,之后选择自己的开发板芯片:

    image-20201123172441979

    确定之后又跳到运行环境的界面:

    image-20201123181848042

    必选CMSIS的Core还有Device的Startup

    如果要连接外设必须勾选外设的时钟RCC,一般再勾选上FrameworkGPIO、和USART串口。

    点击OK确定创建项目。项目创建完成后就是这样的:

    image-20201123182513726

    可以看到已经包含了我们选择的库文件。如果还需要什么可以再点击图上的按钮再次打开运行环境配置页面。

    image-20201123182326097

    之后可以管理一下项目目录,自定义一下名字。

    image-20201123183231495

    然后添加main.c文件:

    image-20201123183211905

    之后就可以在main文件中写代码了。

    image-20201123183738651

    写完可以编译一下,如果输出正确就表示环境配置没问题。

    image-20201123184915044

    这里默认是不会创建Hex文件的,所以还需要进入设置里面去设置一下。

    image-20201123183932143

    之后再编译就可以在Objects文件夹下面看到Hex文件。

    image-20201123185140948

    烧写程序

    1. USB转串口烧写

    参考这个:如何使用串口来给STM32下载程序

    不过具体还得看官方的开发板说明书。

    1. ST-Link烧写

      STM32 ST-LINK Utility介绍、下载、安装、使用方法

    STLink 上 LED 指示灯用于提示当前的工作状态,具体情况如下:

    • LED 闪烁红色:STLink 已经连接至计算机。
    • LED 保持红色:计算机已经成功与 STLink 建立通信连接。
    • LED 交替闪烁红色绿色:数据正在传输。
    • LED 保持绿色:最后一次通信是成功的。
    • LED 为橘黄色:最后一次通信失败。

    说白了就是3步:

    1.连接芯片:

    Tarage -> connect或直接点击连接快捷按钮:

    20160920161759141

    2.打开程序

    打开hex文件可以从菜单栏(File -> Open File)打开,也可以直接讲hex文件拖动到FLASH区域:

    20160920161809181

    3.下载程序

    点击“下载”(可以Taraget -> Program,也可以直接点击下载快捷按钮,如下图):

    20160920161820947

    弹出信息确认窗口,如hex文件路径、验证方式等,确认信息无误后点击“Start”开始下载程序。

    image-20201123190055806

    出现“Verification…OK”,说明下载成功。

    点亮LED灯

    GPIO简介

    参考自:【STM32开发】STM32 GPIO配置

    GPI0是通用输入输出端口的简称,从名字上也可看出GPIO最基本的功能就输入和输出。它也是芯片内部与外部电路连接的唯一的接口,换句话说只要我们使用片上外设几乎都会与GPIO打交道。
    GPI0基本功能是输入和输出,但是STM32本身就是一个很复杂的系统,内部外设繁多,那么GPIO的基本功能是肯定满足不了这么多外设的需求,芯片厂商为了解决此问题,将GPI0分为八种模式(输入4种+输出4种)。八种模式分别为:

    1. 输入浮空 GPIO_Mode_IN_FLOATING

    2. 输入上拉 GPIO_Mode_IPU

    3. 输入下拉 GPIO_Mode_IPD

    4. 模拟输入 GPIO_Mode_AIN

    5. 具有上拉或下拉功能的开漏输出 GPIO_Mode_Out_OD

    6. 具有上拉或下拉功能的推挽输出 GPIO_Mode_Out_PP

    7. 具有上拉或下拉功能的复用功能推挽 GPIO_Mode_AF_PP

    8. 具有上拉或下拉功能的复用功能开漏 GPIO_Mode_AF_OD

    我的STM32开发板板载两个LED小灯,电路图如下:

    image-20201123204842471

    GPIO配置

    由于STM32的GPIO工作模式有8种,所以在GPIO输出之前要先对要操作的GPIO进行配置:

    • 定义GPIO的初始化结构体类型

    • 使能GPIO的时钟

    • 配置GPIO的引脚

    • 配置GPIO口的输出类型为推挽

    • 配置GPIO口的输出速度

    • 初始化GPIO(初始化相应的寄存器)

    GPIO_InitTypeDef GPIO_InitStructure;  // 定义结构体变量
    //打开PB口时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
    //打开PE口时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
    //PB5,PE5引脚设置
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
    //设置输出速率50MHz
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    //推挽输出模式
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    //初始化外设GPIOx寄存器
    GPIO_Init(GPIOB, &GPIO_InitStructure);
    GPIO_Init(GPIOE, &GPIO_InitStructure);
    

    解释:

    1.定义GPIO的初始化类型结构体:

    GPIO_InitTypeDef GPIO_InitStructure;
    

    此结构体的定义是在stm32f10x_gpio.h文件中,其中包括3个成员。

    typedef struct
    {
      uint16_t GPIO_Pin;       
      GPIOSpeed_TypeDef GPIO_Speed;  
      GPIOMode_TypeDef GPIO_Mode;   
    }GPIO_InitTypeDef;
    

    (1)uint16_t GPIO_Pin;来指定GPIO的哪个或哪些引脚,取值参见stm32f10x_gpio.h头文件的宏定义。

    (2)GPIOSpeed_TypeDef GPIO_Speed;GPIO的速度配置,此项的取值参见stm32f10x_gpio.h头文件GPIOSpeed_TypeDef枚举的定义,其中对应3个速度:10MHz、2MHz、50MHz;

    (3)GPIOMode_TypeDef GPIO_Mode;为GPIO的工作模式配置,其取值参见stm32f10x_gpio头文件GPIOMode_TypeDef枚举的定义,即GPIO的8种工作模式。

    2.使能GPIO时钟

    ARM与C51单片机不同的是,不用外设的时候,如IO口、ADC、定时器等等,都是禁止时钟的,以达到节能的目的,只有要用到的外设,才开启它的时钟。

    void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);
    

    此函数是在stm32f10x_rcc.c文件中定义的。其中第一个参数指要打开哪一组GPIO的时钟,取值参见stm32f10x_rcc.h文件中的宏定义,第二个参数为打开或关闭使能,取值参见stm32f10x.h文件中的定义,其中ENABLE代表开启使能,DISABLE代表关闭使能。

    3.设置GPIO_InitTypeDef结构体三个成员的值

    这里包括引脚、速度和工作模式,取值可参考第一部分。

    4.初始化GPIO

    void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef*  GPIO_InitStruct);
    

    函数配置GPIO,此函数是在stm32f10x_gpio.c文件中定义的,其中第一个参数代表要配置哪组GPIO,取值参见stm32f10x.h文件中的定义,第二个参数是第1步定义的GPIO的初始化类型结构体。

    GPIO电平输出

    官方让GPIO输出高低电平的函数:

    GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    

    函数就是置位GPIO,即让相应的GPIO输出高电平;

    void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
    

    函数是让GPIO复位的,即让相应的GPIO输出低电平。

    程序编写

    # include "stm32f10x.h"
    
    #define LED3_OFF GPIO_SetBits(GPIOB,GPIO_Pin_5)
    #define LED3_ON GPIO_ResetBits(GPIOB,GPIO_Pin_5)
    
    void LED_Init(void)
    {
        GPIO_InitTypeDef GPIO_InitStructure;  // 定义结构体变量
        //打开PB口时钟
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
        //PB5引脚设置
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
        //端口速度
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        //端口模式,此为输出推挽模式
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        //初始化对应的端口
        GPIO_Init(GPIOB, &GPIO_InitStructure);
    }
    int main()
    {
        LED_Init();
        while(1)
        {
            LED3_ON;
        }
    }
    
    

    闪烁LED灯

    这个实验室做的两个led流水灯。

    程序编写

    首先新建一个文件夹MY

    在该文件夹下新建一个led.h头文件:

    #ifndef __LED_H
    #define __LED_H
    
    #include "stm32f10x.h"
    
    #define LED2_OFF GPIO_SetBits(GPIOE,GPIO_Pin_5)
    #define LED2_ON GPIO_ResetBits(GPIOE,GPIO_Pin_5)
    #define LED2_REV GPIO_WriteBit(GPIOE, GPIO_Pin_5,(BitAction)(1-(GPIO_ReadOutputDataBit(GPIOE, GPIO_Pin_5))))
    
    #define LED3_OFF GPIO_SetBits(GPIOB,GPIO_Pin_5)
    #define LED3_ON GPIO_ResetBits(GPIOB,GPIO_Pin_5)
    #define LED3_REV GPIO_WriteBit(GPIOB, GPIO_Pin_5,(BitAction)(1-(GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_5))))
    
    void LED_Init(void);
    
    #endif
    
    

    之后新建一个led.c文件:

    #include "led.h"
    
    void LED_Init(void)
    {
        GPIO_InitTypeDef GPIO_InitStructure;  // 定义结构体变量
        //打开PB口时钟
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
        //打开PE口时钟
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
        //PB5,PE5引脚设置
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
        //端口速度
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        //端口模式,此为输出推挽模式
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        //初始化对应的端口
        GPIO_Init(GPIOB, &GPIO_InitStructure);
        GPIO_Init(GPIOE, &GPIO_InitStructure);
    }
    
    

    最后编写main文件:

    # include "stm32f10x.h"
    # include "led.h"
    
    int main()
    {
        uint32_t i; 
        LED_Init(); //初始化LED
    
        LED2_ON;
        LED3_OFF;
        for(i=0; i<0xffffff; i++); //for循环不精确延时
        while(1)
        {
            for(i=0; i<0xfffff; i++); //for循环不精确延时
            LED2_REV;//LED2取反
            LED3_REV;//LED3取反
        }
    }
    
    

    结构目录如图:

    微信截图_20201124091425

    .h文件默认是不显示的。编译通过后,在左侧的.C文件上会出现一个“+”号,点开就是该C文件使用到的h文件。

    实验结果

    GIF-min
    展开全文
  • STM32STM32 CubeMx使用教程一--安装教程

    万次阅读 多人点赞 2019-08-09 09:01:48
    一、STM32CubeMX 简介 1、STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具,目的就是为了方便开发者, 允许用户使用图形化向导生成C 初始化代码,可以大大减轻开发工作,时间和费用,提高...
  • STM32(一)STM32简介

    万次阅读 多人点赞 2018-02-03 14:44:00
    大家好,今天我跟大家分享一下学习STM32的一些收获,希望对初学STM32的同学有所启示。当然,本人也是一名初学者,如果有谈论不妥之处,还望您能够批评指正,不吝赐教,本人将非常感激。如果有什么问题,欢迎您到...
  • STM32】HAL库 STM32CubeMX教程六----定时器中断

    万次阅读 多人点赞 2019-08-13 09:10:04
    是我们学习STM32最频繁使用到的外设之一,所以一定要掌握好,这节我们讲解定时器中断,本系列教程将对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 所用工具: 1、芯片:...
  • STM32】HAL库 STM32CubeMX教程七---PWM输出(呼吸灯)

    万次阅读 多人点赞 2019-08-14 15:26:21
    前言: 本系列教程将 对应外设原理,HAL...1、芯片:STM32F407ZET6/STM32F103ZET6 2、STM32CubeMx软件 3、IDE: MDK-Keil软件 4、STM32F1xx/STM32F4xxHAL库 知识概括: 通过本篇博客您将学到: PWM工作原理 ...
  • STM32移植LWIP

    万次阅读 2018-04-06 11:56:50
    本文使用的是STM32F207VCT6平台,MII接口的RTL8201EL网络芯片,LWIP版本是1.4.1基础工程是:已经实现了10ms定时,led灯1s闪烁,还有串口打印欢迎查看本文所在的系列,STM32的LWIP应用,点击跳转本文使用的IDE是IAR7.2...
  • STM32 60个实用案例分享

    万次阅读 多人点赞 2019-03-04 17:01:19
    STM32 60个案例 留联系方式资料免费送
  • 2018.1.19 HAL库详解见STM32之HAL库详解 及 手动移植 STM32 Embedded Software   工作以来一直使用ST的STM32系列芯片,ST为开发者提供了非常方便的开发库。到目前为止,有标准外设库(STD库)、HAL库、LL库 三...
  • STM32芯片烧录的三种方式介绍,MDK、STM32 ST-LINK Utility以及STM32CubeProgrammer1 资源概述2.MDK软件下载介绍3 STM32 ST-LINK Utility介绍4 STM32CubeProgrammer5 官方正版STLINK仿真器 1 资源概述 开发板:正点...
  • STM32 ISP工具 串口下载 串口调试工具 STM32F4STM32 ISP 软件_支持STM32F4/STM32F2/STM32F1 STM32F0 本程序使用VC2010写的,运行前请先安装Microsoft .NET Framework 4 可到微软官方网站下载,下载地址 ...
  • STM32F4与STM32F1的区别

    万次阅读 多人点赞 2017-01-09 13:17:41
    作为Cortex M3市场的最大占有者,ST公司在2011年又推出基于Cortex M4内核的STM32F4系列产品,相对与STM32F1/F2等Cortex M3产品,STM32F4最大的优势,就是新增了硬件FPU单元以及DSP指令,同时,STM32F4的主频也提高了...
  • STM32CubeMX介绍、下载与安装

    万次阅读 多人点赞 2016-08-16 22:52:55
    推荐 分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来...相信很多人都知道STM32CubeMX这个工具,也是近年来开发STM32比较流行的一个工具。这个工具从两年...
  • STM32】5分钟了解STM32的串口通信

    万次阅读 多人点赞 2020-08-21 10:18:28
    串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节的通信方式。文章主要是串口通信简介和STM32的串口通信。
  • 携手STM32CubeMX玩转STM32

    万人学习 2019-04-19 09:30:00
    本课程教大家如何利用STM32CubeMX玩转STM32STM32CubeMX支持的所有型号MCU都适用于本课程)。课程内容分为基础内容和扩展内容,例如:讲解串口时会扩展开讲Xmodem通信协议,讲解ADC/DAC时会扩展讲傅里叶计算,讲解...
  • STM32b
  • STM32 串口中断总结

    万次阅读 多人点赞 2017-12-25 17:03:17
    首先对于STM32外设库文件的应用编程,misc.c和stm32f10x_rcc.c是肯定要添加到。 接下来就是我们要用到的相关外设了。毫无疑问,串口文件stm32f10x_usart.c是必须的。串口通信是对通用GPIO端口引脚的功能复用,所以...
  • STM32】HAL库 STM32CubeMX教程八---定时器输入捕获

    万次阅读 多人点赞 2019-08-21 08:53:15
    前言: 本系列教程将外设原理,HAL库...1、芯片:STM32F407ZET6/STM32F103ZET6 2、STM32CubeMx软件 3、IDE: MDK-Keil软件 4、STM32F1xx/STM32F4xxHAL库 5 知识概括: 通过本篇博客您将学到: SMT32定时器输...
  • 上一节我们讲解了STM32CubeMX的基本使用和工程的配置,那么这一节我们正式来学习CubeMX配置STM32的各个外设功能了 今天我们会详细的带你学习STM32CubeMX配置外部中断,并且讲解HAL库的GPIO的各种函数,带你学习不...
  • STM32】使用STM32提供的DSP库进行FFT(附详细代码)

    万次阅读 多人点赞 2019-05-12 15:42:41
    最近,因为项目需要在STM32F103系列处理器上,对采集的音频信号进行FFT运算,然而STM32F103毕竟不是STM32F4系列的处理器,对于一般的FFT运算程序还是比较缓慢的。 幸亏官方提供了针对FFT的官方库,但是去官网找了...
  • STM32F103系列 定义规格对应,Mark一下 startup_stm32f10x_ld_vl.s: for STM32 Low density Value line devices startup_stm32f10x_ld.s: for STM32 Low density devices startup_stm32f10x_md_vl.s: for STM32 ...
  • STM32STM32F4开发板简介

    千次阅读 2020-08-17 11:08:27
    ALIENTEK 探索者 STM32F4 开发板,资源十分丰富,并把 STM32F407的内部资源发挥到了极致,基本所有 STM32F407 的内部资源,都可以在此开发板上验证,同时扩充丰富的接口和功能模块,整个开发板显得十分大气 02. STM...
  • 由于STM32CubeMX和STM32CubeProg是基于java环境运行,所以要安装JRE配置Java环境,由于我的电脑之前安装eclipse时已经配置过java环境,所以没有做JRE安装教程,具体教程可去网上找一下。(一定要先安装JRE!!!!!...
  • KEIL 5 pack离线包 Stm32f1/f2/f3/f4

    万次阅读 多人点赞 2018-08-13 15:43:42
    keil5 pack 离线包安装:安装过keil5软件后,...F1pack包https://keilpack.azureedge.net/pack/Keil.STM32F1xx_DFP.2.3.0.pack F2pack包https://keilpack.azureedge.net/pack/Keil.STM32F2xx_DFP.2.9.0.pack F3pa...
  • STM32学习 基于STM32F103C8t6

    万次阅读 多人点赞 2019-03-22 23:00:15
    STM32学习 基于STM32F103C8t6 STM32F103C8t6命名规则 先对自己使用的芯片命名有所了解,才能更好的宏观掌控 STM32F103C8t6引脚命名
  • STM32】HAL库 STM32CubeMX教程十---DAC

    千次阅读 多人点赞 2019-10-07 15:22:49
    前言: ...1、芯片: STM32F407ZET6/ STM32F103ZET6 2、STM32CubeMx软件 3、IDE: MDK-Keil软件 4、STM32F1xx/STM32F4xxHAL库 知识概括: 通过本篇博客您将学到: DAC工作原理 STM32CubeMX创建...
  • stm32f10x.h 固件库stm32f10x.h中有如下解释#if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD) && !defined (STM...
  • 在2018年3月份,本人写下了一篇博文《几种STM32开发IDE的比较与选择》,当时ST公司已经收购了Atollic公司,TrueSTUDIO 9.0变成一个免费的STM32开发IDE工具。当时本人就预见TrueSTUDIO +STM32CubeMX必将是ST公司大力...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 242,183
精华内容 96,873
关键字:

stm32