建立第一个STM32F407的LED工程(运用HAL库)

文章目录

    • 运用Cube进行外设的设置
    • 编写代码
    • 烧录
  • 一些c语言运用规范
    • 参考资料

运用Cube进行外设的设置

打开STM32CubeMX

在旁边进行外设配置(pinout&configuration)

system core中

sys打开debug中的serial wire 配置调试界面(下载程序)

rcc打开high speed clock选择cystal/ceramic resonator 选择外部晶振

clock configuration中设置时钟树

参照开发板的原理图进行设置,先找到时钟源(即晶振)
在这里插入图片描述

从图中找到其参数

开发c板的晶振是12兆
在这里插入图片描述

因此要在input frequency里设置为12MHz

然后把选项切换到hse上
在这里插入图片描述

把选项切换到pllclk上
在这里插入图片描述

芯片的最大工作频率为168MHz

因此在HCLK那里输入168后敲回车,系统会自动进行配置

在这里插入图片描述

配置好时钟树之后,如果我们要点亮一个LED灯就需要在芯片手册中查找LED灯的引脚
在这里插入图片描述

图中的LED_B代表蓝灯,同理LED_G代表绿灯,LED_R代表红灯

找到LED_R,同时到另一个图中找到LED_R,表示与另一个图中同样的地方相连

在这里插入图片描述

可以看到这个LED_R连接的是PH12引脚

找到外设对应的引脚后回到cube界面,在pinout view中找到引脚PH12(可以用下方的搜索框进行检索)
在这里插入图片描述

点击后在下拉菜单中选择GPIO_Output

这样工程的外设就配置完成了然后就可以在project manager中进行工程的命名(用全英文)以及位置路径的设置

最后点击GENERATE CODE自动生成代码(注意在Toolchain/IDE中的选项要选择与编译器一致的选项)

在这里插入图片描述

这边用的是keil5,因此选择MDK-ARM

编写代码

在文件夹中打开MDK-ARM文件夹

在这里插入图片描述

打开绿色图标文件
在这里插入图片描述

打开主代码main.c

其中

这里主要进行时钟配置

  /* Configure the system clock */
  SystemClock_Config();
  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

这里进行了GPIO的初试化

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */

whlie(1)是单片机的主循环,单片机的程序一般在whlie(1)中进行

/* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */

  }
  /* USER CODE END 3 */
}

注意写代码时,在cube自动生成的中,我们编写的代码只有写在

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

这个注释中间才会生效

点亮LED灯的代码如下:

    HAL_GPIO_TogglePin(GPIOH,GPIO_PIN_12);//翻转PH12的电平
    HAL_Delay(300);      //每300ms翻转一次电平
HAL_GPIO_TogglePin()这个函数的作用是翻转引脚的电平
HAL_Delay()这个函数可以做到延时的功能,就是让程序暂停执行

具体的函数定义可以查找hal库文件

在这里插入图片描述

在这里插入图片描述

对每个函数都进行了解释。

写好之后就可以进行编译。

烧录

我使用的是比较老的一个软件“STM32 ST-LINK Utility”

打开后界面如下

在这里插入图片描述

在烧录之前要把板子连接好(即接线),可以参考开发板的用户手册进行接线

在这里插入图片描述

在这里插入图片描述

先点击上面的“插头”进行连接,连接成功的界面如下:

在这里插入图片描述

然后点击上面的File,打开工程中的.hex文件
在这里插入图片描述

打开后点击上面栏的Target->Program

在这里插入图片描述

完成烧录。

一些c语言运用规范

尽量不要使用int,char和long这样的数据类型,在include"stdint.h"之后即可使用(HAL库已包含):

  • uintxx_t xx位无符号整型
  • intxx_t xx位有符号整型
  • floatxx_t xx位浮点数

尽量使用以上的类型定义变量

参考资料

CH1.1 GPIO 第1讲 建立第一个工程【南工骁鹰嵌入式软件培训】
STM32 ST-LINK烧写hex文件方法
ST-LINK/V2 烧录固件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

书阁下

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

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

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

打赏作者

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

抵扣说明:

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

余额充值