STM32学习笔记:创建工程模板
STM32作为一类高级单片机,在应用中不容小觑。
所以本人从2018年1月1日开始对于STM32系列单片机的学习。
本人所持的型号为;STM32F429ZI-DISCOVERY,M4内核,封装类型为:LQFP144
很感谢我的班主任送我的开发板:STM32F429I-DISCOVERY (M4)
以下是ST官网对应的型号数据以及开发文档:
芯片:
英文版文档信息:http://t.cn/RH0dc2D
中文版文档信息:http://t.cn/RHW3WKh
第三方资料:http://t.cn/zQUBVWh
【网络例程】STM32F429I-Discovery:http://t.cn/RHYWvob
例程中用到的开发环境CoIDE:http://t.cn/RHYWTjd
产品信息
评估板 STM32F4 DISCOVERY
硅芯制造商:STMicroelectronics
内核架构:ARM
内核子架构:Cortex-M4
硅芯号:STM32F429I
硅芯系列号:STM32F4xx
套件包含:Dev Board STM32F429I
产品特性
STM32F429ZIT6 MCU,2MB 内部FLASH,256KB 内部RAM,LQFP144 引脚封装
板载ST-LINK/V2调试下载工具
USB供电
采用2.4" QVGA TFT LCD
外扩 64 Mbits SDRAM
USB OTG接口引出
2个用户按键,RESET,user
板载3轴数字陀螺仪 L3GD20
6个LED指示灯
– LD1 (red/green) for USB communication
– LD2 (red) for 3.3 V power-on
– Two user LEDs:
LD3 (green), LD4 (red)
– Two USB OTG LEDs:
LD5 (green) VBUS and LD6 (red) OC(over-current)
STM32F429I-DISCO is based on an STM32F429ZIT6 and includes an ST-LINK/V2 embedded debug tool interface, 2.4" TFT LCD, SDRAM 64 Mbits, Gyroscope ST MEMS, LEDs, pushbuttons and a USB OTG micro-B connector. The most importand features intoduced in new 429/439 MCU series are synchronous dynamic memory (SDRAM) controller and LCD TFT controller that supports resolution up to 800x600 pixels.
本人发现STM32真的非常强大,对应的开发文档也有好几种类型:
(不同的版本对应的是不同的环境)
1.HAL库版本 (起初被人诟病的一个版本,但现在作为ST主推的一个开发方向)
2.函数库器版本 (和1差不多,是一个经典版本)
3.emWin版本 (图形开发方面)
4.LwIP版本 (网络通信方面)
5.uCos版本 (系统内核方面)
================================================
按照以前本人学单片机的习惯,依旧用keil进行开发。
附带keil 使用STM32F429芯片开发(安装pack)方法:
1.下载STM32F4xx_DFP.2.9.0.pack,(可能不是这个版本号,没关系看个人喜好)
2.直接使用packinstaller 导入即可。(该文件位于keil同目录下)
当然,还请自行解决许可证问题。
==========
本人下载的官方标准库为:STM32F4xx_DSP_StdPeriph_Lib_V1.8.0
其实无论是
解压后如下:(对于本块知识,可以看看博友的文章:http://t.cn/RHTEHmT)
==========
以下是创建一个项目模板具体步骤,方便以后开发使用。
创建工程模板
文件管理
为了方便管理,我们在创建项目前,先规范好项目文件夹。
请注意,创建工程模板没有规定一定要按以下步骤,可以是另外的创建步骤,但只要是便于管理,那么就是一个好的工程。
在项目文件夹中,创建以下文件夹:
文件夹 | 用途 |
CMSIS | Cortex微处理器软件接口标准,适用于所有Cortex系列 |
Driver | 放置了中断等功能,也是用户放置外部程序的地方 |
Library | 存放STM32驱动库文件 |
User | 用户文件夹,一般是main.c的存放目录 |
Project | 工程相关的目录,存放编译生成的中间文件 |
将下面4个文件夹中指定的文件复制到新建的CMSIS文件夹中,共8个。
在\Libraries\CMSIS\Device\ST\STM32F4xx\Include中,
复制system_stm32f4xx.h、stm32f4xx.h
在\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates中,
复制system_stm32f4xx.c
在\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm中,
根据芯片型号复制好对应的文件,
这里是startup_stm32f429_439xx.s
在\Libraries\CMSIS\Include\中
复制core_cmSimd.h、core_cmFunc.h、core_cmInstr.h、core_cm4.h(因为F429是M4系列的)
将下面2个文件夹复制到新建的Library里面。
复制\Libraries\STM32F4xx_StdPeriph_Driver\src
复制\Libraries\STM32F4xx_StdPeriph_Driver\inc
将下面的一个文件夹中的3个文件复制到新建的Driver里。
在\Project\STM32F4xx_StdPeriph_Templates,
复制stm32f4xx_conf.h、stm32f4xx_it.c、stm32f4xx_it.h
并且在目录下新建文件Bsp.c和Bsp.h(本条可忽略)
将复制下面的两个文件到User里
在\Project\STM32F4xx_StdPeriph_Templates中,复制main.c和main.h
根据情况删除main.c文件中多余的注释。
======
创建&配置项目
创建项目,选定芯片型号,确定,关闭弹出的窗口(或者选NO)
配置组:
1.点击:Manage Project Items
2.填好Groups下项目如图所示
3.填好4个Groups对应的Files
1)CMSIS
Add Files->将对话框弹出来的文件类型选为“All Files(*.*)”->选择文件(直至确保所有文件都加进去为止)
2)Uesr
仅需要添加main.c即可
3)Driver
同2),添加stm32f4xx_it.c即可
4)Library
只需要添加src文件夹里面的所有文件
4.点击OK
(大致效果如图)
配置输出文件夹:选Project\Output即可(注意:Output文件夹中的文件是可以随时删除的)
配置预定义块:
将 USE_STDPERIPH_DRIVER STM32F429_439xx 这两个词复制进去。
请注意,这里的 STM32F429_439xx 要根据芯片的型号填写(包括大小写),在stm32f4xx.h内注释部分能够找到
(如图)
请注意:F4系列比较特殊,本人在亲自配置的时候发现要么 stm32f4xx_fmc.c报错要么stm32f4xx_fsmc.c报错。
后来发现原因是因为F427以及高级型号支持fmc功能,所以如果再导入fsmc则导致冲突。
(支持FMC的芯片移除FSMC;不支持FMC的芯片移除FMC)
添加工程目录:
将 除开Project以外的文件夹 依次添加进来即可
以上,点击编译如果没有error就证明你成功了。
=====
配置下载器
这是代码烧录到芯片中不可或缺的一个步骤
1.配置下载器(根据自己拥有的下载器选择)
2.匹配flash(根据芯片选好对应的Flash大小)
3.驱动设置
以上便是创建一个模板项目工程、以及烧录在板子中的大致步骤。
================
万事开头难,配置好了这个环境以后,我们还有很长的路要走。
STM32学习笔记:创建工程模板的更多相关文章
- STM32学习笔记——新建工程模板步骤(向原子哥学习)
1. 在创建工程之前,先在电脑的某个目录下面建立一个文件夹,我们先把它命名为Template,后面建立的工程可以放在这个文件夹下.在 Template 工程目录下面,新建 3 个文件夹USER , ...
- STM32学习笔记——OLED屏
STM32学习笔记--OLED屏 OLED屏的特点: 1. 模块有单色和双色可选,单色为纯蓝色,双色为黄蓝双色(本人选用双色): 2. 显示尺寸为0.96寸 3. 分辨率为128*64 4. ...
- STM32学习笔记——点亮LED
STM32学习笔记——点亮LED 本人学习STM32是直接通过操作stm32的寄存器,使用的开发板是野火ISO-V2版本: 先简单的介绍一下stm32的GPIO: stm32的GPIO有多种模式: 1 ...
- stm32学习笔记----双串口同时打开时的printf()问题
stm32学习笔记----双串口同时打开时的printf()问题 最近因为要使用串口2外接PN532芯片实现通信,另一方面,要使用串口1来将一些提示信息输出到上位机,于是重定义了printf(),使其 ...
- stm32学习笔记——外部中断的使用
stm32学习笔记——外部中断的使用 基本概念 stm32中,每一个GPIO都可以触发一个外部中断,但是,GPIO的中断是以组为一个单位的,同组间的外部中断同一时间只能使用一个.比如说,PA0,PB0 ...
- STM32学习笔记(四)——串口控制LED(中断方式)
目录: 一.时钟使能,包括GPIO的时钟和串口的时钟使能 二.设置引脚复用映射 三.GPIO的初始化配置,注意要设置为复用模式 四.串口参数初始化配置 五.中断分组和中断优先级配置 六.设置串口中断类 ...
- STM32学习笔记-NVIC中断知识点
STM32学习笔记-NVIC中断知识点总结 中断优先级设置步骤 1. 系统运行后先设置中断优先级分组 函数:void NVIC_PriorityGroupConfig(uint32_tNVIC_Pri ...
- STM32学习笔记(一)——点亮一个LED
引言 最近报名了2017全国大学生电子设计竞赛,我们学校是第一次参加这个比赛,由于8/9月份就要比赛了,所以现在准备是比较晚的了,指导老师说只能做控制类的题目了,让我们学习一下STM32单片机,51到 ...
- STM32学习笔记(二) 基于STM32-GPIO的流水灯实现
学会了如何新建一个工程模板,下面就要开始动手实践了.像c/c++中经典的入门代码"hello world"一样,流水灯作为最简单的硬件设备在单片机领域也是入门首推.如果你已经有了一 ...
随机推荐
- C++11常用特性介绍——列表初始化
一.列表初始化 1)C++11以前,定义初始化的几种不同形式,如下: int data = 0; //赋值初始化 int data = {0}; //花括号初始化 int data(0); / ...
- FTP文件传输服务!
一.FTP 连接及传输模式 1.控制连接:TCP 21,用于发送 FTP 命令信息2.数据连接:TCP 20,用于上传.下载数据3.数据连接的建立类型: (1)主动模式:服务器主动发起数据连接 (2 ...
- Django继承drf的user模型的demo
1.安装虚拟环境 #mkvirtualenv drfdemo -p python3 #pip install django #pip install djangorestframework #pip ...
- C/C++网络编程6——实现基于UDP的服务器端/客户端
通过前面几节的内容,我们已经可以实现基本的C/S结构的程序了,但是当多个客户端同时向服务器端请求服务时,服务器端只能按顺序一个一个的服务,这种情况下,客户端的用户是无法忍受的.所以虚实现并发的服务器端 ...
- MySQL更改默认的root账户密码
编辑mysql的配置文件:my.ini(在MySql安装目录下). 打开配置文件,在文件最后一行添加:skip-grant-tables,然后保存退出 意思为就是在启mysql时不启动grant-ta ...
- 简单优化MySQL(后续在补充)
如何优化: ---从设计表结构的角度出发: 用多个小表代替一个大表,注意不要过度设计 批量插入代替循环插入 合理控制缓存空间大小,一般来说其大小设置为几十兆比较合适 可以通过 SQL_CACHE 和 ...
- ALSA 有关文档
Alsa项目的官方网址:http://www.alsa-project.org/ Alsa LIB API Reference:http://www.alsa-project.org/alsa-doc ...
- [转]:Ubuntu 下Apache安装和配置
[转]:Ubuntu 下Apache安装和配置_服务器应用_Linux公社-Linux系统门户网站 https://www.linuxidc.com/Linux/2013-06/85827.htm ...
- ANSYS-MFC二次开发
目录 1. 开发流程 2. 开发代码 1. 开发流程 ANSYS-MFC二次开发的思路其实是特别简单的,通常MFC主要是设计界面,然后从MFC界面中读取要设计的参数,然后根据这些设置了的参数生成APD ...
- Maven 项目中使用 logback
添加依赖 <dependency> <groupId>net.logstash.logback</groupId> <artifactId>logsta ...