当前位置: 代码迷 >> 综合 >> 【嵌入式】stm32CubeMX+Keil使用HAL库点亮流水灯
  详细解决方案

【嵌入式】stm32CubeMX+Keil使用HAL库点亮流水灯

热度:81   发布时间:2023-12-01 22:32:19.0

stm32CubeMX+Keil使用HAL库点亮流水灯

  • 一、实验题目
  • 二、CubeMX的下载和安装
    • 1.CubeMX简介
    • 2.CubeMX的下载
    • 3.CubeMX的安装
  • 三、利用CubeMX新建工程点亮LED灯
    • 1.新建工程
    • 2.界面介绍
    • 3.引脚配置
    • 4.时钟源配置
    • 5.代码生成
    • 6.编译
    • 7.烧录
    • 8.结果展示
  • 四、keil观察3个端口的输出波形
  • 五、总结(参考博客)

一、实验题目

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

1、重做上一个LED流水灯(博客【嵌入式08】)作业,即用GPIO端口完成3只LED红绿灯的周期闪烁。

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

二、CubeMX的下载和安装

1.CubeMX简介

STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具,目的就是为了方便开发者, 允许用户使用图形化向导生成C 初始化代码,可以大大减轻开发工作,时间和费用,提高开发效率。STM32CubeMX几乎覆盖了STM32 全系列芯片。
在CubeMX上,通过傻瓜化的操作便能实现相关配置,最终能够生成C语言代码,支持多种工具链,比如MDK、IAR For ARM、TrueStudio等 省去了我们配置各种外设的时间,大大的节省了时间。

2.CubeMX的下载

下载网址: https://www.st.com/en/developmenttools/stm32cubemx.html#get-software
在这里插入图片描述

3.CubeMX的安装

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

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

1.新建工程

1 在主界面选择File–>New Project 或者直接点击ACCEE TO MCU SELECTOR
2 进行芯片型号选择,一般直接在左上角搜索自己的芯片型号即可。
在这里插入图片描述
在这里插入图片描述

2.界面介绍

在这里插入图片描述
1.左侧为MCU外设资源选择
(1)Categories 种类选择,将MCU各种外设和资源分类,供用户选择使用;
(2)A-Z 顺序选择,MCU的外设资源按A-Z排序,供用户选择使用。
2.中间为外设配置
这里可以选择外设的各种功能,选择串口模式(异步、同步、半双工)串口接收终端,和串口DMA传输等。
3.右侧为预览界面
这里分为引脚预览和系统预览

引脚预览可以查看引脚配置了什么功能,和各个引脚的位置;
任意点击一个引脚即可设置该引脚的各种功能。
淡黄色这种颜色表示不可配置引脚,电源专用引脚以黄色突出显示,其配置不能更改。
深黄色这种颜色表示你配置了一个I/O口的功能,但是没有初始化对应外设功能,引脚处于no mode状态。
绿色表示配置成功。

系统预览是查看配置的各种外设和GPIO的状态
在这里插入图片描述

3.引脚配置

只需把目标LED对应引脚设置为GPIO_Output即可
在这里插入图片描述

4.时钟源配置

打开Clock Configuration可以看到默认的时钟源如图所示
在这里插入图片描述
配置RCC使用外部时钟源,操作如图
在这里插入图片描述
在中间格子配置为72MHz,回车;弹出小窗口点击ok,即可完成配置

5.代码生成

设置完MCU后,可以进行对工程文件的配置了。
在Project处,这里就是工程的各种配置,我们只用到有限几个,其他的默认即可 。
注意 存储目录不可以有中文

1.然后点击Code Generator,进行进一步配置。
在这里插入图片描述
2.点击GENERATE CODE 创建工程,等待一段时间后,成功打开了工程文件。
3.在main.c文件的main函数下的while循环中,添加下面几行代码即可。

HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET);HAL_Delay(1000);HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET);HAL_Delay(1000);HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET);HAL_Delay(1000);

6.编译

编译结果
在这里插入图片描述

7.烧录

在这里插入图片描述
烧录成功

8.结果展示

在这里插入图片描述

四、keil观察3个端口的输出波形

设置完成后,开启调试模式,打开逻辑分析仪
给逻辑分析仪中添加要观察的IO口
直接在敲PORTA.,PORTB.等出来目标端口
注意!!务必将Display Type处设置为Bit!!
波形如下:
在这里插入图片描述

五、总结(参考博客)

实验非常困难,好在宿舍有大佬帮我,完成的还算不错。
参考博客
https://blog.csdn.net/cleveryoga/article/details/120999566?utm_source=app&app_version=4.11.0&code=app_1562916241&uLinkId=usr1mkqgl919blen

  相关解决方案