STM32 HAL库编程(1)——使用STM32CUBEMX新建工程

STM32 HAL库编程(1)——使用STM32CUBEMX新建工程

本篇文章将讲解如何使用STM32CUBEMX新建一个工程,并点亮LED灯。 需要的软硬件有: STM32开发板;jlink或stlink下载器;KEIL5;STM32CUBEMX。


前言

  • ST公司推荐使用HAL库编程,最新的STM32F7、H7系列仅有HAL库,无官方出的库函数版本。
  • HAL库的意义在于,通过在硬件层和应用层之间添加一层,称为HAL层,让STM32不同系列的芯片变得更加统一。在以前,STM32F1系列和F4系列,寄存器不统一、库函数也有一些区别,导致开发了F1的芯片,想转移到其他芯片的时候就很麻烦,因此使用了同一个HAL库编程。步进如此,还可以使用STM32CUBEMX程序初始化时钟和外设,方便了开发。
  • 同样地,HAL库也有一些缺点,因为增加了一层,导致指令更多,从而运行速度有所降低。在一些对时速严格要求地地方,可以使用寄存器进行编程。
  • 本篇文章将讲解如何使用STM32CUBEMX新建一个工程,并点亮LED灯。需要的软硬件有:
    STM32开发板;jlink或stlink下载器;KEIL5;STM32CUBEMX。

一、使用CUBEMX新建工程

1.选择芯片

在这里插入图片描述

2.选择烧录(debug)方式

在这里插入图片描述

3.设置时钟

在这里插入图片描述
在这里插入图片描述

4.配置外设:设置LED引脚

在这里插入图片描述
在这里插入图片描述

5. 最后工作

在这里插入图片描述
在这里插入图片描述

二、代码讲解

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、LED闪烁代码

1. 引脚操作的几个函数

		HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, 0);			// 写引脚为低电平
		HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, 1);			// 写引脚为高电平
		HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);				// 反转该引脚
		uint8_t res = HAL_GPIO_ReadPin(LED_GPIO_Port, LED_Pin);					// 读取该引脚是高电平还是低电平
		HAL_Delay(1000);			// 延时函数,单位ms
  • 引脚的操作无非就是写引脚,和读引脚。对于STM32中,引脚分为PORT和PIN。PORT是指GPIOA、GPIOB等;PIN为引脚号,为0-15中的某一个。
  • LED_GPIO_Port和LED_Pin其实就是表示GPIOC-13,因为我们设置了LED的标签,所以可以用这个

2. LED闪烁的代码

在这里插入图片描述

HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);				// 反转该引脚
HAL_Delay(1000);			// 延时函数,单位ms

四. 代码烧录

1. 配置下载器为jlink

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 编译和烧录

成功后会有LED闪烁。

3. KEIL优化——代码自动提示

在这里插入图片描述
在这里插入图片描述

五. 福利——定时器中断

1. 选择定时器配置时钟,设置预分频和计数值。这里设置后,计数完成后是1s

在这里插入图片描述

2. 打开更新中断,并配置中断号

在这里插入图片描述
在这里插入图片描述

3. 代码介绍

在这里插入图片描述
在这里插入图片描述

4. 写一个LED闪烁的代码

在这里插入图片描述

HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);

注意把前面main函数的LED闪烁代码注释掉!

5. 在mian中添加定时器中断开始函数

在这里插入图片描述

HAL_TIM_Base_Start_IT(&htim1);			// 启动定时器中断
//	HAL_TIM_Base_Stop_IT(&htim1);			// 关闭定时器中断

6. 总结

只要配置好的定时器TIM,就全部配置好了,只需要在合适的位置写代码,就可以以一定周期运行该部分的代码。
但注意在mian函数中要打开中断,对于其他中断也一样。加上一行函数就可以

猜你喜欢

转载自blog.csdn.net/Hot_Ant/article/details/113774450