你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

[学习开发日志] 菜鸟试玩 STM32F3 DISCOVERY

[复制链接]
黑溱郎 发布时间:2013-3-15 11:08

首先说明,我是一个菜鸟,这里写这篇文章,只是记录我的学习经历,并与初学者共亨,老鸟飘过,勿喷。

从社区获得意法半导体公司STM32F3-Discovery套件后,我就从网上下来很多关于STM32的资料进行学习,但我这样的菜鸟来说要玩转这套件还真不是容易的事,今天也来个学习GPIO 的日志。先来一张套件图:



1.jpg

整个开发板的尺寸只有97×66mm,开发板分两部分:一部分是STM32F103C8T6为核心的ST-Link仿真器,后续的开发中完全可以使用该ST-LINK;另一部分是基于CORTEX-M4内核的STM32F303VCT6主控,并把引脚全部引出,还包含了3轴数字输出陀螺仪L3GD20、三轴数字输出的加速传感器和磁传感器模块LSM303DLHC,板上最有特色的是下方白色的圆盘和分布其四周的8个LED灯。如图:
2-3.JPG



用USB数据电缆连接套件和PC,开发板内部自带的DEMO例子就会自动运行。按下蓝色USER按键进入加速传感器程序,“上下左右”晃动板子,不同方向的LED被点亮;再次按下USER按键进入地磁传感器模式,此时被点亮的LED即为当前的正北方向。

准备工作:

①    一根USB数据电缆;

②    STLINK驱动:stm32_st-link_utility软件,下载地址如下:http://www.st.com/internet/com/SOFTWARE_RESOURCES/TOOL/DEVICE_PROGRAMMER/stm32_st-link_utility.zip

③    MDK-ARM 4.7a 版。 网上可以搜索得到,包括和谐文件。这里也有:http://kuai.xunlei.com/d/uT9EBQLgrQAzVCZR861

④    STM32F3函数库。ST官网上可以下载到STM32F30x_DSP_StdPeriph_Lib_V1.0.0文件包。

一、安装st-link驱动。

先安装下载的st-link_utility软件,安装好后,用USB数据电缆连接套件和PC,系统中将会出现ST-LINK仿真器。如图:

ST Link-2.JPG



二、安装MDK-ARM 4.7a

除了仿真器外,开发工具也是非常关键的。在这里我是使用MDK来对该板卡进行开发,需要注意的是由于STM32F3系列MCU太新了,只有4.6以上版本的MDK才支持,我是下载了MDK-ARM 4.7版的。具体安装与和谐过程就不说了。下面是我和谐后的截图:

hX.jpg



        大家看红线部分,可以用到2020年哦!
      下面就是MDK的具体使用,下图(借用网上的)为它的基本流程就是建立工程、修改工程设置:

MDK-LC.jpg



                         楼下继续。
收藏 2 评论17 发布时间:2013-3-15 11:08

举报

17个回答
honyuan 回答时间:2014-11-11 15:50:17
楼主威武啊,刚接触STM32F3xx还不知道怎么用呢!楼主真帮了我大忙了,谢谢啦
lizhiliu 回答时间:2015-7-31 14:18:52
你好,你的程序开不,请更新一个能用的程序,谢谢
甜蜜的药师 回答时间:2017-4-28 08:11:10
刚刚入门 谢谢楼主分享code:)
黑溱郎 回答时间:2013-3-15 11:15:31

RE:[学习开发日志] 菜鸟试玩 STM32F3 DISCOVERY

 
三、建立第一个工程模板。

 1.         建立一个工程模板文件夹,取名为GPIO_LED。在其中添加以下子目录:

 

2.         Library文件夹用于存放各种官方提供的标准驱动库文件,如STM32F30x_I2C_CPAL_DriverSTM32F30x_StdPeriph_Driver等,拷贝官方提供的标准外设驱动库,包括incsrc两个文件夹中的文件,路径为:

…\STM32F30x_DSP_StdPeriph_Lib_V1.0.0\Libraries\STM32F30x_StdPeriph_Driver

Library.jpg  

3.    User文件夹中包含用户自己编写的main.c文件以及STM32F3系列处理器的异常处理文件。拷贝官方提供的任意一个实例工程中的以下文件到User文件夹下,如:

…\STM32F30x_DSP_StdPeriph_Lib_V1.0.0\Project\STM32F30x_StdPeriph_Examples\CortexM4\BitBand

  

   4.   Project文件夹用于存储输出工程文件,包括用于下载的.hex二进制文件,该文件可以用相关ISP下载软件直接下载到STM32F303处理器中。

 

至此,STM32F3的工程模板文件基本框架建立完成。

 

       5.    打开Keil uVision4,点击Project菜单按钮,选择New uVision Project...

输入工程名称(LED),选择存储路径在GPIO_LED目录下。如下图:

  New project bc.jpg

        按保存按钮,出现选择器件的窗口,如下图:

New project device.jpg  

        选择STM32F303VC,OK按钮,弹出如下窗口:

  New project vesion.jpg

         这里选择是,系统自动添加启动文件:startup_stm32f30x.s

         这样我们就建立了一个工程(文件)。如下图:

  ZJ.JPG

在上图中的Project窗口Target 1处点击鼠标右键,选择“Manage Components…”(组件管理)或在上图指示处直接点击组件管理按钮,进入组件管理窗口。如下图:

  ZJ 2.JPG

        

                     楼下继续。。。。。。
黑溱郎 回答时间:2013-3-15 11:15:53

RE:[学习开发日志] 菜鸟试玩 STM32F3 DISCOVERY

 
接上面:

 

        添加完成后的工程结构如下图:(图中左侧Project窗口)分组中包含有建立工程目录时创建的Library目录下的所有文件,并把启动文件startup_stm32f30x.s也添加到Library目录下。

  New project ADD.jpg

 

往组里添加文件也可以在工程窗口双击要添加文件的分组,往该组里添加文件(如上图),双击要添加的文件或点击文件,再点击add按钮,该文件就添加到组里了(在添加窗口里一次可添加多个文件)

7.  工程配置。按配置按钮,进入配置界面:

选择Output书签。在Create HEX File选项前打勾。点击选择文件夹按钮Select Folder for Obuects…”,选择我们创建的Project文件夹存放编译生成的文件。

选择C/C++书签。在预处理定义(Define)输入框中输入USE_STDPERIPH_DRIVER,STM32F30X 。点击Include Paths输入框右侧的按钮,弹出文件夹设置窗口。将我们建立工程所创建的文件夹全部添加上,以保证编译器能够找到工程的所有文件。如下图所示:

  New project C++.jpg

选择Debug书签,设置调试仿真环境,选中右上的“Use” 在框中选择“ST-Link Debugger”,并点击“Settings”按钮,设置如下图:

New project Debug.jpg  

选择Utilities书签,点击“Settings”按钮,设置如下图:

  New project Utilities.jpg

     至此工程模板完成,接下来可以开始写程序了。

 

 

           楼下继续。。。。。。

 
黑溱郎 回答时间:2013-3-15 11:38:18

回复:[学习开发日志] 菜鸟试玩 STM32F3 DISCOVERY

 
四、写主程序:模拟交通灯。

 

主程序如下:

 

/*******************************************************************

 * @file    GPIO_LED/main.c

 * @author HeiTaiLang

 * @version V1.0

 * @date    6-3-2013

 * @brief   Main program body

 *****************************************************************/

/* Includes ------------------------------------------------------------------*/

 

#include "stm32f30x.h"

 

           GPIO_InitTypeDef GPIO_InitStructure;

 

/*******延时函数*******/

 

void Delay(__IO uint32_t nCount)

{

 

 while (nCount != 0)

 {

    nCount--;

 }

}

 

 

void Delay_Ms(__IO uint32_t nCount)

{

 

 while (nCount != 0)

 {

    nCount--; 

    Delay(15000);

 }

}

 

 

int main(void)

{

    uint32_t i;

    /* GPIOE Periph clock enable */

 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOE, ENABLE);

 

 /* Configure GPIO in output pushpull mode */

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_13 | GPIO_Pin_15;

 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;

 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;

 GPIO_Init(GPIOE, &GPIO_InitStructure);

   

 while (1)

 {                                

                  GPIO_SetBits(GPIOE,GPIO_Pin_11 | GPIO_Pin_15);    /* 点亮东西向的绿色灯 LD6 and LD7 */

                  Delay_Ms(800);                                       

<div style="text-indent: 10.5pt" align="left"><span style="font-size: 9pt; background: white; color: black">                  for(i=0;i
New project BY.jpg
CW.JPG
New project Laod.jpg
4.jpg
3.jpg

GPIO_LED.rar

下载

4.12 MB, 下载次数: 932

黑溱郎 回答时间:2013-3-17 20:05:06

回复:[学习开发日志] 菜鸟试玩 STM32F3 DISCOVERY

因为太菜了,没有人理会.
glyhw 回答时间:2013-4-24 14:56:04

回复:[学习开发日志] 菜鸟试玩 STM32F3 DISCOVERY

楼主写的很详细,学习了
希望能跟你学到更多
谢谢
 
小雨-2004452 回答时间:2013-4-29 21:17:14

回复:[学习开发日志] 菜鸟试玩 STM32F3 DISCOVERY

很好,说得很详细,学习中
小雨-2004452 回答时间:2013-5-5 21:43:59

RE:[学习开发日志] 菜鸟试玩 STM32F3 DISCOVERY

很好,学习中,学习中。呵呵
glyhw 回答时间:2013-5-11 13:01:49

RE:[学习开发日志] 菜鸟试玩 STM32F3 DISCOVERY

写的很详细,给我们初学的帮助很大
学习中,
请教能不能ISP下载?
wenze1367 回答时间:2013-5-17 23:08:42

回复:[学习开发日志] 菜鸟试玩 STM32F3 DISCOVERY

<div style="border-bottom: #ccc 1px dashed; border-left: #ccc 1px dashed; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; border-top: #ccc 1px dashed; border-right: #ccc 1px dashed; padding-top: 5px">回复第 4 楼 于2013-03-15 19:38:18发表:
 
四、写主程序:模拟交通灯。

 

主程序如下:

 

/*******************************************************************

 * @file    GPIO_LED/main.c

 * @author HeiTaiLang

 * @version V1.0

 * @date    6-3-2013

 * @brief   Main program body

 *****************************************************************/

/* Includes ------------------------------------------------------------------*/

 

#include "stm32f30x.h"

 

           GPIO_InitTypeDef GPIO_InitStructure;

 

/*******延时函数*******/

 

void Delay(__IO uint32_t nCount)

{

 

 while (nCount != 0)

 {

    nCount--;

 }

}

 

 

void Delay_Ms(__IO uint32_t nCount)

{

 

 while (nCount != 0)

 {

    nCount--; 

    Delay(15000);

 }

}

 

 

int main(void)

{

    uint32_t i;

    /* GPIOE Periph clock enable */

 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOE, ENABLE);

 

 /* Configure GPIO in output pushpull mode */

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_13 | GPIO_Pin_15;

 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;

 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;

 GPIO_Init(GPIOE, &GPIO_InitStructure);

   

 while (1)

 {                                

                  GPIO_SetBits(GPIOE,GPIO_Pin_11 | GPIO_Pin_15);    /* 点亮东西向的绿色灯 LD6 and LD7 */

                  Delay_Ms(800);                                       

<div style="text-indent: 10.5pt" align="left"><span style="background: white; color: black; font-size: 9pt">                  for(i=0;i
wenze1367 回答时间:2013-5-17 23:08:44

回复:[学习开发日志] 菜鸟试玩 STM32F3 DISCOVERY

<div style="border-bottom: #ccc 1px dashed; border-left: #ccc 1px dashed; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; border-top: #ccc 1px dashed; border-right: #ccc 1px dashed; padding-top: 5px">回复第 4 楼 于2013-03-15 19:38:18发表:
 
四、写主程序:模拟交通灯。

 

主程序如下:

 

/*******************************************************************

 * @file    GPIO_LED/main.c

 * @author HeiTaiLang

 * @version V1.0

 * @date    6-3-2013

 * @brief   Main program body

 *****************************************************************/

/* Includes ------------------------------------------------------------------*/

 

#include "stm32f30x.h"

 

           GPIO_InitTypeDef GPIO_InitStructure;

 

/*******延时函数*******/

 

void Delay(__IO uint32_t nCount)

{

 

 while (nCount != 0)

 {

    nCount--;

 }

}

 

 

void Delay_Ms(__IO uint32_t nCount)

{

 

 while (nCount != 0)

 {

    nCount--; 

    Delay(15000);

 }

}

 

 

int main(void)

{

    uint32_t i;

    /* GPIOE Periph clock enable */

 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOE, ENABLE);

 

 /* Configure GPIO in output pushpull mode */

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_13 | GPIO_Pin_15;

 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;

 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;

 GPIO_Init(GPIOE, &GPIO_InitStructure);

   

 while (1)

 {                                

                  GPIO_SetBits(GPIOE,GPIO_Pin_11 | GPIO_Pin_15);    /* 点亮东西向的绿色灯 LD6 and LD7 */

                  Delay_Ms(800);                                       

<div style="text-indent: 10.5pt" align="left"><span style="background: white; color: black; font-size: 9pt">                  for(i=0;i
wenze1367 回答时间:2013-5-17 23:12:50

回复:[学习开发日志] 菜鸟试玩 STM32F3 DISCOVERY

<div style="border-bottom: #ccc 1px dashed; border-left: #ccc 1px dashed; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; border-top: #ccc 1px dashed; border-right: #ccc 1px dashed; padding-top: 5px">回复第 4 楼 于2013-03-15 19:38:18发表:
 
四、写主程序:模拟交通灯。

 

主程序如下:

 

/*******************************************************************

 * @file    GPIO_LED/main.c

 * @author HeiTaiLang

 * @version V1.0

 * @date    6-3-2013

 * @brief   Main program body

 *****************************************************************/

/* Includes ------------------------------------------------------------------*/

 

#include "stm32f30x.h"

 

           GPIO_InitTypeDef GPIO_InitStructure;

 

/*******延时函数*******/

 

void Delay(__IO uint32_t nCount)

{

 

 while (nCount != 0)

 {

    nCount--;

 }

}

 

 

void Delay_Ms(__IO uint32_t nCount)

{

 

 while (nCount != 0)

 {

    nCount--; 

    Delay(15000);

 }

}

 

 

int main(void)

{

    uint32_t i;

    /* GPIOE Periph clock enable */

 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOE, ENABLE);

 

 /* Configure GPIO in output pushpull mode */

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_13 | GPIO_Pin_15;

 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;

 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;

 GPIO_Init(GPIOE, &GPIO_InitStructure);

   

 while (1)

 {                                

                  GPIO_SetBits(GPIOE,GPIO_Pin_11 | GPIO_Pin_15);    /* 点亮东西向的绿色灯 LD6 and LD7 */

                  Delay_Ms(800);                                       

<div style="text-indent: 10.5pt" align="left"><span style="background: white; color: black; font-size: 9pt">                  for(i=0;i
Arhde 回答时间:2014-11-11 17:33:56
很详细,学习了,谢谢
hjl240 回答时间:2014-11-11 18:36:29
很详细,学习学习
12下一页

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版