当前位置:   article > 正文

【STM32学习】HAL库点灯学习

【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函数:写入引脚高低电平

  1. void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
  2. {
  3. /* Check the parameters */
  4. assert_param(IS_GPIO_PIN(GPIO_Pin));
  5. assert_param(IS_GPIO_PIN_ACTION(PinState));
  6. if (PinState != GPIO_PIN_RESET)
  7. {
  8. GPIOx->BSRR = GPIO_Pin;
  9. }
  10. else
  11. {
  12. GPIOx->BSRR = (uint32_t)GPIO_Pin << 16u;
  13. }
  14. }

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

  1. void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
  2. {
  3. uint32_t odr;
  4. /* Check the parameters */
  5. assert_param(IS_GPIO_PIN(GPIO_Pin));
  6. /* get current Output Data Register value */
  7. odr = GPIOx->ODR;
  8. /* Set selected pins that were at low level, and reset ones that were high */
  9. GPIOx->BSRR = ((odr & GPIO_Pin) << GPIO_NUMBER) | (~odr & GPIO_Pin);
  10. }

3.2CubeMX创建   

1.新建项目:

2.选择芯片

3.SYS选择

4.RCC选择

创建完成配置:

3.3生成代码:

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

  1. while (1)
  2. {
  3. HAL_Delay(500);
  4. HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_9);
  5. HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_8);
  6. /* USER CODE END WHILE */
  7. /* USER CODE BEGIN 3 */
  8. }

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

4.1波形观察(设置调试)

波形图查看:

五、总结

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

参考文献:

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/647144
推荐阅读
相关标签
  

闽ICP备14008679号