小白菜的STM32cubeMX学习(1)点亮第一颗LED

0 前言

本文参考B站视频[STM32CubeMX&HAL库教学]快速STM32基础功能学习系列.
从视频里找东西有点麻烦,所以建立这个学习笔记用来归纳整理。
本系列所有工程都会上传到github上,欢迎批评指正(刚开始用github,挺好用的赶脚 我的github主页,欢迎大家来给我小星星)

1 安装CubeMX

安装过程很多地方都有,我就不讲了。嘿嘿,这一节用来凑个字数。

开始之前,你要有一些基础的电路和单片机的知识,比如三极管、IO口什么的。就像你玩电脑首先得知道鼠标是用手拿而不是用脚推的。

2 用CubeMX创建第一个project

让我们进入正题,先来看一下CubeMX长啥样:
CubeMX本尊
哇,看到那个file了没,点他!点他!!点完之后新建project,会出现这个东西,应该是一些检测更新啥的,直接点取消就行。
这里取消就好了
取消之后会让你选择型号,这里我用的是正点原子的stm32f429IGT6
选择型号
第一个工程创建完毕,接下来让我们用CubeMX生成第一个代码

3 一些关于CubeMX的基础

3.1 软件界面

在这里插入图片描述
最常用到的是前面三个模块

项目功能
Pinout&Configuration用来配置IO口、定时器、通讯等配置,可以说是最常用的东西
Clock Configuration用来配置时钟,倍频什么的(对stm32时钟这一块有点迷)
Project Manager用来设置一些project和生成的代码的东西

建议把下图中这一项打上对勾,这样生成代码的时候主函数main.c里面就不会有很多函数,清爽~~
这里打上对勾哦
PS:project路径不能有中文哦,不然生成的时候会报错。

3.2 代码保护区

CubeMX有一个代码保护区的概念,因为在单片机开发过程中,很多东西是在中途加进去的,中间手动进行配置就会麻烦。

CubeMX生成的代码中有代码保护区,你可以在任何地方进行单片机代码的书写编译,但是再次用CubeMX配置并生成代码时,只有代码保护区中的代码会保留下来。

这里我们不做任何配置直接生成代码
生成代码

#include "main.h"

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */

/* USER CODE END Includes */

/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */

/* USER CODE END PTD */

/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
/* USER CODE END PD */

这段代码是从main.c开头截取的,可以看到有很多注释USER CODE BEGIN 和END,在同名的BEGIN和END之间就是CubeMX的代码保护区,其他地方也有,可以自己生成一下试试,这里就不一一点出来了。

4 让我们来点灯吧

4.1 电路原理图

接下来配置一下最基础的IO口,并点亮第一颗LDE。
这张图是板子上LED的接线图,可以看到LED灯接线接到了PB0和PB1。所以我们需要配置PB0和PB1为输出模式。
LED原理图

4.2 CubeMX配置IO口

在右边芯片上找到PB0和PB1,选择GPIO_Output模式
配置GPIO
这个时候点开左边System Core中的GPIO,就会多出来PB0和PB1的配置,选择对应的模式即可,这里我选择推挽输出并且初始化状态一高一低。
配置GPIO
最后在SYS中将debug改成SW模式,生成代码并打开。
在这里插入图片描述

4.3 完成代码

先编译一下生成的代码
编译代码
打开我们的GPIO函数库,发现里面有函数
HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
根据函数名和@brief中的介绍
@brief Toggles the specified GPIO pins.
可以得知,该函数是用来将指定引脚高低电平进行反转的,适合用来让一颗LED灯闪烁。
在这里插入图片描述
同样找到延时函数HAL_Delay(uint32_t Delay)
在while(1)中写一个让LED不断闪烁的程序

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
		HAL_GPIO_TogglePin((GPIO_TypeDef*) GPIOB, (uint16_t) GPIO_PIN_0);
		HAL_GPIO_TogglePin((GPIO_TypeDef*) GPIOB, (uint16_t) GPIO_PIN_1);
		HAL_Delay(200);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */

编译通过,选择好自己的下载器下载就可以了。
这个经过实验是没问题的哈,不知道咋放GIF图就不放了。有啥子问题留言私信我都行。
工程已上传到链接: https://github.com/MercerD/LED.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值