差不多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. 作业一:android开发平台的演变以及Android Studio设置

    目录:     ①. 从Eclipse到Android Studio   ②. Android Studio的下载和安装   ③. 用户习惯设置以及快捷键   ④. SDK路径重新设置 ↓点此跳转到文 ...

  2. SignalR主动通知订阅者示例

    html代码: <script src="~/Scripts/jquery.signalR-2.2.0.min.js"></script> <scri ...

  3. jQuery之Ajax--辅助函数

    1.这些函数用于辅助完成Ajax任务. 2. jQuery.param()方法:创建一个数组或对象序列化的的字符串,适用于一个URL 地址查询字符串或Ajax请求.    我们可以显示一个对象的查询字 ...

  4. 微信小程序 关于底部导航设置

    在app.json 中添加 "tabBar": { "color":"#ffffff", "borderStyle":& ...

  5. bzoj1189

    1189: [HNOI2007]紧急疏散evacuate Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2321  Solved: 724[Submi ...

  6. iOS 图片大小压缩 图片尺寸处理

    图片的压缩其实是俩概念,1.是 “压” 文件体积变小,但是像素数不变,长宽尺寸不变,那么质量可能下降,2.是 “缩” 文件的尺寸变小,也就是像素数减少.长宽尺寸变小,文件体积同样会减小. 这个 UII ...

  7. wcf第4步之原生调用简单封装

    public interface IDemoServiceChannel : IDemoService, System.ServiceModel.IClientChannel { } public p ...

  8. Java排序算法——桶排序

    文字部分为转载:http://hxraid.iteye.com/blog/647759 对N个关键字进行桶排序的时间复杂度分为两个部分: (1) 循环计算每个关键字的桶映射函数,这个时间复杂度是O(N ...

  9. jquery实现简单瀑布流布局(续):图片懒加载

    # jquery实现简单瀑布流布局(续):图片懒加载 这篇文章是jquery实现简单瀑布流布局思想的小小扩展.代码基于前作的代码继续完善. 图片懒加载就是符合某些条件时才触发图片的加载.最常见的具体表 ...

  10. CSS line-height与vertical-align:baseline

    一.当line-height与vertical-align相遇,会发生很多匪夷所思的现象 首先,请看如下代码: <!DOCTYPE html> <html> <head& ...