本帖最后由 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开发板软件开发工具上手指南:
(图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) 从这图上我们可以看出,通过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 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) d、Debug---->Start--->Run
(图22) 这时,我们可以看见寄存器随LD2闪亮熄灭而变化。我们的LED闪闪亮试验就结束了。 a、该试验的核心亮点是使用STM32CubeMX,有了这个工具让芯片的规划和设计速度加快不止一点;在线规划设计芯片功能引脚,生成核心代码、初始化功能引脚,都加快了开发速度。 b、自动生成的项目里有一个文件值得大家关注mxconstants.h,这里定义了芯片引脚的通用变量,增加了程序设计的可读性。
(图23) c、STM32CubeMX 的功能还有其他功能在以后的试验中进行体验,比如时钟配置,这些都是能在工具中可视化配置并生成代码。
(图24)
(图25) 好了,LED闪闪亮就写到这里吧~~,各位晚安。 今早起来把帖子整理成为一个文档,便于大家下载与收藏 |
看得出来,楼主很用心。 |
|
不错,谢谢分享 |
楼主果然是用心之人。 必定成功 |
顶顶顶顶顶顶顶顶 |
谢谢LZ |
楼主很用心,不错。 |
学习了。。。 |
楼主的精神值的学习 |
赞个,谢谢分享 |
这帖子真好,非常的详细,楼主辛苦了 |
学学嘻嘻 |
写得不错,对新手很有用! |
很用心,点个赞 |
【开发工具】神舟系列开发板(STM32103/STM32107)光盘资料下载(5个G左右)
Linux环境下STM32开发工具TrueSTUDIO初体验
急寻:bluenrg的开发板和开发工具包
ST 开发工具大合集
求EVAL6470H-DISC开发工具
【开发工具】STM32神舟II号开发板(STM32F103VCT6)详细介绍&全面资料
【开发工具】STM32神舟I号开发板(STM32F103RBT6)详细介绍&全面资料
【评测站】Nucleo-32 STM32L432KCU6 评估板之云端开发工具-mbed体验
STM8L 开发工具cxstm8 32K版
请问大家都用什么开发工具呀?