一、这篇文章想向大家说明一个问题,我们开发单片机的本质是什么?

在最早的开发中,我们没有Keil、IAR等等一系列好用的单片机集成开发环境,注意这里的“集成”,是指将多个软件其中有

①编辑器:记事本、NotePad++、vim(Linux中的)这些都是编辑器,可以给我提供关键词高亮、代码补全等等操作。

②编译器:gcc工具链,我们用的是arm-none-eabi-gcc工具链,注意这里有个“链”,链子???将一系列的工具串在了一块,可以分别使用也可以单独 使用,我们在Linux下输入了gcc -o hello hello.c,就生成了一个hello可执行文件./hello就打印一句hello world!给我们,或者这样说,我们在Keil中编写好了一个输出hello world!的程序,点下“编译”再点下“下载”,单片机的串口就会输出hello world!。

但是大家有没有思考过进行了这么一步,编译器到底做了什么?

相信大家已经知道了最终给机器运行的是0和1组成的二进制文件,但是我们C语言是如何转变为二进制文件的呢?

其中一个hello.c文件经历了“预处理”、“编译”、“汇编”、“链接”、生成hex/bin等可执行文件,其中每一步都是一个不同的软件来操作的。

这些软件都被集成在了工具链之中,这里就不继续说下去了,如果大家感兴趣,可以给我留言,后面给大家详细科普。

③下载器:下载器是我们的ST-Link/JLink仿真器的驱动程序,通过这个下载器将程序烧写到我们的单片机中。

相信用过Keil的同学一定遇到过“找不到头文件这种错误吧”,在下图中红框的位置添加上该头文件的所在路径即可找到

我们在最早的单片机开发中没有怎么好用的开发环境时,都是通过一个叫Makefile的文件和make软件来帮助我们简化上面的各种操作,这是最本质的操作,我们现在使用的IoTStudio软件也是通过Makefile来进行控制编译。

二、开发环境的对比

1.Keil/IAR

相信各位单片机开发爱好者大都使用Keil/IAR这类开发软件,这类软件特别好用,因为他集成管理编译工具链、管理编译方式、提供代码补全、提供ST-Link/JLink仿真集成等,我们在使用时,只需要关心代码的逻辑问题,完全可以忽略其他的问题。

我们的开发步骤:

使用STM32CubeMX软件创建一个工程->选择芯片型号->配置时钟和各类需要用到的外设(GPIO,串口,定时器,中断控制器等)->选择生成工程(IAR/Keil/Makefile)->直接使用Keil/IAR打开创建好的工程即可开始编程。

2.IoTStudio

IoTStudio软件是使用Makefile来控制编译的,但是大家不用担心,Makefile不需要我们自己写,只要能看懂,会修改即可。编译、下载等按钮华为的工程师小哥哥们已经帮我们做好啦,都是只要点一下就可以。

下期我会直接带大家从STM32CubeMX创建一个工程开始,直到能运行IoTStudio中的Demo程序!

点击这里,了解更多精彩内容

【华为云技术分享】STM32L476移植华为LiteOS系列教程------背景知识 1相关推荐

  1. 【华为云技术分享】基于华为云IOT及无线RFID技术的智慧仓储解决方案最佳实践系列一

    摘要:仓储管理存在四大细分场景:出入库管理.盘点.分拣和货物跟踪.本系列将介绍利用华为云IOT全栈云服务,端侧采用华为收发分离式RFID解决方案,打造端到端到IOT智慧仓储解决方案的最佳实践. 仓储是 ...

  2. 【华为云技术分享】MongoDB经典故障系列五:sharding集群执行sh.stopBalancer()命令被卡住怎么办?

    [摘要] MongoDB sharding集群执行sh.stopBalancer()命令时被卡住怎么办?别慌,华为云数据库来给您支招,收下这份方案指南,让您分分钟远离被自建MongoDB数据库支配的恐 ...

  3. 【华为云技术分享】揭秘华为云DLI背后的核心计算引擎

    云湖湖导读:本文主要给大家介绍隐藏在华为云数据湖探索服务(后文简称DLI)背后的核心计算引擎--Spark.DLI团队在Spark之上做了大量的性能优化与服务化改造,但其本质还是脱离不了Spark的核 ...

  4. 【华为云技术分享】MongoDB经典故障系列四:调整oplog大小,引起从库宕机怎么办?

    一不小心调整了自建MongoDB数据库的oplog大小,从而引起从库宕机怎么办?别急,华为云数据库给您支招:一是取消延迟配置,先扩容延时从库的oplog大小,再扩容主库的oplog:二是对主库先降级再 ...

  5. 【华为云技术分享】MongoDB经典故障系列三:副本集延迟太高怎么办?

    MongoDB副本集延迟太高,数据读取时间过长怎么办?不要慌,菊长教您一个小妙招:在集合创建的时候,就建立好索引,然后按照索引去寻找您所需要的数据.如果觉得比较麻烦,华为云文档数据库服务DDS了解一下 ...

  6. 【华为云技术分享】MongoDB经典故障系列二:如何限制最大连接数?

    MongoDB连接数被用满,数据库应用出现异常怎么办?别急,华为云文档数据库服务DDS帮您配置net.maxIncomingConnections参数,直接限制MongoDB的最大连接数,让您无需花费 ...

  7. 【华为云技术分享】漫谈Huawei LiteOS五大内核模块

    Huawei LiteOS是华为面向IoT领域,构建的"统一物联网操作系统和中间件软件平台",以轻量级(内核小于10k).低功耗(1节5号电池最多可以工作5年),快速启动,互联互通 ...

  8. 【华为云技术分享】自动驾驶网络系列四:我们谈自动驾驶网络到底在谈什么?

    很多人第一次接触自动驾驶网络的概念,会理解成--华为怎么搞起汽车来了? 其实还是搞网络产品,就是网络的自动驾驶.那网络的自动驾驶是什么?这个问题,每个人都有自己的理解,接下来我将按照自己的理解来回答一 ...

  9. 【华为云技术分享】MongoDB经典故障系列六:CPU利用率太高怎么办?

    618大促,全民狂欢,但热闹是属于疯狂剁手的人们.而开发者们有的缺是"高流量.高访问.高并发"三高下带来的种种问题.为了应对大促期间的高I/O情况,企业会选择MongoDB云数据库 ...

最新文章

  1. 使用Git上传本地项目到http://git.oschina.net
  2. AES算法相关数学知识 - 素域学习
  3. 计算机视觉与深度学习 | 基于MATLAB的Vibe算法消除鬼影(代码版)
  4. 单元测试 | 如何在Mock时匹配匿名类型参数
  5. rz和sz上传下载文件
  6. 会话管理-1.1.Cookie介绍
  7. python methodtype_Python的实例定属性和方法或类绑定方法
  8. SpringBoot 多环境配置
  9. 科创板第二天:全线翻绿 仅4股飘红
  10. davfs挂载与使用缺陷
  11. jquery点击按钮显示和隐藏div
  12. 清华谭浩强编著的c语言程序设计教程,清华大学谭浩强C语言程序设计教程第3版 (9).doc...
  13. 【基础语法】C语言编写贪吃蛇游戏
  14. 巴特沃斯数字低通滤波器的设计步骤
  15. 【校招 --阶段一 操作系统基础】进程地址空间
  16. 5G无线技术基础自学系列 | 双工技术
  17. 小程序快速生成朋友圈海报分享图
  18. utrack调试 艾肯icon_艾肯(iCON)Utrack声卡K歌设置图文教程
  19. 钱多多第二阶段冲刺07
  20. MobaXterm 修改Terminal字体

热门文章

  1. amd平台linux驱动安装失败,ati闭源驱动安装失败,问题解觉不了。
  2. 视觉SLAM笔记(28) Ceres
  3. java 解析sh文件内容_java 文件读取
  4. devc++不兼容_Mac压缩文件Win不支持?BetterZip帮你解决!
  5. DOS打印目录树到文件
  6. ThreadPoolExecutor解析
  7. redis-cluster
  8. HDU 1223 还是畅通工程(最小生成树prim模板)
  9. 安装.Net Standard 2.0, Impressive
  10. phpunit+selenium环境搭建