【STM32】HAL库STM32CubeMX+True Studio系列教程(一)——GPIO配置LED灯

工具

【STM32CubeMX】+【True Studio】+【STM32CubeProg】
【STM32F103C8T6核心板/STM32F407ZGT6核心板】
【ST-Link调试器】

HAL库

1.GPIO_InitTypeDef(初始化结构体)

typedef struct
{
uint32_t Pin;       /*!< Specifies the GPIO pins to be configured.
                    This parameter can be any value of @ref GPIO_pins_define */
uint32_t Mode;      /*!< Specifies the operating mode for the selected pins.
                    This parameter can be a value of @ref GPIO_mode_define */
uint32_t Pull;      /*!< Specifies the Pull-up or Pull-Down activation for the selected
                    pins.This parameter can be a value of @ref GPIO_pull_define */
uint32_t Speed;     /*!< Specifies the speed for the selected pins.
                    This parameter can be a value of @ref GPIO_speed_define */
} GPIO_InitTypeDef;

2.GPIO Exported Function

De_Init&Init Function

void HAL_GPIO_DeInit(GPIO_TypeDef *  GPIOx, uint32_t  GPIO_Pin );   //去初始化函数
void HAL_GPIO_Init(GPIO_TypeDef *  GPIOx, uint32_t  GPIO_Pin );     //初始化函数

IO Operation Function

void HAL_GPIO_TogglePin(GPIO_TypeDef *  GPIOx,  uint16_t  GPIO_Pin );                 //翻转特定gpio_pin
void HAL_GPIO_WritePin(GPIO_TypeDef *  GPIOx,  uint16_t  GPIO_Pin ); 			      //设置或清除选定的数据端口位
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *  GPIOx,  uint16_t  GPIO_Pin );		  //读取选定的数据端口位
HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef *  GPIOx,  uint16_t  GPIO_Pin);		  //锁定GPIO引脚配置寄存器
void HAL_GPIO_EXTI_IRQHandler  ( uint16_t  GPIO_Pin );                                //EXTI中断服务函数
void HAL_GPIO_EXTI_Callback  ( uint16_t  GPIO_Pin );                                  //中断调回函数

HAL_Delay

//此延时函数为HAL库封装好的延时函数,可重定义
//ms级
__weak void HAL_Delay(uint32_t Delay)
{
  uint32_t tickstart = HAL_GetTick();
  uint32_t wait = Delay;

  /* Add a freq to guarantee minimum wait */
  if (wait < HAL_MAX_DELAY)
  {
    wait += (uint32_t)(uwTickFreq);
  }

  while ((HAL_GetTick() - tickstart) < wait)
  {
  }

具体配置过程

1.使用STM32CubeMX进行初始化配置

新建工程
【STM32】HAL库STM32CubeMX+True Studio系列教程(一)——GPIO配置LED灯_第1张图片
选择芯片
【STM32】HAL库STM32CubeMX+True Studio系列教程(一)——GPIO配置LED灯_第2张图片
首先进行系统配置,debug模式选择
【STM32】HAL库STM32CubeMX+True Studio系列教程(一)——GPIO配置LED灯_第3张图片
时钟配置,外部高速时钟
【STM32】HAL库STM32CubeMX+True Studio系列教程(一)——GPIO配置LED灯_第4张图片
系统时钟配置72MHz,APB1总线配置36MHz
【STM32】HAL库STM32CubeMX+True Studio系列教程(一)——GPIO配置LED灯_第5张图片
重新回到引脚配置界面,配置相关IO
【STM32】HAL库STM32CubeMX+True Studio系列教程(一)——GPIO配置LED灯_第6张图片
根据原理图可知D2接在PC13
【STM32】HAL库STM32CubeMX+True Studio系列教程(一)——GPIO配置LED灯_第7张图片
GPIO初始化配置:pin、mode、outleval、speed等
【STM32】HAL库STM32CubeMX+True Studio系列教程(一)——GPIO配置LED灯_第8张图片
工程生成设置
【STM32】HAL库STM32CubeMX+True Studio系列教程(一)——GPIO配置LED灯_第9张图片
工程代码预设置
【STM32】HAL库STM32CubeMX+True Studio系列教程(一)——GPIO配置LED灯_第10张图片
生成工程,打开工程
【STM32】HAL库STM32CubeMX+True Studio系列教程(一)——GPIO配置LED灯_第11张图片
进入True Studio编译器
【STM32】HAL库STM32CubeMX+True Studio系列教程(一)——GPIO配置LED灯_第12张图片
代码一定要写在用户代码注释行内
【STM32】HAL库STM32CubeMX+True Studio系列教程(一)——GPIO配置LED灯_第13张图片
编写用户代码,实现LED闪烁
【STM32】HAL库STM32CubeMX+True Studio系列教程(一)——GPIO配置LED灯_第14张图片
写好代码后编译
【STM32】HAL库STM32CubeMX+True Studio系列教程(一)——GPIO配置LED灯_第15张图片
之后要接ST-Link,给单片机上电,打开STM32CubeProgrammer,进行烧录
【STM32】HAL库STM32CubeMX+True Studio系列教程(一)——GPIO配置LED灯_第16张图片
连接开发板,进行调试
【STM32】HAL库STM32CubeMX+True Studio系列教程(一)——GPIO配置LED灯_第17张图片
烧录代码设置
【STM32】HAL库STM32CubeMX+True Studio系列教程(一)——GPIO配置LED灯_第18张图片

【STM32】HAL库STM32CubeMX+True Studio系列教程(一)——GPIO配置LED灯_第19张图片
烧录
【STM32】HAL库STM32CubeMX+True Studio系列教程(一)——GPIO配置LED灯_第20张图片
烧录完成后按开发板复位键,即可观察到现象,此实验的现象为LED有节奏的闪烁,间隔200ms

结语

此例程随只单独点了LED,但IO配置都是这个步骤,IO操作函数的使用可以自己在自习去学习一下。此例子也详细演示了的介绍了HAL库+STM32CubeMX+True Studio+STM32CubeProgrammer全新开发过程的步骤,之后的教程中在配置过程中不会再这么详细,一般步骤根据此情况会有跳过,重要的地方还会仔细讲解,如果还有遇到哪些具体的细节问题可以留言,共同学习解决。

关于HAL库中文/英文使用手册和库函数速查手册可留言获取资源

持续更新中… 感谢支持!!!

你可能感兴趣的:(HAL库)