STM32开发(一):简介及开发环境
1. 背景
- STM32是意法(ST)公司开发的基于ARM Cortex-M系列的一系列微控制器(MCU)。
- 有两种库
- 标准外设库(StdPeriph_Driver、Standard Peripheral library):是开发STM32比较经典的库,直接反应底层(寄存器)的代码,适合初学者,或需要深入理解的人。
- HAL库(STM32Cube HAL):是由ST公司推出的一个较标准库更高层次抽象的库,多用于STM32CubeMX生成的代码,有点类似面向对象的库,里面封装了很多东西,对于想理解深入或底层的人, 不适合用这个库。
- 固件驱动等
- 软件开发工具
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开发(一):简介及开发环境的更多相关文章
- Scala语言简介和开发环境配置
Scala语言的简介和开发环境搭建 Scala是一门结合了面向对象特征和函数式编程特征的语言,它是一个创新的编程语言产品.Scala可以做脚本(就像shell脚本一样),可以做服务端编程语言,可以写数 ...
- SpringSecurity权限管理系统实战—一、项目简介和开发环境准备
目录 SpringSecurity权限管理系统实战-一.项目简介和开发环境准备 SpringSecurity权限管理系统实战-二.日志.接口文档等实现 SpringSecurity权限管理系统实战-三 ...
- Web笔记(一) Web 简介与开发环境搭建
Web应用程序的工作原理 大多数的Web应用程序结构都是采用最为流行的B/S软件开发体系结构,将Web应用程序部署在Web服务器上,只要Web服务器启动,用户就可以通过客户端浏览器发送HTTP请求到W ...
- android开发1:安卓开发环境搭建(eclipse+jdk+sdk)
计划折腾折腾安卓开发了,从0开始的确很痛苦,不过相信上手应该也不会太慢.哈哈 一.Android简介 Android 是基于Linux内核的软件平台和操作系统. Android构架主要由3部分组成,l ...
- 信用评分卡(A卡/B卡/C卡)的模型简介及开发流程|干货
https://blog.csdn.net/varyall/article/details/81173326 如今在银行.消费金融公司等各种贷款业务机构,普遍使用信用评分,对客户实行打分制,以期对客户 ...
- Jboss ESB简介及开发实例
一.Jboss ESB的简介 1. 什么是ESB. ESB的全称是Enterprise Service Bus,即企业服务总线.ESB是过去消息中间件的发展,ESB采用了“总线”这样一 ...
- python 开发工具简介
一.python 开发工具简介 1.IDLE IDLE是开发python程序的基本IDE(集成开发环境),具备基本的IDE的功能,是非商业Python开发的不错的选择.当安装好python以后,IDL ...
- 使用 .NET WinForm 开发所见即所得的 IDE 开发环境,实现不写代码直接生成应用程序
直接切入正题,这是我09年到11年左右业余时间编写的项目,最初的想法很简单,做一个能拖拖拽拽就直接生成应用程序的工具,不用写代码,把能想到的业务操作全部封装起来,通过配置的方式把这些业务操作组织起来运 ...
- 【maven】之配置开发,测试,正式环境pom.xml文件
在进行web程序开发,如果项目组没有使用自动化发布工具(jenkins + maven + svn + tomcat ),我们一般会使用maven的热部署来完成发布,在部署的过程中我们开发,测试,生产 ...
- ios-实现项目在开发、测试、正式环境快速部署
快速部署:简单的来说,就是不用更改开发.测试.正式环境下的 url ,来实现在同一台测试手机快速部署三种项目状态. Bundle ID一样只会出现一个app:不一样会出现三个app: 具体步骤: 一. ...
随机推荐
- Shiro异常处理总结
出自:https://blog.csdn.net/goodyuedandan/article/details/62420120 一.Spring MVC处理异常有3种方式: (1)使用Spring-M ...
- i++的原子性问题
一.什么是原子性 简单的可以理解为:操作是不可再分割的,比如: int i=0; 但是i++的操作是可以再分的,比如: i++ //分解后 i=i+i 上面的代码在多线程环境下取值是有问题的,比如: ...
- UNITY 画布的粗浅理解
画布:当画布是screen-space overlay时,这个好理解,画布可以控制如分辨率,层次等.但当画布是 world-space时,这个严格来说就不算是一个画布了,屏幕空间或相机空间的画布是先绘 ...
- Proxmox 安装 dsm 黑群 备忘
备忘:Proxmox 虚拟机使用 E1000网卡(用Virlo找不到引导),直通数据硬盘 . 使用的引导文件是 DS918+_6.21-23824-1.04b.img 虚拟机启动使用第三项EX ...
- VS2008调用VS2012的WCF服务的方式和遇到的问题
1 用添加服务引用的懒方式 2 用http请求方式 3 客户端自己定义一个Contract,跟服务端的一样(可以只写要使用的方法,不用全部写完). 由于规范要求,前两种都不能用,后面根据同事的描述,产 ...
- LeetCode之数组处理题java
342. Power of Four Total Accepted: 7302 Total Submissions: 21876 Difficulty: Easy Given an integer ( ...
- 清除html中的标记,只留下文字
/// <summary>/// 清除html中的标记,只留下文字./// </summary>/// <param name="HTML">& ...
- CocoaPods私有库!!!!!!!!!!!(装逼特技)
1http://www.jianshu.com/p/4b63dfbd8be7 2 修改工程下的.podspec文件,如 注意1: 验证库是否正确: pod lib lint --verbose -- ...
- Cannot subclass final class class com.sun.proxy.$Proxy16
Cannot subclass final class class com.sun.proxy.$Proxy16 2016年05月04日 19:10:58 阅读数:15028 背景 这个错误是我在使用 ...
- LVS集群中实现的三种IP负载均衡技术
LVS有三种IP负载均衡技术:VS/NAT,VS/DR,VS/TUN. VS/NAT的体系结构如图所示.在一组服务器前有一个调度器,它们是通过Switch/HUB相连接的.这些服务器 提供相同的网络服 ...