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

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

[复制链接]
wolfgang 提问时间:2015-11-11 23:34 /
本帖最后由 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, 下载次数: 406)
收藏 7 评论15 发布时间:2015-11-11 23:34

举报

15个回答
huaiqiao 回答时间:2015-11-11 23:44:42
看得出来,楼主很用心。
风子 回答时间:2015-11-11 23:45:57
谢谢分享.png
Paderboy 回答时间:2015-11-12 07:28:43
不错,谢谢分享
安臣 回答时间:2015-11-12 08:34:12
楼主果然是用心之人。 必定成功
stmcu.png
me浩 回答时间:2015-11-12 08:58:35
顶顶顶顶顶顶顶顶
zhangdaijin 回答时间:2015-11-12 09:10:00
          谢谢LZ
when7com 回答时间:2015-11-12 10:05:48
楼主很用心,不错。
moyanming2013 回答时间:2015-11-12 11:30:56
学习了。。。
mark0668 回答时间:2015-11-12 12:36:49
楼主的精神值的学习

083332xtknc7nc3kjnt47p.png
肽宰1 回答时间:2015-11-12 13:13:30
赞个,谢谢分享
ROCK0525 回答时间:2015-11-12 14:26:58
这帖子真好,非常的详细,楼主辛苦了
niexiaohui 回答时间:2015-11-12 21:08:15
学学嘻嘻
sasmike 回答时间:2015-11-16 12:53:48
写得不错,对新手很有用!
ic界中lol打的最好的 回答时间:2017-5-27 09:07:23
很用心,点个赞
12下一页
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版