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的源码研究的 ...
随机推荐
- C#时间戳转时间-时间转时间戳
/// <summary> /// 时间戳转为C#格式时间 /// </summary> /// <param name=”timeStamp”></para ...
- perl 模块安装
You can check if you have them installed in your machine with: > perl -e 1 -M<module> It wi ...
- AOJ DSL_2_A Range Minimum Query (RMQ)
Range Minimum Query (RMQ) Write a program which manipulates a sequence A = {a0,a1,...,an−1} with the ...
- vim编辑器的使用
I 在光标所在行的行首插入 A 在光标所在行的行尾插入 { 移动到上一段 } 移动到下一段 空格向后移动一格 H 屏幕顶部 M 屏幕中间 L 屏幕下方 n| 使光标移动到第几个字符处 ngg 移动到制 ...
- Unicode, UTF, ASCII, ANSI format differences
Going down your list: "Unicode" isn't an encoding, although unfortunately, a lot of docume ...
- windows bat 设置代理上网脚本bat
取消IE代理服务器 ****************************************************************************************** ...
- C#利用System.Net发送邮件(带 抄送、密送、附件、html格式的邮件)
net2.0后,C#可以利用System.Net发送邮件了. 代码整理如下: 3. 增加IProcessMessage类,定义了一个消息方法,用于消息传递 /********************* ...
- Python之路【第十八篇】Django小项目webQQ实现
WEBQQ的实现的几种方式 1.HTTP协议特点 首先这里要知道HTTP协议的特点:短链接.无状态! 在不考虑本地缓存的情况举例来说:咱们在连接博客园的时候,当tcp连接后,我会把我自己的http头发 ...
- EXPLAINING WHAT ACTION AND FUNC ARE
http://simpleprogrammer.com/2010/09/24/explaining-what-action-and-func-are/ Explaining What Action A ...
- 数据存储_SQLite (2)
SQL代码应用示例 一.使用代码的方式批量添加(导入)数据到数据库中 在ios项目中使用代码批量添加多行数据示例 代码示例: 1 // 2 // main.m 3 // 01-为数据库添加多行数据 4 ...