差不多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开发板使用环境搭建的更多相关文章

  1. Tiny4412 开发板 编译环境搭建【转】

    本文转载自:http://blog.csdn.net/beijiwei/article/details/51055369 版权声明:本文为博主原创文章,未经博主允许不得转载. /*********** ...

  2. ubuntu12.04下CKermit与开发板交互环境搭建

    CKermit蛮好的一个调试工具!就像在windows下的telnet,但是还是折腾了一下,现在看来,非常容易,其实我主要是在开发板为正常工作的情况下,以为是CKermit的问题,其实是我开发板开机设 ...

  3. 使用Kotlin开发Android应用 - 环境搭建 (1)

    一. 在Android Studio上安装Kotlin插件 按快捷键Command+, -> 在Preferences界面找到Plugins -> 点击Browse repositorie ...

  4. 第五章 搭建S3C6410开发板测试环境

    开发板是开发和学习嵌入式技术的主要设备.在这章中介绍了S3C6410开发板,它是三星公司推出的一款低功耗.高性价比的RISC处理器.安装串口调试工具:minicom.它的安装步骤:第1步:检测当前系统 ...

  5. 基于GBT28181:SIP协议组件开发-----------第一篇环境搭建

    原创文章,引用请保证原文完整性,尊重作者劳动,原文地址http://www.cnblogs.com/qq1269122125/p/3930018.html,qq:1269122125. SIP协议在安 ...

  6. 1 IDEA 安装 及 IDEA开发 spring的环境搭建

    摘要: 主要讲解使用 IDEA 开发 Spring MVC 的环境搭建,Maven的简单教学. 参考1:https://my.oschina.net/gaussik/blog/385697 参考2:h ...

  7. Android NDK开发之从环境搭建到Demo级十步流

    写在正文之前: 几个月没有更新博客,感觉有点生疏了,所以说不能断,一断人就懒. 其实这几个月也并不是什么事也没有做,俺可是时刻想着今年的任务呢,10本书,30篇博文...,这几个月间断性的也是在学习中 ...

  8. UI5-学习篇-1-Eclipse开发工具及环境搭建

    最近研究SAP-UI5好几个月了,将相关学习经历及问题点做个记录. 1.先了解学习资料相关站点 SAP官网:https://www.sap.com/china/index.html SAP开发工具:h ...

  9. IoT设备程序开发及编译环境搭建初体验

    引言 Mirai事件一经曝出,立即引领了一轮研究IoT设备的热潮.目前,对Mirai的报告大多只是在对其功能实现上的介绍,却很少提及如何实现IoT设备程序开发的测试环境.本文在对Mirai的源码研究的 ...

随机推荐

  1. springMVC Aspect AOP 接口耗时统计

    在接口开发中,我们通常需要统计接口耗时,为后续接口性能做统计.在springMVC中可以用它的aop来记录日志. 1.在spring配置文件中开启AOP <!--*************** ...

  2. mysql5.7.10 的源码安装

    mysql 5.7.10的源码安装:http://fyduan.blog.51cto.com/4234935/1729873cmake . -DCMAKE_INSTALL_PREFIX=/usr/lo ...

  3. python命令行下安装redis客户端

    1. 安装文件: https://pypi.python.org/pypi/setuptools 直接下载然后拷贝到python目录下同下面步骤 下载 ez_setup.py>>> ...

  4. 【转载】JS中bind方法与函数柯里化

    原生bind方法 不同于jQuery中的bind方法只是简单的绑定事件函数,原生js中bind()方法略复杂,该方法上在ES5中被引入,大概就是IE9+等现代浏览器都支持了(有关ES5各项特性的支持情 ...

  5. 由Memcached升级到 Couchbase的 Java 客户端的过程记录(三)

    采用之前的源码运行后,我们发现 只有一个配置信息 即servers=127.0.0.1:11211,即 Couchbase Server的服务所在ip 和端口,此时数据直接存在 default 中 根 ...

  6. JBPM4.4业务流程管理框架详细解读

    1. 什么是JBPM4.4业务流程管理框架? JBPM,全称是JavaBusiness Process Management(业务流程管理),它是覆盖了业务流程管理.工作流.服务协作等领域的一个开源的 ...

  7. 【CityHunter】基于LBS的AR体感游戏设计理念

    本人目前还不是游戏行业的圈内人士,并不懂得,游戏行业的生态圈,也不懂得,所谓的什么“中国市场环境”.所以不敢发表关于这方面的见解,不过我在这里想要插一句话,就是我认为啊,行业内,人与人之间还是有分层次 ...

  8. Android热修复AndFix

    热修复主要用来修复代码.修复bug.添加独立的功能,他的原理主要是操作PathClassLoader.DexClassLoader. PathClassLoader是类加载器,DexClassLoad ...

  9. arguments

    arguments 转数组 通常使用下面的方法来将 arguments 转换成数组: Array.prototype.slice.call(arguments); 还有一个更简短的写法: [].sli ...

  10. <head>中<meta name="viewport" content="width=device-width,initical-scale=1"的作用>

    <meta name="viewport" content="width=device-width,initical-scale=1"的作用> co ...