-
STM32开发(一):简介及开发环境
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
-
相关阅读:
Linux基础知识[2]【延迟及定时机制】
Linux基础知识[1]【ACL权限】
docker 入门学习篇【基本命令与操作】
centos7.1下 Docker环境搭建
RHEL6.5下更新python至2.7版本
Github初学者探索
vmware下linux虚拟机传文件解决方案之 xftp
mysql 常用操作命令
常用DNS记录
SDNU 1481.纪念品分组(水题)
-
原文地址:https://www.cnblogs.com/wyp1988/p/10194455.html
Copyright © 2020-2023
润新知