立即注册 找回密码

微雪课堂

搜索
微雪课堂 STM32 STM32CubeMX系列教程 查看内容

STM32CubeMX系列教程

2016-4-27 15:15| 发布者: MyMX1213| 查看: 442335| 评论: 23|原作者: MyMX1213

摘要: 本章通过如何点亮一个LED灯讲解STM32CubeMX软件的使用以及STM32最新的HAL固件库
STM32Cube 是一个全面的软件平台,包括了ST产品的每个系列。平台包括了STM32Cube 硬件抽象层(一个STM32抽象层嵌入式软件,确保在STM32系列最大化的便携性)和一套的中间件组件(RTOS, USB, FatFs, TCP/IP,  Graphics, 等等).
  • 直观的STM32微控制器的选择和时钟树配置
  • 微控制器图形化配置外围设备和中间件的功能模式和初始化参数
  • C代码生成项目覆盖STM32微控制器的初始化符合IAR™,Keil的™和GCC编译器。
      对于新的产品设计,我们强烈推荐使用STM32Cube来加速你的开发过程,并为以后的产品平台移植打下良好的基础。
      1.新建工程
      打开STM32cubeMX软件,点击New Project。选择对应开板MCUSTM32F103ZET6)。

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

      2.  配置外设。

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

      GPIO口功能选择,PF6,PF7,PF8,PF9LED1-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工具提供的可视化引脚、外设、时钟等配置功能,可以帮助快速完成工程的建立、初始化。大大降低了开发者的工作量。
          后续我们会结合微雪Open746I-C开发板,通过STM32cubeMX系列教程讲解如何学习STM32F7系列的片上外设。通过STM32F7系列的学习,可以让各位更快的掌握其他系列的使用方法。
      
      2068

      顶一下

      刚表态过的朋友 (2068 人)

      相关阅读

      发表评论

      最新评论

      引用 游客 2020-8-9 18:15
      需要使能SWD(SYS 里),否则无法再次下载程序,keil里无法找到mcu.
      引用 爱学习的麦克熊 2020-5-15 12:31
      判断ADC是否转换完成那句应该用ADC_SR_EOC,HAL库文件中明确写了是用于状态寄存器,HAL_ADC_STATE_REG_EOC并不是,而且其值也对应不上手册  详情可以查看库文件和手册
      引用 user2020 2020-2-9 09:50
      day day study
      引用 Yang 2019-11-6 19:37
      好用
      引用 游客 2019-10-2 16:25
      TIM1中怎么没有PWM输出的模式选项呢?用的库版本是V1.24.1
      引用 mars 2019-9-6 07:04
      cubemx与HAL借鉴的面向对象的思维模式,目的在于培养良好的编程习惯并且尽可能的提高开发者的效率。最重要的是,这是官方主推的开发方式!!!!!!这必定是以后的趋势,大家还是拥抱变化吧。反观传统的开发方式,除了效率之外基本没有值得留恋之处,而在这个硬件性能过剩的年代,多几步操作换来的却是极高的开发效率,这还是值得滴 。大家可能对cubemx与HAL有误解,觉得学会这些好像就是调用下API,底层的东西还是不懂。很冤啊,这俩只是提高效率的开发工具,但是芯片手册还是要看的啊,不然打开软件你怎么配置都不知道啊。总之,cubemx与HAL帮你做了很多事,你不需要十分清晰,但是也得有个谱啊,不然就只能处于嵌入式开发初级水平了。。。。。另外还有一款STM32CUBEIDE,跟cubemx结合使用的,感兴趣的可以装来玩玩哈。
      引用 游客 2019-3-21 18:08
      简单的还行,复杂的好像比较麻烦。所以学习可以,做项目也不合适。
      引用 游客 2019-3-1 23:02
      Природа обделила женщин физической силой, но взамен подарила развитую интуицию. Именно она позволяет даже совсем маленьким девочкам без особого труда выбирать тех мальчиков, которым они симпатичны. Ведь даже в детском саду девчонки безошибочно выделяют своего преданног ...
      引用 游客 2018-9-3 14:48
      HAL_UART_Transmit_DMA
      引用 醒目 2018-7-21 12:40
      好好学习,天天向上
      引用 游客 2018-7-15 11:24
      创建完之后没有openproject
      引用 游客 2018-5-12 16:47
      ST-LINK NO DETECT, 但是驱动已经装了啊,红灯一直闪是啥情况
      引用 游客 2018-4-18 15:00
      请问hal库工程必须要use Microlib吗?不选用microlib,main函数都进不去。
      引用 游客 2018-4-4 19:27
      如果我把里面的注释全删掉再加代码,会怎样?
      引用 游客 2018-3-28 10:23
      引用 游客 2018-3-28 10:08
      引用 peter58 2018-2-25 22:09
      HAL_GPIO_TogglePin(LED6_GPIO_Port,LED6_Pin);怎么让流水灯从上倒下在从下倒上运行呢?
      引用 WAKAYG 2018-2-25 12:06
      看一看套路
      引用 游客 2018-1-24 08:30
      如果你自己添加的代码放置的位置不对,修改后确实会被删掉。注意生成的文件内用户代码区,把你的程序写在相应的地方就没问题了。
      引用 游客 2018-1-12 12:18
      修改配置原来代码代码分组会被删掉

      查看全部评论(23)

      CubeMX教程

      微雪官网|产品资料|手机版|小黑屋|微雪课堂. ( 粤ICP备05067009号 )

      GMT+8, 2024-3-29 02:35 , Processed in 0.077502 second(s), 21 queries .

      返回顶部