STM32F407Discovery开发板使用环境搭建
差不多4年前买了STM32F407Discovery这块开发板,也用它作为我的毕业设计的一部分,今晚整理一下东西,觉得这么不错的东西应该再次利用起来,做个智能家居系统的一部分什么的也不错,于是,记录一下使用流程,以后不用再看官方文档了,直接看博客流程就行了。
这块板子是基于STM32F407VGT6芯片的,板载ST-LINK/V2调试器,调试下载程序很方便,而且板载数字加速传感器、数字转换麦克风处理芯片、D类功放驱动芯片、支持OTG等,功能算是很不错了,下面看看它的“艳照”:

引脚和外设插口都有点锈迹了,不过,还是能跑的~
下面是这块芯片的基本介绍:
1. 经PLL倍频后最高频率有168MHz的32位CPU,带浮点运算单元FPU,LQFP100封装,192KB的RAM空间,1MB的Flash存储空间,单周期DSP硬件指令,1.7V~3.6V的CPU供电范围
2. 上图左边那块就是ST-LINK/V2调试器了,使用SWD调试模式
3. 3轴动作传感器芯片:LIS302DL
4. 音频处理传感器:MP45DT02
5. 集成了D类功放驱动的DAC音频芯片:CS43L22
6. 17个TIM定时器,3路ADC,15组GPIO口,带摄像头接口等外设
下面来开始搭建开发环境,开始第一个程序编译通过先。
1. 使用IAR for ARM6.40.4,安装过程很容易,这里就不做介绍了:

2. 新建代码工程
2.1 新建工作空间

2.2 在该工作空间新建一个工程

选择创建一个空的工程:

点击“OK”后选择工程保存路径即可。
2.3 配置工程,在工程右键,选择“Option”:

2.3.1 在这里可以设置芯片内核和芯片类型,输出路径、调试器类型等,芯片这里选择Cortex-M4:

2.3.2 在C/C++ compiler配置头文件包含路径:

为了方便包含ST的外设库,后面还需要增加一个宏“USE_STDPERIPH_DRIVER”和文件"stm32f4xx_conf.h"。
2.3.3 配置链接文件,该文件主要描述了ARM的RAM和FLASH的段地址分配:

2.3.4 选择调试器:

2.3.5 配置使用Flash Loader:

2.3.6 配置ST-LINK使用的接口为SWD:

2.3.7 工程配置完成。
3. 配置完成后,到ST官网下载库函数开发包,并把启动文件(注意是复制IAR环境的),相关头文件和中断配置文件复制到目录,配置好目录结构后如下图,目录结构是对应的:

4. 编写main.c,测试编译运行环境:
4.1 复制ST公司提供的库函数开发包,目录如下(记得要在Options选择配置头文件包含路径):

4.2 新建外设模块目录结构(记得要在Options选择配置头文件包含路径),如下:

4.3 编写LED驱动:
led.h文件内容如下:
#ifndef __LED_H__
#define __LED_H__ #define LED_BLUE GPIO_PIN_15
#define LED_ORANGE GPIO_PIN_13
#define LED_RED GPIO_PIN_14
#define LED_YELLOW GPIO_PIN_12 void LED_Config(void); #endif
led.c文件内容如下:
/**
* File: led.c
* @Description: LED Driver
* @Author: LinJK
* @Date: 2016/11/20
**/
#include <stm32f4xx.h>
#include "led.h" void LED_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); GPIO_InitStructure.GPIO_Pin = LED_BLUE | LED_ORANGE | LED_RED | LED_YELLOW;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOD, &GPIO_InitStructure);
}
5. 编写Main函数:
这个业余项目是打算用来做我的智能家居系统的网络数据转发处理部分的,因此,虽然目前只是搭建基础测试环境,这里也新增一些目录结构,如硬件层hardware,后面会不断扩充功能,有时间也会把扩展的功能写一下:

#include "includes.h" void main()
{
//hard ware init
bsp_init(); while (1)
{
GPIO_SetBits(GPIOD, LED_RED);
}
}
bsp_init()主要是初始化芯片的外设,如调用led.c的Led_config()函数等,这里就点亮一个led灯先。
6. 下载验证:
下载工具使用的是购买开发板时提供的STLink工具,如下:

配置工程,生成下载文件:

stlink打开下载文件:

连接开发板到电脑,然后在stlink点击连接,下载运行文件后,按一下开发板的复位键即可以看到,灯已经点亮。
到这里,开发环境已经配置完成了,后面基于它继续开发功能~~~
STM32F407Discovery开发板使用环境搭建的更多相关文章
- Tiny4412 开发板 编译环境搭建【转】
本文转载自:http://blog.csdn.net/beijiwei/article/details/51055369 版权声明:本文为博主原创文章,未经博主允许不得转载. /*********** ...
- ubuntu12.04下CKermit与开发板交互环境搭建
CKermit蛮好的一个调试工具!就像在windows下的telnet,但是还是折腾了一下,现在看来,非常容易,其实我主要是在开发板为正常工作的情况下,以为是CKermit的问题,其实是我开发板开机设 ...
- 使用Kotlin开发Android应用 - 环境搭建 (1)
一. 在Android Studio上安装Kotlin插件 按快捷键Command+, -> 在Preferences界面找到Plugins -> 点击Browse repositorie ...
- 第五章 搭建S3C6410开发板测试环境
开发板是开发和学习嵌入式技术的主要设备.在这章中介绍了S3C6410开发板,它是三星公司推出的一款低功耗.高性价比的RISC处理器.安装串口调试工具:minicom.它的安装步骤:第1步:检测当前系统 ...
- 基于GBT28181:SIP协议组件开发-----------第一篇环境搭建
原创文章,引用请保证原文完整性,尊重作者劳动,原文地址http://www.cnblogs.com/qq1269122125/p/3930018.html,qq:1269122125. SIP协议在安 ...
- 1 IDEA 安装 及 IDEA开发 spring的环境搭建
摘要: 主要讲解使用 IDEA 开发 Spring MVC 的环境搭建,Maven的简单教学. 参考1:https://my.oschina.net/gaussik/blog/385697 参考2:h ...
- Android NDK开发之从环境搭建到Demo级十步流
写在正文之前: 几个月没有更新博客,感觉有点生疏了,所以说不能断,一断人就懒. 其实这几个月也并不是什么事也没有做,俺可是时刻想着今年的任务呢,10本书,30篇博文...,这几个月间断性的也是在学习中 ...
- UI5-学习篇-1-Eclipse开发工具及环境搭建
最近研究SAP-UI5好几个月了,将相关学习经历及问题点做个记录. 1.先了解学习资料相关站点 SAP官网:https://www.sap.com/china/index.html SAP开发工具:h ...
- IoT设备程序开发及编译环境搭建初体验
引言 Mirai事件一经曝出,立即引领了一轮研究IoT设备的热潮.目前,对Mirai的报告大多只是在对其功能实现上的介绍,却很少提及如何实现IoT设备程序开发的测试环境.本文在对Mirai的源码研究的 ...
随机推荐
- 【UOJ #14】【UER #1】DZY Loves Graph
http://uoj.ac/problem/14 题解很好的~ 不带路径压缩的并查集能保留树的原本形态. 按秩合并并查集可以不用路径压缩,但是因为此题要删除,如果把深度当为秩的话不好更新秩的值,所以把 ...
- C/C++中的声明与定义
含义 声明(Declaration), 用于告诉编译器被声明的函数/变量的存在, 及它们的类型/调用格式信息, 以检查是否被正确调用. 声明不分配内存空间. 定义(Definition), 用于告诉编 ...
- php基础知识整理
记录一些php容易忽略的基础知识点 include和require的区别 require和include都表示引入指定文件,主要区别有几点 1.加载失败处理方式不同 include在引入不存文件时产 ...
- Linux下常用SVN命令
1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain --u ...
- outlook 2016 for windows 每次刷新发送接收邮件会弹出登陆界面
Q: outlook2016 for windows 每次刷新发送接收邮件会弹出登陆界面,office365 ProPlus 都是正常激活了,Word 和Excel都不存在此类问题 A: 排除用户的o ...
- Couchbase的安装步骤
本指南将在几分钟内让你上手,探索关联APP,在命令行shell 中删除一些实例查询,并尝试查询工作台. 下载Couchbase Server 下载地址:http://www.couchbase.com ...
- BZOJ 4569 萌萌哒
题目传送门 4569: [Scoi2016]萌萌哒 Time Limit: 10 Sec Memory Limit: 256 MB Submit: 483 Solved: 221 [Submit][S ...
- <<< eclipse软件部署修改项目的访问地址
在eclipse开发javaweb项目的时候,访问项目时需要在浏览器地址输入:localhost:8080/项目名 但是大多数部署到服务器的时候访问的是根目录,就是不加localhost:8080后 ...
- <<< sqlserver、Mysql、Oracle数据库优缺点
sqlserver 优点: 易用性.适合分布式组织的可伸缩性.用于决策支持的数据仓库功能.与许多其他服务器软件紧密关联的集成性.良好的性价比等: 为数据管理与分析带来了灵活性,允许单位在快速变化的 ...
- 搬家到cnblogs
从openshift搬到LOFTER再到点点然后来cnblogs,晃悠一大圈,主要是没时间学习很多东西,再加上cnblogs的搜索收录情况比较好一点(百 度搜索).另外听闻百度空间bye-bye了,以 ...