【STM32学习】HAL库点灯学习

一、安装 stm32CubeMX,配合Keil,使用HAL库

目录

一、安装 stm32CubeMX,配合Keil,使用HAL库

1.1安装jdk

1.2安装STM32CubeMX

二、HAL库使用教程

三、使用HAL库开发LED流水灯和中断模式编程控制LED

3.1GPIO函数:

3.2CubeMX创建   

3.3生成代码:

四、Keil的软件仿真逻辑

五、总结


1.1安装jdk

由于STM32CubeMX是Java实现的,需要安装jdk环境。
jdk官网下载链接:
Java Downloads | Oracle

1.2安装STM32CubeMX

1.下载地址:
https://www.st.com/en/development-tools/stm32cubemx.html
2.安装过程
①以管理员身份运行并安装 SetupSTM32CubeMX-4.27.0.exe ,进入下面这个界面后,点击Next

按照文章步骤即可参考博客:​​​​​​STM32基于HAL库流水灯实验_hel库安装教程中文版-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/weixin_56102526/article/details/120877293

二、HAL库使用教程

当使用STM32系列微控制器时,HAL(Hardware Abstraction Layer)库是一个非常有用的工具,它可以简化硬件操作并提高代码的可移植性。
2.1. 创建工程:
使用STM32CubeMX创建一个新的工程,并选择你的微控制器型号。
2.2. 配置引脚:
在STM32CubeMX中,配置你的引脚,包括外设功能、引脚类型和初始化状态。例如,如果你想要控制一个LED,选择一个GPIO引脚并将其配置为输出。
2.3. 生成代码:
在STM32CubeMX中生成代码,它会自动生成工程文件和初始化代码。
2.4. 在IDE中打开工程:
使用你喜欢的集成开发环境(IDE),如Keil、STM32CubeIDE等,打开生成的工程。
2.5. 编写应用代码:
在主文件(通常是main.c)中编写应用程序代码。以下是一个简单的示例代码,假设你要控制一个LED连接到GPIOB的第0号引脚:

2.6. 编译和下载:
使用你的IDE编译工程,并将程序下载到微控制器中。
2.7. 调试:
启动调试器,检查代码的运行情况。如果一切正常,LED应该会每隔1秒交替点亮和关闭。

三、使用HAL库开发LED流水灯和中断模式编程控制LED

3.1GPIO函数:

HAL_GPIO_WritePin函数:写入引脚高低电平

void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
{
  /* Check the parameters */
  assert_param(IS_GPIO_PIN(GPIO_Pin));
  assert_param(IS_GPIO_PIN_ACTION(PinState));

  if (PinState != GPIO_PIN_RESET)
  {
    GPIOx->BSRR = GPIO_Pin;
  }
  else
  {
    GPIOx->BSRR = (uint32_t)GPIO_Pin << 16u;
  }
}

2.HAL_GPIO_TogglePin函数:引脚电平翻转

void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
{
  uint32_t odr;

  /* Check the parameters */
  assert_param(IS_GPIO_PIN(GPIO_Pin));

  /* get current Output Data Register value */
  odr = GPIOx->ODR;

  /* Set selected pins that were at low level, and reset ones that were high */
  GPIOx->BSRR = ((odr & GPIO_Pin) << GPIO_NUMBER) | (~odr & GPIO_Pin);
}

3.2CubeMX创建   

1.新建项目:

2.选择芯片

3.SYS选择

4.RCC选择

创建完成配置:

3.3生成代码:

想要实现LED1、LED2周期闪烁,我们可以用翻转电平操作。
由于初始LED1(PB9)高电平熄灭,LED2(LED8)低电平点亮。
加入延时函数,让二者电平翻转。

  while (1)
  {
		HAL_Delay(500);
		HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_9);
		HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_8);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }

​​​​​​​四、Keil的软件仿真逻辑

4.1波形观察(设置调试)

波形图查看:

五、总结

这次作业虽然做的较为潦草,但是提高本次的HAL库学习,更加理解了嵌入式开发,HAL库会很方便和很容易,本人才疏学浅,有问题请各位积极指出,谢谢大家。

参考文献:

STM32基于HAL库流水灯实验_hel库安装教程中文版-CSDN博客

  • 19
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值