精华内容
下载资源
问答
  • 【STM32】HAL库 STM32CubeMX教程四---UART串口通信详解

    万次阅读 多人点赞 2019-08-11 08:57:51
    今天我们学习STM32CubeMX串口的操作,以及HAL库串口的配置,我们会详细的讲解各个模块的使用和具体功能,并且基于HAL库实现Printf函数功能重定向,UART中断接收,本系列教程将HAL库与STM32CubeMX结合在一起讲解,使...

    前言: 

    今天我们学习STM32CubeMX串口的操作,以及HAL库串口的配置,我们会详细的讲解各个模块的使用和具体功能,并且基于HAL库实现Printf函数功能重定向,UART中断接收,本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用

     

    所用工具

    1、芯片: STM32F407ZET6

    2、STM32CubeMx软件

    3、IDE: MDK-Keil软件

    4、STM32F1xx/STM32F4xxHAL库 

    5、串口: 使用USART1 PA9,PA10

    知识概括:

    通过本篇博客您将学到:

    STM32CubeMX创建串口例程

    HAL库UATR函数库

    重定义printf函数

    HAL库,UART中断接收

    HAL库UATR接收与发送例程

    工程创建

     

    1设置RCC

    • 设置高速外部时钟HSE 选择外部时钟源

    2设置串口

    • 1点击USATR1   
    • 2设置MODE为异步通信(Asynchronous)       
    • 3基础参数:波特率为115200 Bits/s。传输数据长度为8 Bit。奇偶检验无,停止位1      接收和发送都使能 
    • 4GPIO引脚设置 USART1_RX/USART_TX
    • 5 NVIC Settings 一栏使能接收中断

    3设置时钟

    我的是  外部晶振为8MHz 

    • 1选择外部时钟HSE 8MHz   
    • 2PLL锁相环倍频72倍
    • 3系统时钟来源选择为PLL
    • 4设置APB1分频器为 /2

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

     

    4项目文件设置

    • 1 设置项目名称
    • 2 设置存储路径
    • 3 选择所用IDE

    5创建工程文件

    然后点击GENERATE CODE  创建工程

    配置下载工具

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

    HAL库UART函数库介绍

     

      UART结构体定义

    UART_HandleTypeDef huart1;

    UART的名称定义,这个结构体中存放了UART所有用到的功能,后面的别名就是我们所用的uart串口的别名,默认为huart1

    可以自行修改

    1、串口发送/接收函数

    • HAL_UART_Transmit();串口发送数据,使用超时管理机制 
    • HAL_UART_Receive();串口接收数据,使用超时管理机制
    • HAL_UART_Transmit_IT();串口中断模式发送  
    • HAL_UART_Receive_IT();串口中断模式接收
    • HAL_UART_Transmit_DMA();串口DMA模式发送
    • HAL_UART_Transmit_DMA();串口DMA模式接收

    这几个函数的参数基本都是一样的,我们挑两个讲解一下

    串口发送数据:

    HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)

    功能:串口发送指定长度的数据。如果超时没发送完成,则不再发送,返回超时标志(HAL_TIMEOUT)。

    参数:

    • UART_HandleTypeDef *huart      UATR的别名    如 :   UART_HandleTypeDef huart1;   别名就是huart1  
    • *pData      需要发送的数据 
    • Size    发送的字节数
    • Timeout   最大发送时间,发送数据超过该时间退出发送   
    举例:   HAL_UART_Transmit(&huart1, (uint8_t *)ZZX, 3, 0xffff);   //串口发送三个字节数据,最大传输时间0xffff

    中断接收数据:

    HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)

    功能:串口中断接收,以中断方式接收指定长度数据。
    大致过程是,设置数据存放位置,接收数据长度,然后使能串口接收中断。接收到数据时,会触发串口中断。
    再然后,串口中断函数处理,直到接收到指定长度数据,而后关闭中断,进入中断接收回调函数,不再触发接收中断。(只触发一次中断)

    参数:

    • UART_HandleTypeDef *huart      UATR的别名    如 :   UART_HandleTypeDef huart1;   别名就是huart1  
    • *pData      接收到的数据存放地址
    • Size    接收的字节数
    举例:    HAL_UART_Receive_IT(&huart1,(uint8_t *)&value,1);   //中断接收一个字符,存储到value中

    2、串口中断函数

     

    • HAL_UART_IRQHandler(UART_HandleTypeDef *huart);  //串口中断处理函数
    • HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart);  //串口发送中断回调函数
    • HAL_UART_TxHalfCpltCallback(UART_HandleTypeDef *huart);  //串口发送一半中断回调函数(用的较少)
    • HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart);  //串口接收中断回调函数
    • HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart);//串口接收一半回调函数(用的较少)
    • HAL_UART_ErrorCallback();串口接收错误函数

    串口接收中断回调函数:

    HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart);  

    功能:HAL库的中断进行完之后,并不会直接退出,而是会进入中断回调函数中,用户可以在其中设置代码,

               串口中断接收完成之后,会进入该函数,该函数为空函数,用户需自行修改,

    参数:

    • UART_HandleTypeDef *huart      UATR的别名    如 :   UART_HandleTypeDef huart1;   别名就是huart1  
    举例:   HAL_UART_RxCpltCallback(&huart1){           //用户设定的代码               }

    串口中断处理函数

    HAL_UART_IRQHandler(UART_HandleTypeDef *huart);  

    功能:对接收到的数据进行判断和处理  判断是发送中断还是接收中断,然后进行数据的发送和接收,在中断服务函数中使用

     

    如果接收数据,则会进行接收中断处理函数

     /* UART in mode Receiver ---------------------------------------------------*/
      if((tmp_flag != RESET) && (tmp_it_source != RESET))
      { 
        UART_Receive_IT(huart);
      }
    

    如果发送数据,则会进行发送中断处理函数

      /* UART in mode Transmitter ------------------------------------------------*/
      if (((isrflags & USART_SR_TXE) != RESET) && ((cr1its & USART_CR1_TXEIE) != RESET))
      {
        UART_Transmit_IT(huart);
        return;
      }

    3串口查询函数

      HAL_UART_GetState();  判断UART的接收是否结束,或者发送数据是否忙碌

      举例:     

    while(HAL_UART_GetState(&huart4) == HAL_UART_STATE_BUSY_TX)   //检测UART发送结束

     

    USART接收与发送

     

    重新定义printf函数

    • 在 stm32f4xx_hal.c中包含#include <stdio.h>
    #include "stm32f4xx_hal.h"
    #include <stdio.h>
    extern UART_HandleTypeDef huart1;   //声明串口
    • 在 stm32f4xx_hal.c 中重写fget和fput函数
    • /**
        * 函数功能: 重定向c库函数printf到DEBUG_USARTx
        * 输入参数: 无
        * 返 回 值: 无
        * 说    明:无
        */
      int fputc(int ch, FILE *f)
      {
        HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);
        return ch;
      }
      
      /**
        * 函数功能: 重定向c库函数getchar,scanf到DEBUG_USARTx
        * 输入参数: 无
        * 返 回 值: 无
        * 说    明:无
        */
      int fgetc(FILE *f)
      {
        uint8_t ch = 0;
        HAL_UART_Receive(&huart1, &ch, 1, 0xffff);
        return ch;
      }
      
      在main.c中添加
     #define RXBUFFERSIZE  256
    char RxBuffer[RXBUFFERSIZE]; 
    
      while (1)
      {
        /* USER CODE END WHILE */
    			printf("Z小旋测试\n");
    			HAL_Delay(1000);
        /* USER CODE BEGIN 3 */
      }

    之后便可以使用Printf函数和Scanf,getchar函数

    UART接收中断

    因为中断接收函数只能触发一次接收中断,所以我们需要在中断回调函数中再调用一次中断接收函数

    具体流程:

    1、初始化串口

    2、在main中第一次调用接收中断函数

    3、进入接收中断,接收完数据  进入中断回调函数

    4、修改HAL_UART_RxCpltCallback中断回调函数,处理接收的数据,

    5  回调函数中要调用一次HAL_UART_Receive_IT函数,使得程序可以重新触发接收中断

    函数流程图:

    HAL_UART_Receive_IT(中断接收函数   ->  USART2_IRQHandler(void)(中断服务函数)    ->    HAL_UART_IRQHandler(UART_HandleTypeDef *huart)(中断处理函数)    ->    UART_Receive_IT(UART_HandleTypeDef *huart) (接收函数)   ->    HAL_UART_RxCpltCallback(huart);(中断回调函数)

    HAL_UART_RxCpltCallback函数就是用户要重写在main.c里的回调函数。

    代码实现:

        并在main.c中添加下列定义:

    #include <string.h>
    
    #define RXBUFFERSIZE  256     //最大接收字节数
    char RxBuffer[RXBUFFERSIZE];   //接收数据
    uint8_t aRxBuffer;			//接收中断缓冲
    uint8_t Uart1_Rx_Cnt = 0;		//接收缓冲计数
    

    在main()主函数中,调用一次接收中断函数

    /* USER CODE BEGIN 2 */
    	HAL_UART_Receive_IT(&huart1, (uint8_t *)&aRxBuffer, 1);
    /* USER CODE END 2 */
    

    在main.c下方添加中断回调函数

    /* USER CODE BEGIN 4 */
    
    void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
    {
      /* Prevent unused argument(s) compilation warning */
      UNUSED(huart);
      /* NOTE: This function Should not be modified, when the callback is needed,
               the HAL_UART_TxCpltCallback could be implemented in the user file
       */
     
    	if(Uart1_Rx_Cnt >= 255)  //溢出判断
    	{
    		Uart1_Rx_Cnt = 0;
    		memset(RxBuffer,0x00,sizeof(RxBuffer));
    		HAL_UART_Transmit(&huart1, (uint8_t *)"数据溢出", 10,0xFFFF); 	
            
    	}
    	else
    	{
    		RxBuffer[Uart1_Rx_Cnt++] = aRxBuffer;   //接收数据转存
    	
    		if((RxBuffer[Uart1_Rx_Cnt-1] == 0x0A)&&(RxBuffer[Uart1_Rx_Cnt-2] == 0x0D)) //判断结束位
    		{
    			HAL_UART_Transmit(&huart1, (uint8_t *)&RxBuffer, Uart1_Rx_Cnt,0xFFFF); //将收到的信息发送出去
                while(HAL_UART_GetState(&huart1) == HAL_UART_STATE_BUSY_TX);//检测UART发送结束
    			Uart1_Rx_Cnt = 0;
    			memset(RxBuffer,0x00,sizeof(RxBuffer)); //清空数组
    		}
    	}
    	
    	HAL_UART_Receive_IT(&huart1, (uint8_t *)&aRxBuffer, 1);   //再开启接收中断
    }
    /* USER CODE END 4 */
    

    发送数据被正常返回

     

     

    展开全文
  • STM32CubeMX

    2021-01-08 22:56:10
    STM32CubeMX
  • 说明:本文原创作者『strongerHuang』首发于微信公众号『嵌入式专栏』,同时也更新在我的个人网站:EmbeddedDevelop标签:STM32、 STM32CubeMX、 LL库、 HAL库一、写在前面上一篇文章让你入门STM32CubeMX,你可能...

    965a4766d2d7172ab586633da2c5b814.png

    说明:

    本文原创作者『strongerHuang

    首发于微信公众号『嵌入式专栏』,同时也更新在我的个人网站:EmbeddedDevelop

    标签:STM32、 STM32CubeMX、 LL库、 HAL库

    一、写在前面

    上一篇文章让你入门STM32CubeMX,你可能还是会觉得心里摸不到底。本文就从另外一个角度带你了解STM32CubeMX。

    本文讲述STM32CubeMX各主要界面内容,让你对STM32CubeMX这个工具有一个比较直观的认识。

    二、主界面

    打开STM32CubeMX,呈现的界面大致如下图,界面比较简洁。我把它划分为六大板块。

    fb7eb790073e925be286b4e0b6eccd56.png

    1.菜单 STM32CubexMX V4版本(前面老版本)有很多功能做在菜单里面,但V5版本优化(删减)菜单,把一些常用功能做在相应界面里面了。

    菜单内容后面会单独详细讲述。

    2.社交链接 facebook(脸书)、youtube、twitter(推特)以及ST社区、官网信息等。

    相信大家都能理解,就像国内微信、微博、QQ等与ST相关的一些社交链接。

    3.面包屑导航 这个名词可能很多人没听过,英文名叫Bread crumbs,中文名叫面包屑导航。当然,可以理解为导航栏。

    进入配置界面,如下图:

    0ace2a78b48531b9c8a4b3789741a1c0.png

    4.已存在工程 ·Recent Opened Projects:最近打开的项目 ·Other Projects:打开其他已存在工程

    5.新建工程 ·Start My project from MCU:从MCU开始我的项目 ·Start My project from STBoard:从ST开发板开始我的项目 这里是进入MCU/BOARD选择器,选择MCU型号和ST开发板型号(其中界面下面详细描述)。

    6.软件管理 ·CHECK FOR UPDATE:检查更新 ·INSTALL/REMOVE:安装/移除软件

    这里其实就是安装的软件进行管理,包含HAL库。安装的过程可以参看文章: STM32CubeMX系列教程02_STM32CubeMX工具、HAL库下载、安装说明

    三、MCU/BOARD选择器界面

    MCU和BOARD选择器的界面类似,从上面主界面第5点新建工程进入。

    选择器主要功能是:通过输入MCU/BOARD型号,或者按照特定条件(如MCU系列、FLASH大小、外设控制器数量等)来筛选符合自己条件的MCU/BOARD。

    这里的选择器可以当做STM32的选型工具。

    66340ff4dd41547ae306e24ec9ca3d7a.png

    1.MCU和BOARD选择器切换 在这两种选择器之间进行切换,两种选择器界面包含类似。

    2.选择器“筛选” 筛选的方式有两种: A.通过输入型号 B.通过条件筛选

    3.描述 ·Features:选中型号MCU/板卡特征 ·Block Diagram:框图 ·Doc&Resources:文档和资源 ·Datasheet:数据手册下载(下载PDF文档) ·Buy:购买(跳入官网)

    4.MCU/BOARD列表 通过输入型号,或条件筛选之后,符合条件的MCU/BOARD列表。

    **选择器界面**动画效果:

    12fdcf5ceee340d090f2ea20acb68ec9.gif

    四、Pinout引脚输出配置

    这里翻译为引脚输出配置其实有点不正确,因为这里包含系统、外设资源、以及中间件等一些独立模块的配置

    8f7568f42e3b9fe362defbd86edd98c6.png

    这一板块的信息量比较大,使用STM32CubeMX的重点和难点大部分在这一界面

    我主要把它划分为三块:资源、配置和引脚/系统预览。可能不同系列、不同型号的MCU这里的配置信息都不同。

    这里不详细讲述,后期我会针对具体MCU实例的进行详细讲述

    五、时钟配置

    STM32各个系列的时钟都比较强大(请看时钟树),同时,各系列,各型号的时钟树也可能有差异。

    STM32CubeMX的时钟配置具有强大的一个功能,重点是图形化界面,让人一看就明白。

    同时,时钟配置里面有各种提示信息:比如可选择的分频倍频、最大时钟频率、警告错误提示等(如下图)。

    8bf668a6c7db7dd0bc754b60b6743819.png

    六、工程管理

    这一章节内容对工程相关的配置比较重要,大部分可以默认。主要有三部分内容:工程管理、代码生成、高级设置。

    0bfb33e16a29cd007dc695d8151601c9.png

    这里内容我后面单独写一篇文章详细讲述。

    七、工具

    目前工具这里包含两部分内容:PCC(Power Consumption Calculator)功耗计算、DDR Test Suite

    178eab1578c8b4063681e8a9aad31d09.png

    PCC这个功能应该用的比较多,开发低功耗相关产品这个功能可以用上这个工具。

    DDR Test Suite是一个目前(19年3月)只针对于STM32MP1系列,其他MCU没有这个功能。

    工具这项功能后期详细讲述。

    八、说明

    1.该文档仅供个人学习使用,版权所有,禁止商用。

    2.本文由我一个人编辑并整理,难免存在一些错误。

    3.为了方便大家平时公交、地铁、外出办事也能用手机随时随地查看该教程,该教程同步更新于微信公众号『嵌入式专栏』,关注微信公众号回复【STM32CubeMX系列教程】即可查看全系列教程。

    九、最后

    我的博客:http://www.strongerhuang.com

    我的GitHub:https://github.com/EmbeddedDevelop

    我的微信公众号(ID:strongerHuang)还在分享STM8、STM32、Keil、IAR、FreeRTOS、UCOS、RT-Thread、CANOpen、Modbus...等更多精彩内容,如果想查看更多内容,可以关注我的微信公众号『strongerHuang』。

    展开全文
  • 在配置好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 等等 

    展开全文
  • STM32CubeMX介绍、下载与安装

    万次阅读 多人点赞 2016-08-16 22:52:55
    推荐 分享一个大神的人工智能教程。...本教程今年更新了部分内容:STM32CubeMX系列教程 Ⅰ、写在前面 相信很多人都知道STM32CubeMX这个工具,也是近年来开发STM32比较流行的一个工具。这个工具从两年...

    推荐

    分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!http://www.captainbed.net/strongerhuang

     

    本教程今年更新了部分内容:STM32CubeMX系列教程
     

     

     

    Ⅰ、写在前面

    相信很多人都知道STM32CubeMX这个工具,也是近年来开发STM32比较流行的一个工具。这个工具从两年前第一版到现在已经有多个版本了,功能也从简单越来越强大了。

     

    STM32CubeMX是一个配置STM32代码的工具,它把很多东西封装的比较好,硬件抽象层、中间层、示例代码等。

     

    现在ST公司升级和维护的库主要就是STM32CubeMX的HAL库和标准外设库,使用这两种库开发STM32各有各的好处,下面简单描述一下。

     

    如果你是一名刚学STM32的初学者,想要把硬件底层相关的东西搞明白,不建议使用STM32CubeMX这个工具,建议使用之前经典的标准外设库来开发(先学习标准外设库,但有必要抽时间了解STM32CubeMX)。标准外设库可以很简单直接跟踪到底层寄存器,而HAL库里面的代码想要跟踪并理解底层很难。

    如果你是一名熟练使用标准外设库的人,有必要学习并使用STM32CubeMX来开发程序。

     

    本文内容2016年10月31日更新,且整理成PDF文件,提供给大家下载:

    http://pan.baidu.com/s/1geB5TLp

     

    更多关于STM32的文章,可以进入我博客查看:

    http://blog.csdn.net/ybhuangfugui

     

    作者:strongerHuang

    本文版权所有,未经允许,禁止用于其它商业用途!!!

     

    Ⅱ、STM32CubeMX的介绍

    STM32CubeMX是一个图形化的工具,也是配置和初始化C代码生成器(STM32 configuration and initialization C code generation),也就是自动生成开发初期关于芯片相关的一些初始化代码。

    从上图可以看得出,它包含了STM32所有系列的芯片,包含示例和样本(Examples and demos)、中间组件(Middleware Components)、硬件抽象层(Hardwaree abstraction layer)。

     

    STM32CubeMX的特性如下

    1.直观的选择 STM32 微控制器。

    2.微控制器图形化配置:

    l 自动处理引脚冲突

    l 动态设置确定的时钟树

    l 可以动态确定参数设置的外围和中间件模式和初始化

    l 功耗预测

    3.C代码工程生成器覆盖了STM32 微控制器初始化编译软件,如IAR、KEIL、GCC。

    4.可独立使用或作为 Eclipse 插件使用。

     

    STM32CubeMX是ST意法半导体的主动原创工具,它可以减轻开发的时间和费用。STM32CubeMX集成了一个全面的软件平台,支持STM32每一个系列的MCU开发。这个平台包括 STM32Cube HAL(一个 STM32 的抽象层集成软件,确保STM32 系列最大的移植性)。再加上兼容的一套中间件(RTOS、USB、TCP/IP 和图形),所有内嵌软件组件附带了全套例程。

     

    更多关于STM32CubeMX介绍可以进入ST官网查看。

     

    Ⅲ、下载

    JRESTM32CubeMX工具可以到官网下载,也可以在我的百度网盘下载(定期更新)。下面章节讲述的安装也是从官方下载的软件,为了方便大家下载,我将其上传至百度网盘(和官网的一样)。

     

    1.Oracle官方下载JRE

    由于STM32CubeMX软件是基于JAVA环境运行的,所以需要安装JRE才能使用,目前(2016年10月31日)JRE最新版本是jre1.8.0_112。

     

    TM32CubeMX要求JRE最低版本是1.7.0_45,如果你电脑已安装JRE版本大于1.7.0_45,则可以不用再下载安装。

     

    http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html

     

    接受许可,根据自己电脑系统选择下载(我们以Windows版本为例),如下图:

     

    2.ST官方下载STM32CubeMX工具、库

     

    官网可以下载最新版本的软件,目前(2016年10月31日)STM32CubeMX官方最新版本是V4.17.0。

    STM32CubeMX工具、库都在同一个网址下:

     

    http://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-configurators-and-code-generators/stm32cubemx.html

     

    A、STM32CubeMX工具

     

    【在网页最下面(如下图),点击网页中“Download”即可下载。(如果没有登录账号会提示“注册”或“登录”)】

     

    B、库下载

    【在网页中间偏下(如下图),点击“EMBEDDED SOFTWARE”切换到库软件,选择需要下载的库(看你芯片型号),同样也需要登陆账号,若觉得麻烦,可以在下面百度网盘下载】

     

    3.百度网盘下载

    ST官方下载资料或文档需要ST账号登陆成功才能下载,若觉得麻烦可以在我百度网盘下载(定期更新)。为了方便大家下载,我在百度网盘提供下载的版本也是上面官网下载,上传至百度网盘。里面包含STM32CubeMX软件

     

    JRE:http://pan.baidu.com/s/1cML4Hg

    STM32CubeMX工具:http://pan.baidu.com/s/1dFMFwHF

    STM32CubeMX资料:http://pan.baidu.com/s/1nvcxQC5

     

    注意:由于许多网盘近年来受到影响都相继停止服务或关闭了,如果网盘链接失效,请到官网下载,也可以关注微信公众号查看更新链接,或微信联系作者。

     

    Ⅳ、JRE的安装

    STM32CubeMX手册上要求PC安装JRE:

    The Java Run Time Environment 1.7 (version 1.7_45 or newer) must be installed. More information on installation requirements and procedure is in the STM32CubeMX User manual (UM1718).

    For Eclipse plug-in installation only, install one of the following IDE (on Windows OS):

    • Eclipse IDE Juno (4.2)

    • Eclipse IDE Luna (4.4)

    • Eclipse IDE Kepler (4.3)

    • Eclipse IDE Mars (4.5)

     

    JRE安装非常简单,以上面下载的最新版本“jre-8u112-windows-i586.exe”为例讲述一下安装过程:

     

    1.双击“jre-8u112-windows-i586.exe”(有管理员限制时:右键 -> 以管理员身份运行),点击“安装”。

    【不更改目标文件夹,则默认安装在:C:\Program Files\Java\jre1.8.0_112】

     

    2.等待安装

     

    3.安装完成,点击“关闭”

     

     

    Ⅴ、STM32CubeMX的安装

     

    现在(2016年10月31日)最新版本的STM32CubeMX是V4.17.0,支持安装的系统如下:

    Windows XP: 32-bit (x86)

    Windows 7: 32-bit (x86), 64-bit (x64)

    Windows 8: 32-bit (x86), 64-bit (x64)

    Linux: 64-bit (x64) (tested on RedHat, Ubuntu and Fedora)

    Mac OS X Yosemite or newer

     

    安装STM32CubeMX很简单,基本上一路“Next”下去就行了。

    以现在最新版本V4.17.0,安装在Windows系统为例来讲述安装过程。

     

    1.解压下载的文件,双击“SetupSTM32CubeMX-4.17.0.exe”(有管理员限制时:右键 -> 以管理员身份运行)

     

    2.点击“Next”

     

    3.选择“I accept the terms...”,点击“Next”

     

    4.选择安装路径(这里修改D盘),点击“Next”

     

    5.提示创建安装目录,点击“确定”

     

    6.勾选快捷方式,点击“Next”

     

    7.等待安装进度完成,点击“Next”

     

    8.点击“Done”,至此已经完成STM32CubeMX的安装

     

    以上就是安装STM32CubeMX到Windos的过程,关于Linux和MacOS系统的安装过程比较简单(这里不再讲述),可以参看官网提供的说明。

    On Linux

    Make sure you have access rights to the target installation directory, you can run the installation as root (or sudo)? to install STM32CubeMX on shared directories Double click (or launch from the console window) on the SetupSTM32CubeMX-4.17.0.linux file

     

    On MacOS

    Make sure you have access rights to the target installation directory, you can run the installation as root (or sudo)? to install STM32CubeMX on shared directories Double click (or launch from the console window) on the SetupSTM32CubeMX-4.17.0 application

     

     

    Ⅵ、STM32CubeMX库的安装

    STM32CubeMX库(固件支持包)的安装方式有三种:通过STM32CubeMX软件在线安装导入离线包解压离线包

     

    1.在线安装

    打开安装好的STM32CubeMX软件,进入库管理界面(Help -> Install New Libraries),会有一个列表,勾选上你要安装的固件库,点击“Install Now”直到安装成功。如下图:

     

     

    2.导入本地离线包

    下载好需要安装的离线包(也就是上面章节下载的库),在库管理界面(Help -> Install New Libraries),点击左下角的“From Local” -> 弹出文件选择框(选择下载的离线包文件),点击“Open”,进入解压安装过程,直到安装完成。如下图:

     

    3.解压离线包

    解压离线包(库)是最方便的安装方式,这里重要的一点就是需要知道前面安装STM32CubeMX工具指定库的路径

     

    查看库安装路径的方法:

    Help -> Updater Settings可以看到库指定路径。

    默认路径是 C:/Users/Administrator/STM32Cube/Repository,如下图:

     

    解压源文件过程就不说了,注意文件名需要匹配才行(打开压缩文件里面的名称),如下图:

     

    Ⅶ、说明

    STM32CubeMX工具可以说是开发STM32必备的一个工具,如果你还没有了解STM32CubeMX工具,建议花一点时间学习一下这个工具,它或许是今后开发STM32的主流工具。

     

    以上内容仅供参考,若有不对之处,敬请谅解。

     

    Ⅷ、最后

    我的网站:https://www.strongerhuang.com

    我的微信公众号(ID:strongerHuang)还在分享STM8、STM32、Keil、IAR、FreeRTOS、UCOS、RT-Thread、CANOpen、Modbus…等更多精彩内容,如果想查看更多内容,可以关注我的微信公众号。

     

    微信公众号
    展开全文
  • STM32STM32 CubeMx使用教程一--安装教程

    万次阅读 多人点赞 2019-08-09 09:01:48
    一、STM32CubeMX 简介 1、STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具,目的就是为了方便开发者, 允许用户使用图形化向导生成C 初始化代码,可以大大减轻开发工作,时间和费用,提高...
  • 标签:STM32、 STM32CubeMX、 LL库、 HAL库 一、写在前面 上一篇文章让你入门STM32CubeMX,你可能还是会觉得心里摸不到底。本文就从另外一个角度带你了解STM32CubeMX。 本文讲述STM32CubeMX各主...
  • 【STM32】HAL库 STM32CubeMX系列学习教程

    万次阅读 多人点赞 2020-02-07 09:15:30
    STM32CubeMX 简介 1、STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具,目的就是为了方便开发者, 允许用户使用图形化向导生成C 初始化代码,可以大大减轻开发工作,时间和费用,提高...
  • 刚使用STM32CubeMX,难免出现错误或者语言不专业的情况,希望大家能指正; 同样因为刚入门,自己琢磨走了弯路,写下来希望能给相同处境的人一些参考; 目前使用的STM32CubeMX版本为5.6.1,不同版本之间配置稍微有些...
  • STM32CubeMx安装直接通过官网链接下载就行,这里安装过程就不在讲解,因为安装方法流程都能收集到。 这里提供官网的下载网址:https://www.st.com/content/st_com/zh/products/development-tools/software-
  • 1、STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具,目的就是为了方便开发者, 允许用户使用图形化向导生成C 初始化代码,可以大大减轻开发工作,时间和费用,提高开发效率。STM32CubeMX...
  • 本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 所用工具: 1、芯片: STM32F407ZET6/ STM32F103ZET6 2、STM32CubeMx软件 3、IDE: MDK-Keil软件 4、STM32F1xx/...
  • STM32CUBEMX

    2020-11-10 10:00:32
    STM32强大的生态,在这里一起总结! 2020-10-22 11:46 STM32能被这么多开发者认可,它的强大生态系统起了关键作用...1.软件工具:即左边部分的STM32CubeMX、 CubeIDE 、 CubeProgrammer 、 CubeMontor等。 2.嵌入式软件
  • 【STM32】HAL库 STM32CubeMX教程六----定时器中断

    万次阅读 多人点赞 2019-08-13 09:10:04
    是我们学习STM32最频繁使用到的外设之一,所以一定要掌握好,这节我们讲解定时器中断,本系列教程将对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 所用工具: 1、芯片:...
  • 增量式编码器在实际应用中还是很常见。stm32的定时器带的也有编码器模式。所用的编码器是有ABZ三相,其中ab相是用来计数,z相输出零点信号。AB相根据旋转的方向不同,输出的波形如下图所示:从...软件:stm32cubemx ...
  • STM32CubeMX是很多朋友必备的一个工具。1写在前面从公众号后台、微信给我留言的问题可以看得出来,使用STM32CubeMX这个工具的人有很多。那么,使用STM32CubeMX进行配置、开发时,相信大家都需要过各种各样的问题。我...
  • 通过STM32CubeMX进行简单配置生成HAL库实现内部晶振RTC。 一、STM32CubeMX配置如下: 1.时钟树配置: 因为板子没有外部RTC晶振,所以只能使用内部32KHz晶振,时钟树配置如下: 2.RTC配置: (1)关于Asynchronous ...
  • 关联知识STM32使用Keil ARM V5 IDE编程和STM32CUBEMX代码配置实现STM32F103和步进电机驱动器模块A4988控制步进电机Keil和Stm32cubemx安装安装Keil IDE非常简单。 下载包含Keil IDE的MDK ARM套件,不需要单独安装它的...
  • 说明:本文原创作者『strongerHuang』首发于微信公众号『嵌入式专栏』,同时也更新在我的个人网站:EmbeddedDevelop标签:STM32、 STM32CubeMX、 LL库、 HAL库一、写在前面STM32CubeMX主界面菜单包含:File文件、...
  • 01开发环境安装包获取 小熊派开源社区已为大家整理了常用开发工具的下载地址,... 02STM32CubeMX介绍 STM32CubeMX是配置和初始化C代码生成的图形化工具(STM32 configurationand initialization C code generation)...
  • 标签:STM32、 STM32CubeMX、 LL库、 HAL库 一、写在前面 上一篇文章是对STM32CubeMX做了一个简单介绍,可能初学者看了之后也不是很理解。那么本文开始动手实践,实践也是快速掌握知识的一种办法。 本文针对...
  • 秒变 STM32 大神,STM32CubeMX你值得拥有!本教程共包含 20 篇文章,手把手带你学会用 STM32CubeMX 配置工程并生成底层初始化代码工程,将有限的精力专注于应用代码编写。阅读平台本系列教程同步发布在四个平台:...
  • 本课程教大家如何利用STM32CubeMX玩转STM32(STM32CubeMX支持的所有型号MCU都适用于本课程)。课程内容分为基础内容和扩展内容,例如:讲解串口时会扩展开讲Xmodem通信协议,讲解ADC/DAC时会扩展讲傅里叶计算,讲解...
  • 本课程教大家如何利用STM32CubeMX玩转STM32(STM32CubeMX支持的所有型号MCU都适用于本课程)。课程内容分为基础内容和扩展内容,例如:讲解串口时会扩展开讲Xmodem通信协议,讲解ADC/DAC时会扩展讲傅里叶计算,讲解...
  • 本课程教大家如何利用STM32CubeMX玩转STM32(STM32CubeMX支持的所有型号MCU都适用于本课程)。课程内容分为基础内容和扩展内容,例如:讲解串口时会扩展开讲Xmodem通信协议,讲解ADC/DAC时会扩展讲傅里叶计算,讲解...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,870
精华内容 3,148
关键字:

stm32cubemx