stm32cubemx怎么使用

作者&投稿:匡终 (若有异议请与网页底部的电邮联系)
如何用stm32cubemx 设置 FLASH读写配置~

1.新建工程
打开STM32cubeMX软件,点击New Project。选择对应开板MCU(STM32F103ZET6)。
选择工程后进入工程界面,如下图所示。
2. 配置外设。
RCC设置,选择HSE(外部高速时钟)为Crystal/Ceramic Resonator(晶振/陶瓷谐振器)
GPIO口功能选择,PF6,PF7,PF8,PF9为LED1-LED4.找到对应管脚设置为GPIO_Output模式。(黄色引脚为该功能的GPIO已被用作其他功能,可以忽略。绿色表示管脚已使用)
3. 时钟配置
时钟配置采用图形配置,直观简单。各个外设时钟一目了然。STM32最高时钟为72M,此处只有在HCLK处输入72,软件即可自动配置。(RCC选择外部高速时钟)。
4.功能外设配置
在配置框我们可以看到有几个区域,分别对应的功能设置如下
Multimedia(多媒体):音频视频、LCD
Control(控制):定时器
Analog(模拟):DAC、ADC
Connectivity(通讯连接):串口、SPI 、I2C、USB、ETH
SYStem(系统):DMA(直接存储器存取)、GPIO、NVIC、RCC、看门狗
middlewares(中间件): FreeRTOS、FATFS、LwIP、USB
此工程中DMA没用的不用配置,NVIC(嵌套中断向量控制器(Nested Vectored Interrupt Controller))配置中断优先级。RCC不用配置。
GPIO Pin Level (管脚状态):低电平
GPIO mode (管脚模式 ):推挽输出
Maximum output speed (最大输出速度):低速
User Label (用户标签):LED1
更改用户标签,管脚配置图会显示管脚的标签。
4. 功耗计算
这个根据配置的外设计算功耗,不用理会。
5. 生成工程报告

具体配置过程:
1、打开STM32CubeMX,并选择好相应的芯片。文中的芯片为STM32F207VCT6,选择后如下图:


2、配置RCC时钟、ETH、PA8以及使能LWIP;
由于此处我们的开发板硬件上为RMII方式,因此选择ETH-RMII,若有同志的开发板为MII方式,请参考MII的配置方法,此处只针对RMII;
RCC选择外部时钟源,另外勾选MCO1,软件会自动将PA8配置为MCO1模式,该引脚对于RMII方式很重要,用于为PHY芯片提供50MHz时钟;
使能LWIP;

3、时钟树的相关配置,必须保证MCO1输出为50Mhz,如果这个频率不对会导致PHY芯片无法工作;
我这里因为芯片为207VCT6,为了使MCO1输出为50Mhz,做了PLL倍频参数的一些调整,总体如下:(同志们配置时可根据自己的芯片灵活配置,但需保证MCO1的输出为50Mhz)

4、ETH、LWIP、RCC相关参数设置;
至此,比较重要的都在前面了,但是还有一点仍需要注意,即PA8引脚输出速度,几次不成功都是因为这个引脚没注意。

后续的参数设置可以根据同志们自己的需求分别设置,这里给出我的设置供参考;
ETH参数保持默认,但中断勾选一下;

LWIP参数设置如下:(因为我这里是配置UDP服务器,IP选择静态分配)

5、生成工程,做最后的函数修改;
给生成的工程添加UDP服务器的初始化以及端口绑定等相关函数;
我这里直接将之前的官方例程中的UDP服务器文件加进来,如下:

之后将.c文件添加到用户程序,主函数添加Udp的.h头文件;如下:(udp文件的具体内容在后面给出)

6、主函数还需要添加一下几个函数,在这里不对函数作用及实现原理讲解,仅做添加说明。


附:udp_echoserver相关文件内容(该文件为官方的示例程序,版权归官方,此处做转载)
udp_echoserver.c的内容如下:

/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "lwip/pbuf.h"
#include "lwip/udp.h"
#include "lwip/tcp.h"
#include
#include


/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
#define UDP_SERVER_PORT 7 /* define the UDP local connection port */
#define UDP_CLIENT_PORT 7 /* define the UDP remote connection port */


/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
void udp_echoserver_receive_callback(void *arg, struct udp_pcb *upcb, struct pbuf *p, const ip_addr_t *addr, u16_t port);


/* Private functions ---------------------------------------------------------*/


/**
* @brief Initialize the server application.
* @param None
* @retval None
*/
void udp_echoserver_init(void)
{
struct udp_pcb *upcb;
err_t err;

/* Create a new UDP control block */
upcb = udp_new();

if (upcb)
{
/* Bind the upcb to the UDP_PORT port */
/* Using IP_ADDR_ANY allow the upcb to be used by any local interface */
err = udp_bind(upcb, IP_ADDR_ANY, UDP_SERVER_PORT);

if(err == ERR_OK)
{
/* Set a receive callback for the upcb */
udp_recv(upcb, udp_echoserver_receive_callback, NULL);
}
}
}


/**
* @brief This function is called when an UDP datagrm has been received on the port UDP_PORT.
* @param arg user supplied argument (udp_pcb.recv_arg)
* @param pcb the udp_pcb which received data
* @param p the packet buffer that was received
* @param addr the remote IP address from which the packet was received
* @param port the remote port from which the packet was received
* @retval None
*/
void udp_echoserver_receive_callback(void *arg, struct udp_pcb *upcb, struct pbuf *p, const ip_addr_t *addr, u16_t port)
{


/* Connect to the remote client */
udp_connect(upcb, addr, UDP_CLIENT_PORT);

/* Tell the client that we have accepted it */
udp_send(upcb, p);


/* free the UDP connection, so we can accept new clients */
udp_disconnect(upcb);

/* Free the p buffer */
pbuf_free(p);

}


udp_echoserver.h的内容如下:

#ifndef __ECHO_H__
#define __ECHO_H__

void udp_echoserver_init(void);

#endif /* __MINIMAL_ECHO_H */


7、至此,所有的工作完成,编译工程,下载至开发板。由于udp_echoserver中绑定的端口号为7,这里我们通过测试工具测试网络的功能,

STM32Cube 是一个全面的软件平台,包括了ST产品的每个系列。平台包括了STM32Cube 硬件抽象层(一个STM32抽象层嵌入式软件,确保在STM32系列最大化的便携性)和一套的中间件组件(RTOS, USB, FatFs, TCP/IP, Graphics, 等等).
直观的STM32微控制器的选择和时钟树配置
微控制器图形化配置外围设备和中间件的功能模式和初始化参数
C代码生成项目覆盖STM32微控制器的初始化符合IAR™,Keil的™和GCC编译器。

对于新的产品设计,我们强烈推荐使用STM32Cube来加速你的开发过程,并为以后的产品平台移植打下良好的基础。
1.新建工程
打开STM32cubeMX软件,点击New Project。选择对应开板MCU(STM32F103ZET6)。

选择工程后进入工程界面,如下图所示。

2. 配置外设。
RCC设置,选择HSE(外部高速时钟)为Crystal/Ceramic Resonator(晶振/陶瓷谐振器)

GPIO口功能选择,PF6,PF7,PF8,PF9为LED1-LED4.找到对应管脚设置为GPIO_Output模式。(黄色引脚为该功能的GPIO已被用作其他功能,可以忽略。绿色表示管脚已使用)
3. 时钟配置
时钟配置采用图形配置,直观简单。各个外设时钟一目了然。STM32最高时钟为72M,此处只有在HCLK处输入72,软件即可自动配置。(RCC选择外部高速时钟)。

4.功能外设配置

在配置框我们可以看到有几个区域,分别对应的功能设置如下
Multimedia(多媒体):音频视频、LCD
Control(控制):定时器
Analog(模拟):DAC、ADC
Connectivity(通讯连接):串口、SPI 、I2C、USB、ETH
SYStem(系统):DMA(直接存储器存取)、GPIO、NVIC、RCC、看门狗
middlewares(中间件): FreeRTOS、FATFS、LwIP、USB
此工程中DMA没用的不用配置,NVIC(嵌套中断向量控制器(Nested Vectored Interrupt Controller))配置中断优先级。RCC不用配置。

GPIO Pin Level (管脚状态):低电平
GPIO mode (管脚模式 ):推挽输出
Maximum output speed (最大输出速度):低速
User Label (用户标签):LED1

更改用户标签,管脚配置图会显示管脚的标签。

4. 功耗计算
这个根据配置的外设计算功耗,不用理会。

5. 生成工程报告
点击Project –>Generate Reports或者点击快捷图标生成报告。系统会提示先创建一个工程项目。点击Yes设置工程。

输入工程名,选择工程路径(注意不要出现中文,否则可能出错)。工具链/IDE选择MDK-ARM V5。最后面可以设置堆栈大小,此处默认不作修改。

在Code Generator中找到Generated files框,勾选Generated periphera initialization as a pair of '.c/.h' files per IP。外设初始化为独立的C文件和头文件。

点击生成报告,工程目录下会生成txt文件和pdf文件,里面记录了我们刚才的设置。

6. 生成工程代码
点击Project –>Generate Code或者点击快捷图标生成工程代码。

点击Open Project打开工程。到此就配置好工程外设初始化。

点击Build按钮,Build Optput信息框会输出没有错误没有警告。

6. 添加应用程序
在gpio.c文件中可以看到LED管脚的初始化函数。

在stm32f1xx_hal_gpio.h头文件中可以看到GPIO的操作函数。

在main函数中的while循环中添加LED流水灯效果的应用程序。

重新编译程序,点击下载到Open103Z-C开发板。如果提示错误,可以点击图标对Option for Target 的Dubug选项进行修改。(图上选的是ST-LINK)

点击Settings->Flash Download勾选 Reset and Run选项。这样程序下载后自动启动运行,不用再按一下复位或者重新上电才能运行。

程序下载到Open103Z-C开发板。可以看到LED1~LED4依次被点亮,实现流水灯的效果。

总结:STM32Cube提供了固件库,用户可直接调用固件库函数来开发,并且可以很好的实现STM32-MCU全系列的代码一致性。同时STM32CubeMX工具提供的可视化引脚、外设、时钟等配置功能,可以帮助快速完成工程的建立、初始化。大大降低了开发者的工作量。


stm32跟普通的51单片机在程序编写方面有什么区别?
1、库函数不同。由ST厂商推出的STM32系列单片机,ST厂商给了丰富的函数库,可以直接使用库函数,所以比起普通的51单片机在程序编写方面要更加的省时。2、运行速度不同。普通的51单片机运行速度较慢,特别是双数据指针,而STM32系列单片机最高工作频率可达72MHz。3、便利程度不同。51单片机的任何器件只...

抚顺县13272701548: 怎么用stm32f0 cubemx开发程序 -
友婷依利: 1,下面以流水灯为例说明STM32CubeMX软件的使用. 2, 第一步,建立并保存工程. 3,启动STM32CubeMX软件,界面如图2所示. 4,点击New Project,在New Project对话框中选择Board Selector标签页,在这里有各种ST评估板可以选...

抚顺县13272701548: 如何利用STM32CubeMX进行STM32开发 -
友婷依利: cubeMX的主要优点:1.直观地进行STM32选择2.图形化配置3.C代码项目产生,涵盖STM32初始化部分.兼容IAR, KEIL和GCC编译器4.支持Eclips 工具/原料 CubeMX软件,CUBE库 电脑 kEIL5.15软件 方法/步骤1 到ST官网下载软件包和cube库...

抚顺县13272701548: 如何使用STM32CubeMX配置ETH -
友婷依利: 具体配置过程: 1、打开STM32CubeMX,并选择好相应的芯片. 文中的芯片为STM32F207VCT6,选择后: 2、配置RCC时钟、ETH、PA8以及使能LWIP; 由于此处的开发板硬件上为RMII方式,因此选择ETH-RMII,若有同志的开发板为MII方...

抚顺县13272701548: 如何用stm32cubemx 设置 FLASH读写配置 -
友婷依利: 1.新建工程 打开STM32cubeMX软件,点击New Project.选择对应开板MCU(STM32F103ZET6). 选择工程后进入工程界面. 2. 配置外设. RCC设置,选择HSE(外部高速时钟)为Crystal/Ceramic Resonator(晶振/陶瓷谐振器) GPIO口功能...

抚顺县13272701548: 如何用stm32 cube程序生成库建工程 -
友婷依利: 如果是初学者的话,不建议学习使用STM32CubeMX工具,因为HAL库相比标准外设库难理解一点.STM32CubeMX新建工程+基本IO配置过程:http://blog.csdn.net/ybhuangfugui/article/details/52281260

抚顺县13272701548: stm32cube 生成代码怎么用 -
友婷依利: 不是中文路径,STM32CubeMX路径是D:\Program Files\STMicroelectronics\STM32Cube\STM32CubeMX,MDK路径是D:\Keil\UV4,我在D:\Program Files\STMicroelectronics\STM32Cube\STM32CubeMX\db\plugins\projectmanager文件夹下stm32tck.cfg文件中找...

抚顺县13272701548: stm32cube怎么配置串口 -
友婷依利: stm32cubemx,是一个图形化的软件配置工具.为了使用图形向导生成c初始化代码,减少开发人员工作、时间和成本,使开发人员的生活更轻松. stm32cubemx嵌入了一个完整的软件平台,准确点说是,每个系列都有一个嵌入式软件平台,...

抚顺县13272701548: 如何在STM32Cube -
友婷依利: STM32Cube 是一个全面的软件平台,包括了ST产品的每个系列.(如,STM32CubeF4 是针对STM32F4系列).平台包括了STM32Cube 硬件抽象层和一套的中间件组件(RTOS, USB, FS, TCP/IP, Graphics, 等等).cubeMX的主要优点:1....

抚顺县13272701548: STM32Cube MX如何设置外部高速时钟频率 -
友婷依利: 1. 看你使用的MCU最高主频是否能跑到216MHz.2. 确定你使用的外部晶振频率,如果未使用外部晶振,使用内部晶振也可以. 3. 时钟信号进来后一般都会进行除频,将频率降到一个比较小的值,除多少倍可以在cube中选择. 4. 将除频后的频率输入到PLL中进行倍频,倍频参数可以在cube中选择,结果得到216MHz. 5. 总结一下公式,晶振(MHz) / (除频数) * (倍频数) = 216MHz,例如 8 / 2 * 54 = 216

抚顺县13272701548: 如何使用CubeMx生成一个DFU工程 -
友婷依利: 1 前言 DFU用来做IAP是很方便的,可以直接通过USB来对APP进行升级,因此,掌握DFU的制作还是挺有好处,特别是使用CubeMx工具可以快速制作,本文将基于STM3240G-EVL评估板来一步一步实现一个DFU的IAP工程.2 制作CubeMx工...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网