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的源码研究的 ...
随机推荐
- CommandBehavior.CloseConnection
cmd.commandTimeout设置为了1秒,sql执行了很长时间还没有超时, cmd.ExecuteReader(CommandBehavior.CloseConnection)这样就会立马重现 ...
- Java 中 手动抛出异常: throw new Exception("错误信息") 错误信息的获得
当然需要先用try catch捕获,但注意new Exception("")括号里的字符串其实是异常原因,所以获取是要用ex.getCause().getMessage() int ...
- 对前端的一个H5项目的所思所想
最近接触一个前端HTML5的项目,虽然我主做iOS,但曾经也徒手用html+css+js+php写过一个博客,当然表示无压力了.结果.现在的前端发展的速度真是快啊,项目中用到Jquery,reactJ ...
- Python学习笔记——迭代器(RandSeq和AnyIter)
1.RandSeq #coding:utf-8 #!/usr/bin/env python 'randSeq.py -- 迭代' #从random模块里仅仅导入choice方法 from random ...
- Python SMTP邮件模块
SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件.HTML邮件以及带附件的邮件. Python对SMTP支持有smtplib和email两个模块,email负责构造邮件, ...
- 蘑菇街TeamTalk编译连接过程中遇到的问题及解决方法(iOS)
今天浏览博文的时候,“蘑菇街开源的即时通讯框架,包括iOS.Android.Mac.Windows客户端和后台 Github源码下载地址:https://github.com/mogujie/Team ...
- [Head First设计模式]生活中学设计模式——迭代器模式
系列文章 [Head First设计模式]山西面馆中的设计模式——装饰者模式 [Head First设计模式]山西面馆中的设计模式——观察者模式 [Head First设计模式]山西面馆中的设计模式— ...
- 浏览器内核控制Meta标签说明文档
浏览器内核控制Meta标签说明文档 原文链接 背景介绍 由于众所周知的情况,国内的主流浏览器都是双核浏览器:基于Webkit内核用于常用网站的高速浏览.基于IE的内核用于兼容网银.旧版网站.以360的 ...
- 【译文】Java Logging
本文讲Java内置的java.util.logging软件包中的 api.主要解释怎样使用该api添加logging到你的application中,怎样加配置它等.但是本文不谈你应该把什么东西写到日志 ...
- [Centos] Centos 7笔记
命令行与图形界面 在X-Window图形操作界面中按“Alt+Ctrl+功能键Fnn=1~6”就可以进入Console字符操作界面.这就意味着你可以同时拥有X-Window加上6个Console字 ...