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

[学习开发日志] 菜鸟试玩 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个回答
黑溱郎 回答时间: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, 下载次数: 929

黑溱郎 回答时间: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
12下一页

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似分享

官网相关资源

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