【解析新特性】300W单路输出工业电源>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 海king的STM32L053的进程贴(基于HAL库项目工程的搭建教程)

共45条 1/5 1 2 3 4 5 ›| 跳转至

海king的STM32L053的进程贴(基于HAL库项目工程的搭建教程)

菜鸟
2015-12-10 19:02:10    评分
前天终于收到板子,只能说这快递太给力了!虽然包装的不是很严实不过经过长途颠簸来到这偏僻的小城市庆幸没啥问题,那就上电试试吧!可是一看接口发现竟是老式的USB接口,现在很少用这种接口了啊!不过走运的是幸好室友的老古董MP4还有这种接口的线,拿来试了下发现还是好使的,个人建议以后制作板子还是改用那种mini口的吧,这样我们用起来也方便。好了废话不多说了,下面进入正题。 以前用过STM32F103开发过小四轴,当时用的是ST公司提供的STM32 Standard Peripheral Libraries(标准外设库)开发的,不过当我拿到这款开发板的时候发现ST公司已经不提供这款库了取而代之的是HAL库,基本上新出来的MCU提供的都是HAL库,而且我用的MDK版本也跟不上时代的脚步根本不支持这款MCU。于是经过一番的倒腾,重新安装软件、下载HAL库,具体方法我就不多说了,别的帖子有很详细的教程不会的可以去参考下,这里有STM32固件库的链接http://www.st.com/web/cn/catalog/tools/FM147/CL1794/SC961/SS1743里面有各种MCU的固件库和资料手册,需要的可以去里面下载。HAL库和标准外设库有些许的不同,习惯标准外设库开发的人突然接触HAL库会感到很不适应,不过用着用着慢慢就好了。当然ST公司也提供了更便捷的开发方式,STM32CubeMx这个软件就可以直接利用图形化的方式配置MCU完成初始化十分便捷,而且NUCLEO-L053R8支持mbed功能可以直接使用在线资源也很便捷。这些开发方式的方法我也不介绍了,别的帖子有很详细的介绍可以参考。下面我主要介绍使用HAL库搭建项目工程的方法,当是由团队共同开发一个项目的话一个清晰的项目工程可以便于管理提高开发效率,显然这是十分重要的。 首先我们新建一个文件夹可以命名为你的项目名称,再在这个文件下新建7个子文件夹如下图所示 Doc为项目说明文档,Driver为外设驱动程序,LibHAL库文件,MDK为工程编译输出的信息,Startup为启动文件,STM32L053R8T6为开发板的支持文件只针对开发板开发时使用具体项目可以不需要,User为用户文件编写的应用程序可以放在此处。接下来我们把从官网下载的HAL库里的文件移植到这个项目中,前两个文件夹里的文件是用户自己编写的,主要就是把库文件移植到Lib中。在Lib中我又新建了两个文件夹CMSISSTM32L0xx_HAL_DriverCMSIS是和MCU芯片内核相关的一些头文件等如下图所示 里面的文件是根据所用的芯片而变化的,我们用的芯片STM32L053Cortex-M0+内核所以从库中移植相对应的头文件过来。 STM32L0xx_HAL_Driver即是HAL库中关于MCU外设的封装库函数,直接从库中将此文件复制过来即可。 Startup里是MCU的启动文件,文件名是startup_stm32l053xx.s从库里找到添加到此处即可。 STM32L053R8T6是开发板对应的BSP文件如下图 User即是用户文件里面存放开发者编写的应用程序、中断服务程序、外设使能头文件,如下图所示 至此相关文件也就移植好了,接下来我们开始新建工程并将工程保存在MDK文件夹里。此时会出现如图所示的界面我们选择对应的MCU类型,如果没有相应的MCU是因为你没下载对应的PACK包,去官网下载安装后即可这里不再赘述 接着出现如下图所示界面,让我们选择项目文件这里可以点取消,因为我们自己已经将文件移植好了 在项目中添加这些组及刚才移植的文件如下图所示 STM32L0xx_HAL_Driver中添加C文件即可。 接下来配置头文件路径,点击按钮如下图所示 接着点击C/C++如图所示 至此项目就配置好了,接下来只需根据自己所用的调试器在Debug中选择相应的下载器即可,下面是我编写的一段小灯测试代码,测试OK
#include "stm32l0xx_hal.h"

void SystemClock_Config(void);
static void MX_GPIO_Init(void);

int main(void)
{

  HAL_Init();

  SystemClock_Config();

  MX_GPIO_Init();

  while (1)
  {
if(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13) == 1)
{	
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);
HAL_Delay(500);
}
else
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
}
}

}

void SystemClock_Config(void)
{

  RCC_OscInitTypeDef RCC_OscInitStruct;
  RCC_ClkInitTypeDef RCC_ClkInitStruct;

  __PWR_CLK_ENABLE();

  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);

  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  RCC_OscInitStruct.HSICalibrationValue = 16;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
  RCC_OscInitStruct.PLL.PLLMUL = RCC_PLLMUL_4;
  RCC_OscInitStruct.PLL.PLLDIV = RCC_PLLDIV_2;
  HAL_RCC_OscConfig(&RCC_OscInitStruct);

  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
  HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1);

  HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);

  HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);

  HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
}

void MX_GPIO_Init(void)
{

  GPIO_InitTypeDef GPIO_InitStruct;

  __GPIOC_CLK_ENABLE();
  __GPIOA_CLK_ENABLE();

  GPIO_InitStruct.Pin = GPIO_PIN_13;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

  GPIO_InitStruct.Pin = GPIO_PIN_5;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

}

下载到开发板中能看到小灯一闪一闪,按下按键小灯则不闪一直点亮。

下面是HAL库使用参考文档,回复可见哦,写了这么多好累! ——回复可见内容—— 



关键词: STM32L053     工程     搭建     开发     教程    

专家
2015-12-10 20:53:32    评分
2楼

心得啊~~

不过,我觉得HAL并不好用。嘿嘿


菜鸟
2015-12-13 23:12:49    评分
3楼
楼上都是大神,小白求问一个问题,在设置头文件路径时,上面有一个Define:USE_HAL_DRIVER.STM32L053XX这个是什么意思啊?

助工
2015-12-14 11:14:05    评分
4楼
下载

助工
2015-12-26 09:27:28    评分
5楼
给你提个建议,以后写帖子分个段哈,眼要看瞎了

菜鸟
2015-12-27 16:29:06    评分
6楼
基本参考书都是用的标准库,用HAL库找不到有用的资料

菜鸟
2015-12-31 11:04:23    评分
7楼
好文章,学习学习,谢谢分享!

菜鸟
2016-01-04 19:33:58    评分
8楼
好资料,正好用着,谢谢了

菜鸟
2016-05-27 17:03:02    评分
9楼
只是回复看隐藏,要是能出一些l053的基本教程和一些专属名词的说明就好了

菜鸟
2016-07-06 19:25:49    评分
10楼
正需要,看看了,谢谢了。

共45条 1/5 1 2 3 4 5 ›| 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]