你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 8423|回复: 15

[STM32L476] 1、NUCLEO-L476RG试验(一)_LED闪闪亮(环境搭建与开发工具介绍)

[复制链接]

74

主题

1368

回帖

194

蝴蝶豆

版主

最后登录
2020-5-12
发表于 2015-11-11 23:34:28 | 显示全部楼层 |阅读模式
本帖最后由 wolfgang2015 于 2017-6-17 10:49 编辑

0、实验开始之前阅读相关文档
   拿到板子后,第一步就是看板子原理图、PCB图资料,我们这里要看的是STM NUCLEO板:NUCLEO-L476RG(STM32L476RGT6)
在STM社区资料中能下载到完整的板子原理和PCB资料:
https://www.stmcu.org.cn/document/list/index/category-937
图1.jpg
               从原理图上可以知道B1的连接关系(图1)
图2.jpg
      从PCB图上可以看见板子具体的走向,细细品味板子的设计特点(图2)

图3.jpg
                从原理图上可以看见LD2的引脚关系(图3)
图4.jpg
      从PCB图上寻找LD2走线与主板设计特点(图4)

   看完原理图可能我们还一头雾水,没关系STM社区资料很全,这里有完整的板子功能介绍:
STM32 Nucleo板
https://www.stmcu.org.cn/document/detail/index/id-216562
图5.jpg
(图5)
    这里为这个PDF点个赞,虽然板子是一样的,可文档里还是把F0~F4 L1~L4的板子贴了一遍。资料十分完整,是个不错的Nucleo板系列资料。看完开发板资料后,我们知道了,原来这Nucleo板不是一个单板的资料,集合ST-LINK和开发板的完整资料,省去我们漫天找在线调试用的x-LINK/x-JTAG的精力。

   知道Nucleo板的内容后,我们就可以找相关支持板子开发的相关工具了,这里STM也有完整的介绍,STM32 Nucleo开发板软件开发工具上手指南:
图6.jpg
(图6)
从这里,我们知道了连接板子下载程序及在线调试可以通过ST-LINK/V2-1来实现,Windows需要一个ST-LINK/V2-1的驱动。

  另外开发平台可以选择 IAR EMbeddedWorkbench、Keil forARM的MDK-ARM(区别MDK-C51的开发平台)或者TruesTUDIO。
看来需要准备的工具还很多,我们各自的官网去下载:
Keil是从C51的时候就开始使用了,非常熟悉,之前三星的ARM也是用它作为开发平台开发的,这里我们继续选用它做为开发平台:
    KEIL软件我们可以去http://www.keil.com/下载,这里需要用邮件注册一下就能下载了。
下载安装KEIL后,不要忘了下载KEIL的ARM库
    ST-LINK/V2-1驱动:再次感谢STM论坛提供的资料地址,让我们十分方便的下载ST-LINK的驱动程序:
  a、ST-LINK/V2 Win7、Vista和WinXP的PC端USB驱动
  b、ST-Link/V2-1在Win7,8的PC端USB驱动
    Nucleo中的ST-Link固件程序我们先不用下载,更新板内的内容,先下载开发程序能将板子连接、下载、在线调试就好;

  另外补充PDF没有介绍的工具:
    STM32 STLINK Utility安装程序
    这个工具可以用来通过ST-LINK来向板子下载已经编译好的二进制程序,另外还能读出板子上的二进制内容。
   
    开发库Patchv1.1.1,适用STM32CubeL4 v1.1.0版本。
    这是适用于STM32L476x芯片的低功耗开发库

1、安装其他辅助软件
    若有经验的开发者,用到以上的几个软件就能进行开发了,但STM并没有止步于此,针对STM众多芯片的芯片产品和产品特点,STM公司还推出了一系列辅助工具这里介绍STM32CubeMX
STM32CubeMX,为STM32配置和C代码的初始化程序的工具,还有PDF的下载地址如下:https://www.stmcu.org.cn/document/detail/index/id-216356
图7.jpg
(图7)
    从这图上我们可以看出,通过STM32CubeMX工具能根据我们配置信息自动生成我们所需的项目代码,以便我们开发,真可谓十分贴心。特别是如今芯片引脚复用时代,功能的复用真需要更智能方便的配置工具,STM的软实力真不是吹的。

2、观察板子上电后的功能

图8.jpg
(图8)
   讲了这么多的上位机软件,按耐不住的激动心情,是我们回头来看看板子的时刻了。对照完资料上的内容,我们一一来观察板子,让资料和板子实物有一个完整对应。看完功能对应和跳线的设定为初态后,我们按照说明书的连接方法接上USB就可以上电试车了。
   接通USB电源后,上位机可以看见一个1MB的U盘,Nucleo能把STM32L4片内FLASH当作U盘空间;
   Nucleo板子 一个绿色的灯在不断闪烁(LED2),按下用户按钮B1,灯在切换闪烁频率;按下Rest按钮,芯片重启了。

3、看看这些软件都带来了什么?
A、STM32 ST-LINKUtility
图9.jpg
(图9)
    启动STLU后,我们选择目标(Target)连接,让我们看看这个板子里面有什么。首先看见小版右上角的双色LED灯在不断的闪亮,标示着我们的小板进入了ST_LINK连接状态。
图10.jpg
(图10)
    经过链接读取之后,我们可以看见NUCLEO的连接方式是SWD,记住这个方式,我们在其它在线工具使用中都有使用这种方式(SWD ST_LINK)来连接我们的小板。今后我们能用这个工具连接、下载我们编译好的程序,由于篇幅有限就不一一介绍它的功能了。

B、STM32CubeMX
图11.jpg
(图11)
打开软件,我们就能看见这样的菜单,让我们新建一个项目Hello_LED。
图12.jpg
(图12)
软件里支持那么多的MCU和Board,因为是官方板,我们选择Board。
图13.jpg
(图13)
选择好内容后我们点击OK。
图14.jpg
(图14)
经过一会儿的计算后,出现了芯片配置界面,并且显示出已经被占用的资源,左侧红色打叉的部分是因为占用资源出现冲突的部分,不用十分担心。
图15.jpg
(图15)
    如果需要新规划一套SPI的功能引脚,我们可以按照上图的所示,先选择芯片引脚应用类型,再选择应用的功能特点新功能就设计好了。这功能在芯片引脚复用时代,让芯片引脚功能的规划工作量大大减轻。而且芯片资源提早在PCB设计之前就做好了。
图16.jpg
(图16)
    这工具更方便的是,芯片规划好后,我们就能生成代码了。对没有听错,就是生成代码。
图17.jpg
(图17)
输入项目名称“Hello_LED”,选择IDE类型。点击OK。我们的代码就生成好了。
图18.jpg
(图18)
还能用IED打开生成的项目,十分贴心。

补充两点:
a、生成代码之前需要下载SDK库。
图19.jpg
(图19)
b、生成代码的目录不能含有中文。

4、建立第一个试验测试

图20.jpg
(图20)
用Keil5打开生成的代码后,可以看见含代码驱动库的完整项目代码,打开main.c后,所有设备的初始化已经实现了。
void MX_GPIO_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct;
  /* GPIO Ports Clock Enable */
........
  /*Configure GPIO pin : B1_Pin */
..........
  /*Configure GPIO pins : USART_TX_Pin USART_RX_Pin */
........
  /*Configure GPIO pin : LD2_Pin */
........
  /*Configure GPIO pins : PB12 PB13 PB14 PB15 */
.........
}


我们只需要增加少量代码就能实现我们的试验的目标了,
a、新增main.h文件输入以下代码:
#ifndef    __LED_H
#define    __LED_H
#define    ON   1
#define    OFF  0
#define    LED(STA)     (STA)?HAL_GPIO_WritePin(LD2_GPIO_Port,LD2_Pin,GPIO_PIN_SET):HAL_GPIO_WritePin(LD2_GPIO_Port,LD2_Pin,GPIO_PIN_RESET)
#endif


b、在main.c文件中增加以下代码
.....................
#include "stm32l4xx_hal.h"
#include "main.h"
............
int main(void)
{
  /* USER CODE BEGIN 1 */
  uint8_t sta = ON;
  uint16_t delay = 500;
  /* USER CODE END 1 */
  .....................
  while (1)
  {
   /* USER CODE END WHILE */   /* USER CODE BEGIN 3 */
   LED(sta);
   sta =!sta;
   HAL_Delay(delay);
  }

  /* USER CODE END 3 */
  ...........................

c、Build Target
图21.jpg
(图21)
d、Debug---->Start--->Run
图22.jpg
(图22)
这时,我们可以看见寄存器随LD2闪亮熄灭而变化。我们的LED闪闪亮试验就结束了。

5、试验后的心得
a、该试验的核心亮点是使用STM32CubeMX,有了这个工具让芯片的规划和设计速度加快不止一点;在线规划设计芯片功能引脚,生成核心代码、初始化功能引脚,都加快了开发速度。
b、自动生成的项目里有一个文件值得大家关注mxconstants.h,这里定义了芯片引脚的通用变量,增加了程序设计的可读性。
图23.jpg
(图23)
   c、STM32CubeMX 的功能还有其他功能在以后的试验中进行体验,比如时钟配置,这些都是能在工具中可视化配置并生成代码。
图24.jpg
(图24)
图25.jpg
(图25)
好了,LED闪闪亮就写到这里吧~~,各位晚安。

今早起来把帖子整理成为一个文档,便于大家下载与收藏
1、NUCLEO-L476RG试验(一)_LED闪闪亮(环境搭建与开发工具介绍).pdf (1.62 MB, 下载次数: 403)
<
回复

使用道具 举报

1

主题

902

回帖

0

蝴蝶豆

金牌会员

最后登录
2019-12-7
发表于 2015-11-11 23:44:42 | 显示全部楼层
看得出来,楼主很用心。
回复 支持 反对

使用道具 举报

33

主题

1243

回帖

0

蝴蝶豆

论坛元老

最后登录
2019-3-9
发表于 2015-11-11 23:45:57 | 显示全部楼层
谢谢分享.png
回复 支持 反对

使用道具 举报

47

主题

3404

回帖

30

蝴蝶豆

版主

最后登录
2020-12-7
发表于 2015-11-12 07:28:43 | 显示全部楼层
不错,谢谢分享
回复 支持 反对

使用道具 举报

10

主题

379

回帖

0

蝴蝶豆

高级会员

最后登录
1970-1-1
发表于 2015-11-12 08:34:12 | 显示全部楼层
楼主果然是用心之人。 必定成功
stmcu.png
回复 支持 反对

使用道具 举报

12

主题

415

回帖

0

蝴蝶豆

高级会员

最后登录
2018-12-6
发表于 2015-11-12 08:58:35 | 显示全部楼层
顶顶顶顶顶顶顶顶
回复 支持 反对

使用道具 举报

31

主题

1951

回帖

0

蝴蝶豆

论坛元老

最后登录
2020-12-4
发表于 2015-11-12 09:10:00 | 显示全部楼层
          谢谢LZ
回复 支持 反对

使用道具 举报

8

主题

122

回帖

0

蝴蝶豆

中级会员

最后登录
2018-3-15
发表于 2015-11-12 10:05:48 | 显示全部楼层
楼主很用心,不错。
回复 支持 反对

使用道具 举报

47

主题

1636

回帖

7

蝴蝶豆

论坛元老

最后登录
2020-10-28
发表于 2015-11-12 11:30:56 | 显示全部楼层
学习了。。。
回复 支持 反对

使用道具 举报

47

主题

1210

回帖

5

蝴蝶豆

论坛元老

最后登录
2020-8-13
发表于 2015-11-12 12:36:49 | 显示全部楼层
楼主的精神值的学习

083332xtknc7nc3kjnt47p.png
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版