1、NUCLEO-L476RG试验(一)_LED闪闪亮(环境搭建与开发工具介绍)
本帖最后由 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 从原理图上可以知道B1的连接关系(图1) 从PCB图上可以看见板子具体的走向,细细品味板子的设计特点(图2)
从原理图上可以看见LD2的引脚关系(图3) 从PCB图上寻找LD2走线与主板设计特点(图4)
看完原理图可能我们还一头雾水,没关系STM社区资料很全,这里有完整的板子功能介绍:STM32 Nucleo板https://www.stmcu.org.cn/document/detail/index/id-216562(图5) 这里为这个PDF点个赞,虽然板子是一样的,可文档里还是把F0~F4 L1~L4的板子贴了一遍。资料十分完整,是个不错的Nucleo板系列资料。看完开发板资料后,我们知道了,原来这Nucleo板不是一个单板的资料,集合ST-LINK和开发板的完整资料,省去我们漫天找在线调试用的x-LINK/x-JTAG的精力。
知道Nucleo板的内容后,我们就可以找相关支持板子开发的相关工具了,这里STM也有完整的介绍,STM32 Nucleo开发板软件开发工具上手指南:(https://www.stmcu.org.cn/document/detail/index/id-216563)(图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驱动 https://www.stmcu.org.cn/document/detail/index/id-216340b、ST-Link/V2-1在Win7,8的PC端USB驱动 https://www.stmcu.org.cn/document/detail/index/id-216350 Nucleo中的ST-Link固件程序我们先不用下载,更新板内的内容,先下载开发程序能将板子连接、下载、在线调试就好;
另外补充PDF没有介绍的工具: STM32 STLINK Utility安装程序 https://www.stmcu.org.cn/document/detail/index/id-216343 这个工具可以用来通过ST-LINK来向板子下载已经编译好的二进制程序,另外还能读出板子上的二进制内容。 开发库Patchv1.1.1,适用STM32CubeL4 v1.1.0版本。 https://www.stmcu.org.cn/document/detail/index/id-216648 这是适用于STM32L476x芯片的低功耗开发库
1、安装其他辅助软件 若有经验的开发者,用到以上的几个软件就能进行开发了,但STM并没有止步于此,针对STM众多芯片的芯片产品和产品特点,STM公司还推出了一系列辅助工具这里介绍STM32CubeMXSTM32CubeMX,为STM32配置和C代码的初始化程序的工具,还有PDF的下载地址如下:https://www.stmcu.org.cn/document/detail/index/id-216356(图7) 从这图上我们可以看出,通过STM32CubeMX工具能根据我们配置信息自动生成我们所需的项目代码,以便我们开发,真可谓十分贴心。特别是如今芯片引脚复用时代,功能的复用真需要更智能方便的配置工具,STM的软实力真不是吹的。
2、观察板子上电后的功能
(图8) 讲了这么多的上位机软件,按耐不住的激动心情,是我们回头来看看板子的时刻了。对照完资料上的内容,我们一一来观察板子,让资料和板子实物有一个完整对应。看完功能对应和跳线的设定为初态后,我们按照说明书的连接方法接上USB就可以上电试车了。 接通USB电源后,上位机可以看见一个1MB的U盘,Nucleo能把STM32L4片内FLASH当作U盘空间; Nucleo板子 一个绿色的灯在不断闪烁(LED2),按下用户按钮B1,灯在切换闪烁频率;按下Rest按钮,芯片重启了。
3、看看这些软件都带来了什么?A、STM32 ST-LINKUtility(图9) 启动STLU后,我们选择目标(Target)连接,让我们看看这个板子里面有什么。首先看见小版右上角的双色LED灯在不断的闪亮,标示着我们的小板进入了ST_LINK连接状态。(图10) 经过链接读取之后,我们可以看见NUCLEO的连接方式是SWD,记住这个方式,我们在其它在线工具使用中都有使用这种方式(SWD ST_LINK)来连接我们的小板。今后我们能用这个工具连接、下载我们编译好的程序,由于篇幅有限就不一一介绍它的功能了。
B、STM32CubeMX(图11)打开软件,我们就能看见这样的菜单,让我们新建一个项目Hello_LED。(图12)软件里支持那么多的MCU和Board,因为是官方板,我们选择Board。(图13)选择好内容后我们点击OK。(图14)经过一会儿的计算后,出现了芯片配置界面,并且显示出已经被占用的资源,左侧红色打叉的部分是因为占用资源出现冲突的部分,不用十分担心。 (图15) 如果需要新规划一套SPI的功能引脚,我们可以按照上图的所示,先选择芯片引脚应用类型,再选择应用的功能特点新功能就设计好了。这功能在芯片引脚复用时代,让芯片引脚功能的规划工作量大大减轻。而且芯片资源提早在PCB设计之前就做好了。(图16) 这工具更方便的是,芯片规划好后,我们就能生成代码了。对没有听错,就是生成代码。(图17)输入项目名称“Hello_LED”,选择IDE类型。点击OK。我们的代码就生成好了。(图18)还能用IED打开生成的项目,十分贴心。
补充两点:a、生成代码之前需要下载SDK库。(图19)b、生成代码的目录不能含有中文。
4、建立第一个试验测试
(图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 OFF0
#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)d、Debug---->Start--->Run(图22)这时,我们可以看见寄存器随LD2闪亮熄灭而变化。我们的LED闪闪亮试验就结束了。
5、试验后的心得a、该试验的核心亮点是使用STM32CubeMX,有了这个工具让芯片的规划和设计速度加快不止一点;在线规划设计芯片功能引脚,生成核心代码、初始化功能引脚,都加快了开发速度。b、自动生成的项目里有一个文件值得大家关注mxconstants.h,这里定义了芯片引脚的通用变量,增加了程序设计的可读性。(图23) c、STM32CubeMX 的功能还有其他功能在以后的试验中进行体验,比如时钟配置,这些都是能在工具中可视化配置并生成代码。(图24)(图25) 好了,LED闪闪亮就写到这里吧~~,各位晚安。
今早起来把帖子整理成为一个文档,便于大家下载与收藏
后文链接2、NUCLEO-L476RG试验(二)_LED闪闪亮续一(按键、中断)
后文连接3、NUCLEO-L476RG实验心得(三)_Eclipse环境配置
后文连接4、NUCLEO-L476RG试验三_LED闪闪亮续(定时、串口) 看得出来,楼主很用心。
不错,谢谢分享 楼主果然是用心之人。 必定成功 顶顶顶顶顶顶顶顶 谢谢LZ 楼主很用心,不错。 学习了。。。 楼主的精神值的学习
页:
[1]
2