文章转自armfly开发板V4软件开发手册,分享学习~

今天有幸看到armfly的开发板软件开发手册,开头的基础知识,真的很有用,还好有看到,一切都不迟,感悟很多,摘抄部分,学习分享~

关于开发环境的搭建

(个人认为,好用的工具,顺手的开发环境,对于编程是一种好的习惯,也是一种好的享受,所以,在环境搭建方面,我还是比较在意软件的互相联合使用,工程建立的规范化等等,这样可以尽量少的在后期更换不同的环境,变软会很浪费时间,一次到位,一路顺风顺水~)

个人偏好的环境搭建:

集成开发环境(IDE):Keil公司的RealView MDK

源文件编辑器:UltraEdit/SourceInsight/IDE自带的编辑器

串口工具:SecureCRT(一个专业的超级终端工具,支持很多接口(包括串口)和协议,推荐使用。)

RealView MDK 工程配置:

(这里很有必要去熟悉下)

1.“ Device”选项。选择正确的CPU型号。 选择STM32F103ZE。

2.“ Target”选项。勾选” Use MicroLIB” 。 如果不选,printf函数将无法输出信息到串口。

3.“ Output”选项。可修改可执行文件名。勾选“ Create HEX File” ,表示生成可单独烧写的Hex文件。

取消 “ Browse Information”选项可以大大加快每个文件的编译速度,但将丧失鼠标右键定位函数和宏的功能。 这个选项不影响最终的Hex。

在编译过程中,会生成大量的obj临时文件,你可以通过“ Select Folder for Objects”按钮指定Obj
文件的存放目录。这样将是工程文件目录变得非常简洁。

4.“ Listing”选项。在编译过程中,会生成大量的lst临时文件,你可以通过“ Select Folder for Listings”按钮指定lst文件的存放目录。这样将是工程文件目录变得非常简洁。

5.“ User”选项。可以指定编译之前和编译之后执行的用户程序。

为了将编译生成的Hex文件复制到指定目录并更名保存,我们可以在编译后执行一个bat批处理文件。
CopyHex_Flash.bat 文件是一个文本文件,内容如下:
copy Flash\Obj\output.hex ..\output(mdk).hex

6.“ C/C++”选项。此处“ USE_STDPERIPH_DRIVER”表示使用ST的固件库;如果有其他的预编译宏,可以用逗号分割。
Include Path 指定头文件的路搜索路径
添加 --diag_suppress=870 控制,可以避免中文字符串告警

7.“ Asm”选项。无需更改。

8.“ Linker”选项。无需更改。

9.“ Linker”选项。无需更改。

点击” Settings”按钮设置硬件仿真器,请选择对应的仿真器型号。我们的例程缺省都配置的是J-Link
仿真器。
勾选“ Run to main()”可以在启动Debug时,执行到main()函数暂停。

10.“ Utilities”选项。

击” Settings” 按钮设置硬件仿真器,请选择对应的仿真器型号。我们的例程缺省都配置的是J-Link
仿真器。点击” Add” 按钮,添加Flash编程算法。选择STM32F10x High-density Flash。

/*****以上的设置是编程的前提,一定要注意,否则到时候出现不知名的错误就摸不着头脑了。*****/

关于STM32学习的一些观点

(仁者见仁,智者见智)

坚定信念选择ST固件库

不要再思考固件库开发还是寄存器开发这种问题了。 99%的有实际产品开发经验的工程师都会告诉
你,使用ST的固件库开发STM32应用是最佳的选择。这套固件库写的非常规范,很严谨,没有一定的C语
言功底和程序架构设计功底是写不出来这种代码的。你如果觉得固件库过于复杂,太乱了,只能说明一个
问题:你没有参与过大型软件开发、你的C语言还没学习到位、你还没有程序架构设计的概念。
我们要做的是学会如何看懂固件库、学习如何使用固件库。 深入的话可以借鉴固件库的写法构建我们
自己的外设驱动。
可能有些人会反驳,不学习寄存器,感觉学习地不深入。我的观点是:寄存器是最没有学习价值的,
硬件功能复杂了必须通过一些寄存器的某些bit来配置和选择硬件功能。我们需要大量的时间来记忆、梳理
寄存器每个bit之间的关系。我认为是不值得的。你不如将这个时间花在学习ST固件库是如何梳理、归纳
这些硬件功能,也就是学习C程序设计方法。
我们也不是完全让你不去了解寄存器功能,在极个别时候,我们也会使用寄存器直接操作。不过我们
也就是将ST固件库的函数展开以提高代码执行效率。

选择性学习

(这个可能适合很多上进心很强的童鞋,总想把STM32搞精搞透,甚至不只是单片机,FPGA等等等等的技术,人生苦短,抓住精华,尽力而为!)

STM32的功能实在太多,和STM32相关的软件组件也多如牛毛。而人的精力是有限,你就算学习一辈子,也不可能学会所有的东西。人的一生,时间是最为宝贵的,我们一定要将时间用在刀刃上。别人做好的开源的第三方的代码,如果你测试应用过,没有问题,那他就属于你的了,你只要学会怎么移植和使用它就足够了。如果别人已经移植好了,那就更方便了,直接拿来使用即可。没有必要再花精力深入代码去研究别人的程序结构了。比如FatFS、 uIP、 ST固件库、 uCOS、 emWin。除非你是做基础研究或者查找BUG。

我们一定要将时间腾出来去学习和掌握更多的软件模块。这样,当项目来临时,你就可以从容应对。

构建自己的代码库

(根据自己的代码风格,以及常用的模块,建立自己的小代码库,这样以后用到的时候,直接拿来改一改,自己的东西自己心里清楚,用着明了,心里也踏实,也利于项目的快速启动和建立)

自己验证过的代码,要学会收集整理。变为自己代码库的一部分。日积月累。等到做产品和项目时,80%以上的代码来自于代码库。做产品很多时候就是搭积木。你的代码库越丰富,做起产品来也就越快越好。一些好的工程框架也要学会收集整理。我们在很多时候做项目,都是直接复制某个相近的工程。不可能每次都去重新新建一个工程。好比盖房子,你可以直接拿砖砌,而不用在花时间去造转。

/*****以上观点仅供参考,开发板的团队根据自己的开发经验和体会得出的建议,也是我比较同意的观点*****/

授之于鱼,不如授之于渔

查询下载资料请直接访问ST的官方网站:

http://www.st.com
另外一个非常好的中文网站是:

http://www.stmcu.org

 参考手册(Reference Manual) 【内容很全面,软件工程师必须阅读】

 数据手册(Data Sheet) 【硬件工程师必须阅读】

 勘误手册(Errata Sheet)

描述了芯片某些功能的局限性,并给出解决办法。这个手册也比较重要,有时候我们
我们觉得有些地方调试老是出问题的时候,就需要查找一下了,看看是否给出了解决方案。

 闪存编程手册(Flash Programming Manual)

对芯片片上闪存的操作指南、读写保护设置,选项字节信息

 内核编程手册(Cortex-M Programming Manual)

对内核的系统控制块寄存器的描述。这个手册有的时候也要用到,比如我们需要了解 NVIC 和
SysTick 相关的寄存器,就需要使用这个手册,这个手册可以在 ARM 官方网站下载,也可以到
ST 官网下载,区别就是 ARM 方法的是通用的,ST 发的是针对自己的芯片做的,有时候在参考
手册上面找不到相关寄存器的信息时,就需要这个手册。

STM32环境搭建/学习观点/自学方法 入门必看的更多相关文章

  1. NET Core 环境搭建和命令行CLI入门

    NET Core 环境搭建和命令行CLI入门 2016年6月27日.NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布,社区里涌现了很多文章,我也计划写个系列文 ...

  2. NET Core 环境搭建和命令行CLI入门[转]

      NET Core 环境搭建和命令行CLI入门 时间:2016-07-06 01:48:19      阅读:258      评论:0      收藏:0      [点我收藏+]   标签: N ...

  3. React 环境搭建及页面调试方法

    React 环境搭建及页面调试方法 |作者:RexFang |出处:http://www.cnblogs.com/rexfang/ |关于作者:Java 程序员一枚 |版权:本文版权归作者和博客园共有 ...

  4. Java编程学习知识点分享 入门必看

    Java编程学习知识点分享 入门必看 阿尔法颜色组成(alpha color component):颜色组成用来描述颜色的透明度或不透明度.阿尔法组成越高,颜色越不透明. API:应用编程接口.针对软 ...

  5. Liunx新手入门必看

    安装CentOS(Linux的一个常用发行版本,互联网公司经常使用这个发行版)用到的软件: VMware_workstation_full_12.5.2.exe 虚拟机软件,虚拟机由这个软件安装.管理 ...

  6. .NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门

    2016年6月27日.NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布,社区里涌现了很多文章,我也计划写个系列文章,原因是.NET Core的入门门槛相当高, ...

  7. Android开发环境搭建及常见问题解决方法

    转自: http://www.cnblogs.com/rwxwsblog/p/4769785.html 在移动互联网的时代,Android的份额早已超过了苹果.Android的出现无疑加速了移动互联网 ...

  8. hbase 单机+伪分布环境搭建学习-1

    1.单机模式: (1)编辑hbase-env.sh user@EBJ1023.local:/usr/local/flume_kafka_stom/hbase_1.1.2> vim conf/hb ...

  9. stm32环境搭建

    软件下载:https://pan.baidu.com/s/1rat9Vnm 第一部分:软件安装 1.点击安装mdk514.exe,一路next就可以了 2.使用管理员身份打开软件,点击File,进到l ...

随机推荐

  1. iOS中多线程知识总结(二)

    1.GCD GCD全称是Grand Central Dispatch,译为"强大的中枢管理器" 1)什么是任务?什么是队列? 任务和队列是GCD的核心. 任务: 执行什么操作 队列 ...

  2. Dog_Hybird的诞生

    起因 开玩笑说“iOS搞不动了”,另外一方面iOS组的哥哥们给力,少一个我也妥妥的.又听闻web前端组来了一个不得了的人物,“老司机,带带我”这种机会不能错过,1个多月前就申请转web前端了.开始是苦 ...

  3. php namespace用法

    其实纠结了很久要不要使用这个东西,但是看看了最新的框架laravel,cakephp等等的新版本都使用上了,所以还是随大流顺便学习下. namespace和c++里面的概念差不多,只是用法有点差别. ...

  4. beanstalkd----安装启动

    1. 安装This is beanstalkd, a fast, general-purpose work queue.See http://kr.github.io/beanstalkd/ for ...

  5. 初识EPC

    一.EPC定义 EPC=Event-driven Process Chain(事件驱动过程链) EPC建模方法最初由Keller, N¨uttgens和Scheer博士在1992年发表的Ereigni ...

  6. benchmark 库

    性能测试的库 https://github.com/bestiejs/benchmark.js

  7. Installing Office Online Server for SharePoint 2016

    Office Online Server is the next version of the Office Web Apps, which allows your users to view and ...

  8. Java web现在流行用什么框架?

    Java是开源的,框架很多,这些框架都能解决特定的问题,提高开发效率.简化我们的代码复杂度,现在除了很多大家通用的一些主流框架外,很多公司针对自己的业务会自定义一些公司内部的框架,当然作为学习者我们首 ...

  9. 释放linux的buff/cache

    有个linux的服务器,2G内存的,今天登上去一看,内存竟然被占得满满的. ssh上去执行了free. free -m total used free shared buff/cache availa ...

  10. bootstrap阶段测验【问题】