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闪烁。

扫描二维码关注公众号,回复: 12473331 查看本文章

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