stm32cubemx



  • 程序环境

    • 系统 Windows10 1709
    • 软件 stm32cubemx 4.25.0
    • 编译软件 keil-mdk arm 5.24
    • 语言 C语言
    • 单片机 stm32f030c8t6

    前言

    stm32cubemx是一款对于stm32系列单片机的可视化编程配置软件,编写stm32系列几乎所有单片机的码农可以尝试这个软件,我使用的单片机为stm32f030c8t6,但是大体框架还是差不多的,基本可以通用,仅供参考。

    新建工程

    打开软件就看到朴实无华的界面(明明是设计太差),中间是一个stm32cube图,左侧是三个蓝色字段:New Project,Load Project,Help。不用想,直接点击New Project,新建工程。

    0_1522827281917_2018_03_16_01.png

    之后会先检查网络,然后更新...

    然后出现了New Project的选项卡,里面有stm32系列几乎所有芯片,并且包括报价、Flash、RAM、IO数、频率,选中一个型号还可以直接点击上方的datasheet直接下载相应datasheet来参考。选中一个型号的芯片,双击或者点选上方的start project。

    0_1522827299127_2018_03_16_02.png

    出现了一个芯片的图,引脚顺序按照实际封装设置的,左侧是各种配置的外设,可以直接点选来配置,而且有相应的freeRTOS以及fatfs的支持,如果芯片支持usb还会有usb的配置选项。并且如果某个外设被配置到一个引脚,影响了其他外设,会直接在相应选项上显示红色,表示不可配置,十分友好。

    0_1522827311500_2018_03_16_03.png

    新建工程到这里就结束了。

    配置RCC时钟

    工程新建完成后就是配置RCC时钟了,首先要确定芯片有没有外接晶振,一般开发板或者实物都会外接一个8M高速晶振。我就根据外接8M晶振来配置单片机。

    首先在列表左侧将RCC下的High Speed Clock(HSE)选为Crystal/Ceramic Resonator,然后在上面大分层中的Clock Configuration页面将input frequency设置为8,将PLL Source Mux点选HSE,然后将HCLK设置为最大48MHz(也可根据自己需要设置),回车会询问是否自动配置时钟,选择是即可自动将各种时钟配置完成。

    0_1522827388432_2018_03_21_01.png

    生成代码

    由于我使用的是keil mdk arm 5.24来编译和烧写stm32单片机,所以只讲如何生成keil-mdk的代码工程。

    点击菜单栏的Project下的Generate Code,然后出现的配置菜单中选择Toolchain / IDEMDK-ARM V5,然后选择好工程名字和目录,点击OK即可。一般会让你下载相应系列芯片的库,如果觉得软件下载太慢,直接去官网下载即可,然后注意修改下方的固件库目录到你下载的目录即可。

    0_1522827406101_2018_03_21_05.png

    生成完成选择open project就可以打开工程进行自己的代码编写了。但是自己写的代码一定要在两个注释的中间

    /* USER CODE BEGIN 2 */
    
    /* USER CODE END 2 */
    

    否则再次生成工程时会被洗掉。编译成功下载即可。

    配置GPIO

    单片机最基础的是GPIO的配置,做完GPIO的配置就可以点灯来验证程序是否运行了。GPIO分为输入和输出两个方向,分别讲解。

    GPIO输出配置

    GPIO的配置比较简单,直接点选芯片引脚相应的GPIO引脚,比如我手上开发板的PC13LED,就选择PC13GPIO_Output

    0_1522827415937_2018_03_21_02.png

    然后到大分层中的Configuration一栏中选择System下的GPIO,然后在出现的界面中选择配置的引脚,选择输出为高还是低,输出模式(push pull 和 open drain),是否上下拉和GPIO输出速度。

    0_1522827421531_2018_03_21_03.png

    点击OK即可。

    GPIO输入配置

    输入配置和输出类似,选择GPIO_Input,然后在选项中选择好上下拉即可。

    0_1522827433162_2018_03_21_04.png

    代码控制

    输出的控制函数为

    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);
    

    读取的函数为

    HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13);
    

    可以用这两个函数控制灯的闪烁了。

    先写这么多,算是一个hello, world程序,其他功能可以讨论



  • @wangyubo 支持。一年前就看到有人在用这个工具了,当时还觉得没有手写的靠谱所以没有试过



  • 挺靠谱的,我觉得用起来特别方便,帮你配置了一些想不到的配置,不会有疏漏。就是要看一下源码



  • 感谢师傅传授Cubemx神技,Cubemx为stm32系列单片机提供了统一的平台,为项目的移植,RTOS的搭建起到极大的方便作用,之前都是手动一个一个配置、移植,用了这个之后简直开启了新世界的大门。


 

Copyright © 2018 bbs.dian.org.cn All rights reserved.

Looks like your connection to Dian was lost, please wait while we try to reconnect.