20-HAL库

#新星杯·14天创作挑战营·第11期#

一、STM32CUBEMX

1、HAL库

  HAL是Hardware Abstraction Layer的缩写,中文名:硬件抽象层。HAL库是ST为STM32最新推出的抽象层嵌入式软件,可以更好的确保跨STM32产品的最大可移植性。该库提供了一整套一致的中间件组件,如RTOS,USB,TCP / IP和图形等。HAL库是基于一个非限制性的BSD许可协议(Berkeley Software Distribution)而发布的开源代码。 ST制作的中间件堆栈(USB主机和设备库,STemWin)带有允许轻松重用的许可模式, 只要是在ST公司的MCU 芯片上使用,库中的中间件(USB 主机/设备库,STemWin)协议栈即被允许随便修改,并可以反复使用。至于基于其它著名的开源解决方案商的中间件(FreeRTOS,FatFs,LwIP和PolarSSL)也都具有友好的用户许可条款。  可以说HAL库就是用来取代之前的标准外设库的。相比标准外设库,STM32Cube HAL库表现出更高的抽象整合水平,HAL API集中关注各外设的公共函数功能,这样便于定义一套通用的用户友好的API函数接口,从而可以轻松实现从一个STM32产品移植到另一个不同的STM32系列产品。HAL库是ST未来主推的库,从前年开始ST新出的芯片已经没有STD库了,比如F7系列。目前,HAL库已经支持STM32全线产品。

标准库

STM32F0 STM32F1 STM32F3 STM32F2 STM32F4 STM32L1系统芯片有标准库支持

STM32F7 STM32H7 STM32L0 STM32L4系统芯片无标准库支持

HAL库

STM32所系列芯片都有HAL库支持

ST提供库函数:标准库、LL库、HAL

2、软件安装步骤

1、安装并破解keil软件

2、双击安装HAL库:

Keil.STM32F4xx_DFP.2.14.0.pack:

https://download.csdn.net/download/m0_63622771/90861310

STM32全部系列最新HAL库下载地址

链接:百度网盘 请输入提取码

提取码:upoq

3、安装STM32CUBEMX,请参考博客:STM32CubeMX安装(全图文安装步骤,一步不落下)_stm32cubemx安装教程-CSDN博客

3、开发步骤

1、从芯片建立工程

下面是以点亮LED灯为例:

2、设置时钟

选择外部晶振时钟源

3、引脚设置

4、代码生成设置

注意:工程的路径不允许是中文路径

5、生成代码

//LED灯初始化
void MX_GPIO_Init(void)
{

  GPIO_InitTypeDef GPIO_InitStruct = {0};

  /* GPIO Ports Clock Enable */
  //GPIOF组初始化
  __HAL_RCC_GPIOF_CLK_ENABLE();
  //GPIOH组初始化
  __HAL_RCC_GPIOH_CLK_ENABLE();

  /*Configure GPIO pin Output Level */
  //配置PF9输出高电平 亮灭
  HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9, GPIO_PIN_SET);

  /*Configure GPIO pin : PF9 */
  GPIO_InitStruct.Pin = GPIO_PIN_9;        //引脚9
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; //输出推挽
  GPIO_InitStruct.Pull = GPIO_PULLUP;  //上拉
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM; //中速
  HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);

}

主函数

int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  //GPIOF9初始化
  MX_GPIO_Init();
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

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

    /* USER CODE BEGIN 3 */
      //1S变更灯状态
      HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_9);  
      //延时1000ms
      HAL_Delay(1000);
      
  }
  /* USER CODE END 3 */
}
//程序写在BEGIN   与 END之前的注释,下一次更新工程会保留代码。

6、外部中断

以按键KEY0为例(下降沿触发)

(1)选择NVIC分组

(2)配置引脚为中断输入

(3)在中断服务函数中实现相关功能(stm32f4xx_it.c)

HAL工程中断服务函数在stm32f4xx_it.c当中

void EXTI0_IRQHandler(void)
{
  /* USER CODE BEGIN EXTI0_IRQn 0 */

  /* USER CODE END EXTI0_IRQn 0 */
  HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);
  /* USER CODE BEGIN EXTI0_IRQn 1 */
    //写入中断处理事件
  /* USER CODE END EXTI0_IRQn 1 */
}

7、HAL库配置PWM输出,控制灯的亮度

源码例子:

https://download.csdn.net/download/m0_63622771/90861329

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Bardb

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

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

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

打赏作者

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

抵扣说明:

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

余额充值