1. 背景

  • STM32是意法(ST)公司开发的基于ARM Cortex-M系列的一系列微控制器(MCU)。
  • 有两种库
    • 标准外设库(StdPeriph_Driver、Standard Peripheral library):是开发STM32比较经典的库,直接反应底层(寄存器)的代码,适合初学者,或需要深入理解的人。
    • HAL库(STM32Cube HAL):是由ST公司推出的一个较标准库更高层次抽象的库,多用于STM32CubeMX生成的代码,有点类似面向对象的库,里面封装了很多东西,对于想理解深入或底层的人, 不适合用这个库。
  • 固件驱动等
    • 官网固件/驱动库
    • MCU固件包F4系列固件包,STM32CubeMX或者Keil会用到。
    • 包括Low level drivers, hardware abstraction layers, and middleware like RTOS, USB stacks, graphic stacks
    • 下下来解压后,包括_htmresc、Utilities、Project、Libraries目录和一些文件,KEIL的工程目录通常和这些类似。
  • 软件开发工具

2. 开发环境及工具

  • IDE

    • IAR
    • KEIL
      • 官网
      • 也就是uVision,是Keil公司出品的,属于所谓的MDK - Microcontroller Development Kit。
      • 不仅支持STM32等ARM Cortext-M系列MCU单片机的开发,还支持51等其他单片机,但要选择不同的版本下载,STM32对应MDK-ARM。
      • 分为MDK-Lite、MDK-Essential、MDK-Plus、MDK-Professional等级别,不使用秘钥生成器破解的话,直接下载的是第一个Lite版本,代码大小限制只有32K
      • 使用
        • STM32开发环境搭建
        • Keil的使用方法(汇总)
        • 官网下载安装包(ARM版)时需要注册
        • 安装完成后,如果要开发的芯片MDK不支持,那么需要通过弹出的Pack Installer去安装相应的包(也可以去官网下载),也可以先忽略关掉(后面可以再到Project->Options for Target xxx->Debug下面配置,或者File->Device Database),如果没有安装,会报错:device not included in legacy device database。
        • 选择芯片后,需要在创建固定的工程结构(在Manage Project Items弹窗中手动创建)
          • 自己的代码目录(名称可变)可以叫做App、User等
          • MDK-ARM或者Startup Code(名称可变)下面是startup_stm32xxxx_xd.s等启动文件(初始化堆栈、程序计数器、设置向量表异常事件的入口地址、调用main函数),结尾的ld、md、hd分别对应小、中、大容量产品。
          • CMSIS
          • xxx_StdPeriph_Driver
          • 还可以有FreeRTOS
          • 还可以有HARDWARE
        • 配置输出时创建Hex(在Project->Options for Target xxx->Output下面)
        • 配置下载/调试(在Project->Options for Target xxx->Debug下面)
        • 配置C/C++(在Project->Options for Target xxx->C/C++下面)
        • 配置包含路径(链接用,在Project->Options for Target xxx->C/C++下面)
        • 配置复位并运行设置(链接用,在Project->Options for Target xxx->Utilities下面)
    • SW4STM32 + STM32CubeMX
      • 参考-使用STM32CubeMX和SW4STM32在Nucleo-F401RE开发板轻松实现Blinky闪烁
      • STM32CubeMX
        • STM32CubeMX官方界面
        • 简介
          • 是意法(ST)公司官方提供的初始代码生成器。
          • 图形化的
          • 便于配置STM32 microcontrollers
          • 能一步步生成C代码
          • 生成的代码有固定结构,限制较大,开发时也可以不用这个工具
          • STM32Cube包含STM32CubeMX,除此之外还有许多example
        • 使用(创建Project和生成代码)
          • 配置网络

            • 一般如果没有设置网络连接,那么打开时就会提醒进行配置(也可以后面生成代码的时候再配置),用于下载固件等库。如果用了公司代理,那么选择手动配置代理,使用系统代理没有效果可能是因为公司用的是pac脚本设置的代理呢,系统并没有指定代理的ip。然后填入代理信息,ip(浏览器有时会弹出让填账号密码,上面会有代理的ip)不要包含http://,端口也要填。
            • 连接检查和配置成功后,会自动下载一些配置文件。然后在后面生成代码的时候,也会去下载MCU相应的firmware。
            • 虽然也可以手动导入固件zip包,但官网上好像只有最新版,STM32CubeMX不一定能用最新版的,下载后,可以在Project Manager页面的最后取消使用默认固件位置,然后选择想要的版本的固件解压文件夹(下载时自动加压zip包)。
          • 先要选择芯片系列
            • 左侧可以根据MCU或板子进行搜索,找到后可以修改一些配置,然后选中;也可以一级一级地手动选型号,从上到下是Core、Series、Line,当然也可以直接选下面具体的。
            • 然后在左侧再做一些其他的配置,就可以在右侧的MCU列表上双击某行创建Project了,或者选中某行后点击右上角的创建按钮。
            • 在Project Manager标签页,填上项目名称、项目路径、选择目标IDE(在"Toolchain / IDE"下面,生成代码时会生成对应的结构,比如选SW4STM32)
          • 配置界面
            • 在Pinout & COnfiguration、Clock Configuration等标签页做配置。
            • 点击菜单上的“GENERATE CODE”按钮(如果之前没有设置过网络连接,这里可能会让再设置一下,也可以点击继续,但是会少一些包,只生成源码)。结束后会有一个“Open Project”的按钮,可以直接用SW4STM32导入和打开项目,导入后其实也就是多了个.settings/language.settings.xml文件,是CDT插件的配置?
          • 生成的代码结构
            • Inc文件夹:头文件文件夹,初始就只有main.h、stm32f4xx_hal_conf.h、stm32f4xx_it.h
            • Src文件夹:源文件文件夹,初始就只有main.c、stm32f4xx_hal_conf.c、stm32f4xx_it.c
            • .mxproject文件:头文件文件夹路径及文件列表、源文件文件夹路径及文件列表、使用的lib库文件LibFiles路径(多个)
            • xxx.ioc文件:可视化做的那些配置,比如MCU、pin、clock的配置
        • STM32CubeMX用于配置串口中断等硬件的东西,一般不用改。
        • 打开软件或生成代码时,需要配置连接/代理,用于自动下载配置文件和相应MCU的固件。proxy的地址直接写ip,不要带http://,端口也要填,SNC用的是140.231.192.162:8080,还要填上认证信息。
        • 配置硬件之前需要先过滤和选择MCU型号,左侧用于过滤,右侧是符合条件的MCU列表用于选择。
        • 最后自动生成项目代码时可以选择不同IDE,一般选择SW4STM32的代码结构用其进行后续开发,因为免费。
        • 如果成功下载了相应MCU的固件(firmware),在生成的项目代码中会有相关文件夹和文件,否则只会生成源码部分。
      • SW4STM32
        • SW4STM32官方界面
        • 简介
          • 是意法(ST)公司官方提供的IDE
          • 专为STM32单片机开发服务
          • 支持标准外设库和HAL库驱动
          • 支持使用ST-LINK
          • 基于Eclipse的开源免费
          • 没有代码规模限制
          • 跨平台、使用GCC C/C++ compiler
          • 使用GDB-based debugger
        • 使用
          • SW4Stm32开发环境搭建:固件安装、stlink v2使用和手动复位问题修复
          • sw4stm32开发stm32:stm32cubemx结合SW4Stm32
          • import现有工程后报错:C Error 127 occurred while running autoreconf
            • 有的说需要下载修复工具
            • 因为FreeRTOS基于linux,编译时用到automake生成makefile,所以需要安装automake并在环境变量和SW4STM32中配好?那么就要mingw这种linux环境下安装?然后又依次间接需要autoconf、m4?参考
            • 每个的安装都要在其目录下运行./configure –prefix=/usr/loca、make和make install
            • automake下载
            • autoconf下载
            • m4下载
          • 如果正确安装了CubeMX和SW4STM32,工具栏会有一个小锤子按钮,用来build project。
          • 一定要把自己的代码写在/ * USER CODE BEGIN * /和/ * USER CODE END * /之间,否则CubeMX重新生成代码时会丢失代码。
  • 调试/下载程序/仿真
    • JTAG(只是一种接口/协议?)
    • st link v2

STM32开发(一):简介及开发环境的更多相关文章

  1. Scala语言简介和开发环境配置

    Scala语言的简介和开发环境搭建 Scala是一门结合了面向对象特征和函数式编程特征的语言,它是一个创新的编程语言产品.Scala可以做脚本(就像shell脚本一样),可以做服务端编程语言,可以写数 ...

  2. SpringSecurity权限管理系统实战—一、项目简介和开发环境准备

    目录 SpringSecurity权限管理系统实战-一.项目简介和开发环境准备 SpringSecurity权限管理系统实战-二.日志.接口文档等实现 SpringSecurity权限管理系统实战-三 ...

  3. Web笔记(一) Web 简介与开发环境搭建

    Web应用程序的工作原理 大多数的Web应用程序结构都是采用最为流行的B/S软件开发体系结构,将Web应用程序部署在Web服务器上,只要Web服务器启动,用户就可以通过客户端浏览器发送HTTP请求到W ...

  4. android开发1:安卓开发环境搭建(eclipse+jdk+sdk)

    计划折腾折腾安卓开发了,从0开始的确很痛苦,不过相信上手应该也不会太慢.哈哈 一.Android简介 Android 是基于Linux内核的软件平台和操作系统. Android构架主要由3部分组成,l ...

  5. 信用评分卡(A卡/B卡/C卡)的模型简介及开发流程|干货

    https://blog.csdn.net/varyall/article/details/81173326 如今在银行.消费金融公司等各种贷款业务机构,普遍使用信用评分,对客户实行打分制,以期对客户 ...

  6. Jboss ESB简介及开发实例

    一.Jboss ESB的简介 1. 什么是ESB.         ESB的全称是Enterprise Service Bus,即企业服务总线.ESB是过去消息中间件的发展,ESB采用了“总线”这样一 ...

  7. python 开发工具简介

    一.python 开发工具简介 1.IDLE IDLE是开发python程序的基本IDE(集成开发环境),具备基本的IDE的功能,是非商业Python开发的不错的选择.当安装好python以后,IDL ...

  8. 使用 .NET WinForm 开发所见即所得的 IDE 开发环境,实现不写代码直接生成应用程序

    直接切入正题,这是我09年到11年左右业余时间编写的项目,最初的想法很简单,做一个能拖拖拽拽就直接生成应用程序的工具,不用写代码,把能想到的业务操作全部封装起来,通过配置的方式把这些业务操作组织起来运 ...

  9. 【maven】之配置开发,测试,正式环境pom.xml文件

    在进行web程序开发,如果项目组没有使用自动化发布工具(jenkins + maven + svn + tomcat ),我们一般会使用maven的热部署来完成发布,在部署的过程中我们开发,测试,生产 ...

  10. ios-实现项目在开发、测试、正式环境快速部署

    快速部署:简单的来说,就是不用更改开发.测试.正式环境下的 url ,来实现在同一台测试手机快速部署三种项目状态. Bundle ID一样只会出现一个app:不一样会出现三个app: 具体步骤: 一. ...

随机推荐

  1. 打包jar文件并自动运行

    1,首先在eclipse 或MyEclipse 中测试通过,没有问题,(每次修改要update Maven) 2,修改pom.xml ---把build中改为<excludes> < ...

  2. Ubuntu下配置eclipse环境

    一.安装JDK,配置Java环境变量 1.下载JDK,Java SE 8的官方网址是http://www.oracle.com/technetwork/java/javase/downloads/jd ...

  3. 用Pylint规范化Python代码,附PyCharm配置

    Pylint一个可以检查Python代码错误,执行代码规范的工具.它还可以对代码风格提出建议. 官网:https://pylint.readthedocs.io pip install pylint ...

  4. Perl 变量:标量变量

    Perl 标量标量是一个简单的数据单元.标量可以是一个整数,浮点数,字符,字符串,段落或者一个完整的网页. 1.数字标量标量通常是一个数字或字符串. 2.字符串标量以下实例演示了不同类型的字符串标量的 ...

  5. CMDB-客户端

    配置文件的设置 大体思路: 1,通过开始文件将用户配置信息的文件放置到环境变量中. 2,在lib文件中的config文件中,从环境变量中获取到用户的配置,通过importlib模块导入用户配置文件,通 ...

  6. linux shell脚本编程笔记(二): 分支结构

    1.if if command then commands fi if command then commands else commands fi if command1 then command ...

  7. linux: sort排序数据 grep搜索数据

    sort 1.sort filename 输出排序后的结果,默认按字符大小排序 2.-n 按数字排序(如果内容是数字的话) 3.-M 按月份排序(如果是三字符简写月份的话) 下面这个例子非常实用: g ...

  8. java动态规划问题

    这里是简单的动态规划问题.其实,如果我们学过数据结构,应该就接触过动态规划问题,当时一直没有反应过来.我们求最小生成树用的是贪婪算法.而求最短路径就是动态规划.从一个点出发,到另外每个点的最短距离.在 ...

  9. 刷题向》关于一道比较优秀的递推型DP(openjudge9275)(EASY+)

    先甩出传送门:http://noi.openjudge.cn/ch0206/9275/ 这道题比较经典, 最好不要看题解!!!!! 当然,如果你执意要看我也没有办法 首先,显然的我们可以用 f [ i ...

  10. yaml文件转properties和properties转yaml

    首先要引入依赖 <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artif ...