stm32CubeMX的安装和点亮流水灯

本文是基于stm32CubeMX软件点亮LED流水灯,以下主要分为stm32CubeMX的安装,操作和实践几个部分来进行介绍。

一、JDK的下载、安装和配置

1.JDK的下载

由于STM32CubeMX是Java实现的,所以需要安装jdk环境。

  • JDK的可在官网下载。
    JDK下载链接:https://www.oracle.com/downloads/
    进入该链接下翻,找到如下页面点击JAVA。
    请添加图片描述
    在跳转后的网页点击Java (JDK) for Developers
    请添加图片描述
    找到你所需要的操作系统对应的版本,第一个是压缩版,第二个是应用程序,这里我直接下载的是应用程序。
    请添加图片描述

2.JDK的安装

直接双击应用程序一直点击下一步即可,注意保存路径可以进行更改,但路径中不能有中文,这里不过多介绍。

3.JDK的配置

右键点击我的电脑,打开高级系统设置,点击环境变量,双击PATH新建。
在这里插入图片描述
把刚刚安装好的JDK路径加在环境变量中即可。

4.测试

win+r打开命令提示符,输入java –version可以查看版本号。
在这里插入图片描述

再输入java看看有没有java相关信息。
请添加图片描述
最后输入javac查看有没有相关信息
请添加图片描述

二、CubeMX的下载和安装

1.CubeMX的下载

下载网址: https://www.st.com/en/development-tools/stm32cubemx.html#get-software
打开网址下拉选择你需要的操作系统对应版本。
在这里插入图片描述

2.CubeMX的安装

下载后打开应用程序,点击next
请添加图片描述
接着选择默认default,勾选上面选项,选择安装路径,点击next
请添加图片描述
最后点击done完成安装。
请添加图片描述

三、利用CubeMX新建工程点亮LED灯

1.题目介绍

安装 stm32CubeMX,配合Keil,使用寄存器方式(汇编或C,不限) 或HAL库这两种方式,完成下列任务:

1、重做上一个LED流水灯作业,即用GPIO端口完成3只LED红绿灯的周期闪烁。
2.在没有示波器条件下,可以使用Keil的软件仿真逻辑分析仪功能观察管脚的时序波形,更方便动态跟踪调试和定位代码故障点。 请用此功能观察第1题中3个GPIO端口的输出波形,和第2题中串口输出波形,并分析其波形反映的时序状态正确与否,高低电平转换周期(LED闪烁周期)实际为多少。

2.CubeMX介绍

相信所有玩过STM32单片机的朋友都知道,以前的时候大家在做开发时基本都是基于官方提供的库函数,当然也有寄存器版本的库函数,两者是类似的,还有大家可能知道的正点原子提供的网络课程基本都是基于这两种库函数的,不过说实话使用起来也算是比较方便,入门也算很快的了。但是,从15、16年开始,ST逐渐停止了对标准外设库的更新和维护,转向了HAL和LL库。

  • SPL:Standard Peripheral Library标准外设库
  • HAL:Hardware Abstraction Layer硬件抽象层库
  • LL:Low-layer底层库

基于这样的背景,STM官方又推出了STMCube这样的IDE工具,进一步简化了开发的难度,使所有的HAL库和LL库开发变得非常容易,可以基于界面话的操作,自动生成,大大提高了开发的效率。

3.CubeMX安装固件库

首先打开CubeMX界面如图所示:
请添加图片描述
在这里我们可以看到有File,Window和help选项

  • 在File中有新建工程New Project,读入工程Load Project,最近工程Recent Project和退出Exit等选项。
  • 在Window是对应用界面的设置
  • 在Help中有应用的版本更新,设置和关于等选项。
    可以看到CubeMX的界面简洁清晰,接下来我们需要安装HAL库。

在Help选项中找到Manage embedded software packages
请添加图片描述

选择你需要的芯片号,本次实验我们用到的是STM32F103C8T6,所以我们选择STM32F1,然后选择需要的版本,并点击Install Now进行安装,如果你在本地已经下载好有关于该芯片版本的固件库,可以点击左下角From Local这样会免去下载时间。
请添加图片描述
请添加图片描述

4.CubeMX新建工程

可以在File中点击New project或者点击ACCESS TO MCU SELECTOR,如图所示:
请添加图片描述
可以看到在右边有刚刚安装的STM32F1系列的各种芯片版本,我们可以在界面中翻阅查找也可以在左上角的搜索栏中输入你的芯片型号,这里我们选中STM32F103C8,之后点击右上角Start Project进入工程界面如下图所示:
请添加图片描述

  • 可以看到最左面一栏是外设资源选择界面,中间一栏是外设资源配置界面,而右边一栏为预览界面。
  • 在Pinout View可以看到芯片对应引脚信息,淡黄色为不可配置的系统引脚,灰色的为可以配置的引脚,如通用I/O的GPIO,配置后的颜色变为绿色;深黄色为已经配置了引脚但没有初始化。
  • 在System View可以看到各种引脚和GPIO的状态。

5.引脚配置

根据实验要求和我们上一次实验所设置的引脚,所以我们本次实验同样选用GPIOA,GPIOB和GPIOC对应的0,0,15号管脚对应三种小灯。

我们只需单击右侧预览界面对应的管脚,并选择GPIO_Output。
请添加图片描述

6.配置外设资源

1.在左侧System Core选项中找到sys,在debug选项中选择Series Wire
请添加图片描述
2.在左侧System Core选项中找到GPIO进行配置。
请添加图片描述

GPIO output level:有low和high两种选择,一般选择low
GPIO mode:推挽输出和开漏输出两者模式,两者模式的区别在于推挽输出中1代表VCC,0表示GND;开漏输出中1代表高阻态,0代表GND。
GPIO Pull-up/Pull-down:输入需要上下拉,输出一般没有上下拉
Maxinum output speed:最大的输出速度,一般选择low就可以了。

7.配置时钟源

打开Clock Configuration可以看到默认的时钟源如图所示

请添加图片描述

如果我们要配置外部时钟源需要对RCC进行配置。
在左侧System Core选项中找到RCC,在High Speed Clock中选择Crystal/Ceramic Resonator
请添加图片描述
再回到Clock Configuration中将中间蓝色方框中的HCLK修改为72
请添加图片描述

8.生成相关代码

1.打开Project Manager界面,可以看到界面有三个部分分别为Project,Code Generator和Advanced Settings。

  • 首先在Project界面编写工程的名字,选择保存路径。
  • 在Toolchain/IDE选项中选择MDK-ARM,Min Version中选择你的软件版本,这里我的Keil版本为5所以我选择V5.

请添加图片描述

2.打开Code Generator界面

  • 最上面的一栏是软件包管理,选择第二个可以使我们的数据占用更小。
  • 第二栏根据用户需要自行选择,第一个是每个外设生成.c和.h文件;第二个是重新生成时保留历史文件;第三个是重新生成时保留用户代码;第四个是重新生成时删除以前的文件,这里我选择勾选1,3,4

请添加图片描述
3.然后点击右上角GENERATE CODE创建好了工程。
点击open project即可打开工程。

9.添加代码

打开工程后的界面在左侧找到main.c文件双击打开。
在main程序中添加如下代码:

    HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_0);
	  HAL_Delay(1000);

    HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_0);
	  HAL_Delay(1000);
	  
    HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_15);
	  HAL_Delay(1000);

请添加图片描述
编译后的结果:
请添加图片描述
显示没有错误。

10.烧录

将C8T6与USB转TTL相连,接入电脑端,打开FlyMcu进行烧录
请添加图片描述

11.效果图

请添加图片描述

四、MDK观察GPIO端口输出波形

1、设置仿真模式

首先点击魔术棒,点击debug选项,选择Use Simulator表示使用仿真。
修改下面的Diolag DLL为DARMSTM.DLL
修改下面的Parameter为-pSTM32F103VC
点击OK完成设置

2.使用逻辑分析仪

1.首先运行仿真,在如下窗口找到逻辑分析仪,点开
请添加图片描述
2.可以在左下角Command命令行窗口输入dir vtreg指令查找可以添加的管口号
在这里插入图片描述
3.打开左上角的setup选项,点击新的插入
在这里插入图片描述
添加你想要查看的管脚号,在下面的Display Type中选择输出为Bit
在这里插入图片描述
4.设置完成后点击RST右边书页的这个图标
在这里插入图片描述
让他运行一段时间可以观察到波形图在变化,运行一段时间后点击运行右边的×,得到波形如图所示:
请添加图片描述
通过波形上就可以看到LED口电平隔1s翻转一次。说明程序执行成功。

五、参考资料

https://zhuanlan.zhihu.com/p/118617349.

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是使用STM32CubeMX点亮LED流水灯的步骤: 1. 打开STM32CubeMX软件,创建一个新的工程。 2. 在"Part Number"中选择STM32F103C8T6。 3. 在"Pinout & Configuration"选项卡中,选择一个可用的GPIO引脚作为LED的控制引脚。例如,选择PC13作为控制引脚。 4. 在"Configuration"选项卡中,将PC13配置为输出模式。 5. 在"Project"选项卡中,选择生成代码的IDE和工程类型。例如,选择MDK-ARM作为IDE,选择STM32Cube HAL作为库。 6. 点击"Project"选项卡下方的"Generate Code"按钮,生成初始化代码工程。 7. 打开生成的工程,在主函数中添加LED流水灯的代码。 以下是一个示例代码,用于点亮LED流水灯: ```c #include "stm32f1xx_hal.h" void SystemClock_Config(void); void GPIO_Init(void); int main(void) { HAL_Init(); SystemClock_Config(); GPIO_Init(); while (1) { HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); HAL_Delay(500); } } void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct; RCC_ClkInitTypeDef RCC_ClkInitStruct; __HAL_RCC_PWR_CLK_ENABLE(); __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; RCC_OscInitStruct.PLL.PREDIV = RCC_PREDIV_DIV1; HAL_RCC_OscConfig(&RCC_OscInitStruct); RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2); } void GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct; __HAL_RCC_GPIOC_CLK_ENABLE(); GPIO_InitStruct.Pin = GPIO_PIN_13; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); } ``` 请注意,以上代码仅为示例,具体的代码实现可能会因为使用的库和工具而有所不同。请根据实际情况进行相应的修改和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cleveryoga

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值