搜索
查看: 2252|回复: 2

[原创] 【STM32G491试用】02 STM32CubeIDE+HAL 库点亮LED

[复制链接]

该用户从未签到

50

主题

369

帖子

0

蝴蝶豆

金牌会员

最后登录
2021-4-1
发表于 2021-3-23 11:00:21 | 显示全部楼层 |阅读模式
       HAL库是ST公司目前主力推的开发方式,全称就是Hardware Abstraction Layer(抽象印象层)。库如其名,很抽象,一眼看上去不太容易知道他的作用是什么。它的出现比标准库要晚,但其实和标准库一样,都是为了节省程序开发的时期,而且HAL库尤其的有效,如果说标准库把实现功能需要配置的寄存器集成了,那么HAL库的一些函数甚至可以做到某些特定功能的集成。也就是说,同样的功能,标准库可能要用几句话,HAL库只需用一句话就够了。并且HAL库也很好的解决了程序移植的问题,不同型号的stm32芯片它的标准库是不一样的,例如在F4上开发的程序移植到F3上是不能通用的,而使用HAL库,只要使用的是相通的外设,程序基本可以完全复制粘贴,注意是相通外设,意思也就是不能无中生有,例如F7比F3要多几个定时器,不能明明没有这个定时器却非要配置,但其实这种情况不多,绝大多数都可以直接复制粘贴。是而且使用ST公司研发的STMcube软件,可以通过图形化的配置功能,直接生成整个使用HAL库的工程文件,可以说是方便至极,但是方便的同时也造成了它执行效率的低下,在各种论坛帖子真的是被吐槽的数不胜数。
1. 配置CubeMX
微信图片_20210323105527.png
2.
微信截图_20210323093845.png

3. Cubemx只能产生初始化代码,功能代码需要自己实现。
  1. void MX_GPIO_Init(void)
  2. {

  3.   GPIO_InitTypeDef GPIO_InitStruct = {0};

  4.   /* GPIO Ports Clock Enable */
  5.   __HAL_RCC_GPIOC_CLK_ENABLE();
  6.   __HAL_RCC_GPIOF_CLK_ENABLE();
  7.   __HAL_RCC_GPIOA_CLK_ENABLE();
  8.   __HAL_RCC_GPIOB_CLK_ENABLE();

  9.   /*Configure GPIO pin Output Level */
  10.   HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET);

  11.   /*Configure GPIO pin : PtPin */
  12.   GPIO_InitStruct.Pin = B1_Pin;
  13.   GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
  14.   GPIO_InitStruct.Pull = GPIO_NOPULL;
  15.   HAL_GPIO_Init(B1_GPIO_Port, &GPIO_InitStruct);

  16.   /*Configure GPIO pin : PtPin */
  17.   GPIO_InitStruct.Pin = LD2_Pin;
  18.   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  19.   GPIO_InitStruct.Pull = GPIO_NOPULL;
  20.   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  21.   HAL_GPIO_Init(LD2_GPIO_Port, &GPIO_InitStruct);

  22.   /* EXTI interrupt init*/
  23.   HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0);
  24.   HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);

  25. }
复制代码
main.c 如下:
  1. int main(void)
  2. {
  3.   /* USER CODE BEGIN 1 */

  4.   /* USER CODE END 1 */

  5.   /* MCU Configuration--------------------------------------------------------*/

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

  8.   /* USER CODE BEGIN Init */

  9.   /* USER CODE END Init */

  10.   /* Configure the system clock */
  11.   SystemClock_Config();

  12.   /* USER CODE BEGIN SysInit */

  13.   /* USER CODE END SysInit */

  14.   /* Initialize all configured peripherals */
  15.   MX_GPIO_Init();

  16.   MX_LPUART1_UART_Init();


  17.   /* USER CODE BEGIN 2 */

  18.   /* USER CODE END 2 */

  19.   /* Infinite loop */
  20.   /* USER CODE BEGIN WHILE */
  21.   while (1)
  22.   {
  23.     /* USER CODE END WHILE */
  24.           HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_SET);

  25.           HAL_Delay(200);

  26.           HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET);

  27.           HAL_Delay(200);


  28.     /* USER CODE BEGIN 3 */
  29.   }
  30.   /* USER CODE END 3 */
  31. }
复制代码


效果图:
微信图片_20210323105907.jpg

总结:第一次使用STcubeIDE + HAL库,还不是很顺畅。

回复

使用道具 举报

该用户从未签到

1492

主题

2703

帖子

0

蝴蝶豆

管理员

最后登录
2021-5-11
发表于 2021-3-24 14:37:52 | 显示全部楼层

亲爱的网友你好,由于ST新社区已上线(https://shequ.stmicroelectronics.cn/)请你至新社区发布新的主题帖。
回复 支持 反对

使用道具 举报

该用户从未签到

50

主题

369

帖子

0

蝴蝶豆

金牌会员

最后登录
2021-4-1
 楼主| 发表于 2021-3-25 11:20:49 | 显示全部楼层
STMCU 发表于 2021-3-24 14:37
亲爱的网友你好,由于ST新社区已上线(https://shequ.stmicroelectronics.cn/)请你至新社区发布新的主题 ...

管管,新论坛好像没有我们要的版块呢,只有个ST问答,ST团队。

所有的帖子都在问答分类下吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-4-26 09:22 , Processed in 0.179121 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表