天南地北客
发表于: 2016-8-23 17:04:58 | 显示全部楼层

最近几年,我一直在Arduino环境下使用Arduino和Teensys开发板,以及以基于WEB的环境mbed使用FRDM开发板用于处理器控制器的小型项目。但是,当涉及到包含有该处理器的自制PCB的项目时,这些平台和环境就不再有吸引力了。


当然,人们可以使用与Arduino开发板相同的处理器,通过合适的Arduino引导程序烧写,并且在Arduino环境中仍然工作正常。或者,可以使用mbed支持的开发板上的处理器,如STM32,并且通过这些开发板的ST-LINK烧写程序。但是,当使用和mbed支持的开发板不一样的处理器时,人们可能会遇到麻烦,因为普通用户似乎不能够为其他不同的处理器配置mbed环境。而且,事实上,mbed存储在云中,用户可以根据个人喜好决定是否进行下载。


基于以上这些原因,我想搭建一个本地的开发环境,这样我就可以在完全自制的电路板上使用一些比较现代的32位ARM处理器。我也想使用一些不会花很多钱的解决方案,所以,Keil和IAR都不在我的考虑范围。我选择使用基于Cortex-M0+内核的超低功耗STM32L0系列中的STM32L052C8T6。因为该型号具有我需要的功能和性能,同时还是低功耗产品,在将来设计的某个版本有可能支持电池供电。STM32处理器的一个优势在于他们可以通过廉价的探索板或者NUCLEO板内置的ST-LINK进行编程。所以,不需要昂贵的编程器。


STM32处理器的免费开发环境有不止一种。第一次我尝试的是带GNU ARM Eclipse插件设置Eclipse。在花费大量时间阅读GNU ARM Eclipse网站上的各个文章后,并且按照所有需要的文件,仍然不能编译STM32CubeMX生成的配置和初始化代码。也许比我有更多经验、耐心以及了解Eclipse的人可能会使其正常工作。但是,在大量尝试设置include和代码目录,我尝试另一种选择,即由AC6公司提供的SW4STM32环境。


安装开发环境


SW4STM32是一个基于Eclipse的免费工具。虽然我是在Windows平台下使用该工具,它也可以用于Linux和MacOS。我想大多数下面的说明也适用于非Windows平台。


以下是如何安装SW4STM32:

1.  在http://www.openstm32.org/HomePage创建一个账户,并登陆。

2.  按照Documentation > System Workbench for STM32 > Installation manual的说明进行安装。

3.  在http://www.openstm32.org/Downloa ... for+STM32+installer下载相应的安装文件(32位或64位)。选择正确的体系架构(32位或64位)是很重要的,使得ST-LINK调试器正常工作。

4.  运行安装包。

5.  如果你遇到有关JavaRE的警告,需要在Oracle安装相应的Java运行库。也需要和SW4STM32相同的体系架构(32位或64位)。

6.  依次点击对话框。在安装目录的文件夹名字选择C:\Ac6\SystemWorkbench,或者是某个不带空格的其他合适路径。

7.  安装完成后,启动该程序,转到Help > Check for updates更新所有组件到最新版本。


要开始使用软件开发,可以使用ST的STM32CubeMX工具来生成配置和初始化代码:

1.  从http://www.st.com/content/st_com ... rs/stm32cubemx.html下载STM32CubeMX。

2.  安装该工具。

CubeMX (1).png


如何使用CubeMX使得生成的代码方便地导入到SW4STM32,并不是显而易见的。我学习这个的时候非常艰辛,在网站http://www.openstm32.org/Importing+a+STCubeMX+generated+project 找到了相关的解决方案。


以下是如何使用:

1.  创建一个工程目录,例如:D:\Projects\STM32。

2.  打开CubeMX,并打开菜单Project > Settings…

3.  输入一个项目名称,如STM32_proj。

4.  将项目的名称更改到先前创建的目录。

5.  将Toolchain / IDE更改成SW4STM32。

6.  如果有一个先前开始的工程,这些字段是不可编辑的。选择“Save Project As…”使得能够编辑字段。

CubeMXsettings.png

7.  在CubeMX中设置所有的引脚和外设,并且生成代码。

8.  打开SW4STM32。

9.  选择D:\Projects\STM32作为工作区。

10.  File > Import… > General > Existing Projects into Workspace > Next

CubeMXimport.png

11.  浏览 D:\Projects\STM32作为根目录。应该选择了项目STM32_proj。

12.  不要勾选选项Copy projects into workspace。

13.  点击完成。


不幸的是,在这些操作后该项目并没有编译成功。我在http://www.openstm32.org/tiki-view_faq.php?faqId=4#q21找到了一个相关的解决方案。


该诀窍是让SW4STM32不解析项目中不使用的文件,以下是如何做到这一点:

1.  选择Project > Properties > C/C++ General > Indexer。

2.  勾选Enable project specific settings。

3.  取消勾选Index unused headers。

EclipseIndexUnused.png

修复后,代码编译没有错误。


Blinky程序


为了快速测试在处理器中执行代码的方式,我在CubeMX代码的while循环里面添加了一个简单的LED闪烁程序。

  1. /* Infinite loop */
  2.   /* USER CODE BEGIN WHILE */
  3.   while (1)
  4.   {
  5.   /* USER CODE END WHILE */
  6.   /* USER CODE BEGIN 3 */
  7.       HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET);
  8.       HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_RESET);
  9.       HAL_Delay(200);
  10.       HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_RESET);
  11.       HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_SET);
  12.       HAL_Delay(200);
  13.   }
  14.   /* USER CODE END 3 */
复制代码

Project > Build All在项目文件夹下的Debug目录产生一个.bin文件。我将ST-LINK配置成用于调试外部电路板,并且连接到我的目标板。

DSC_0735_small-1024x507.jpg

然后,通过USB线缆将两个电路板连接到计算机,然后将该.bin文件拖拽到NODE_L053R8硬盘驱动器。编程完成,LED开始闪烁。

跳转到指定楼层
huaiqiao
发表于: 2016-8-26 12:27:55 | 显示全部楼层

SW4STM32这个是不是也有os的吧,这个软件楼主推荐不。能不能丢个os的百度网盘的链接,哈哈
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 49 | 回复: 80



手机版|

GMT+8, 2024-12-22 10:55 , Processed in 0.047741 second(s), 8 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表