5回答

0收藏

STM32F0 #01进程帖(二)——工程的建立

STMCU STMCU 6784 人阅读 | 5 人回复 | 2012-10-29

本帖最后由 xinxincaijq 于 2012-10-30 08:59 编辑

在拿到板子前就开始准备了,建立一个小工程,主要是用于环境建立和程序下载,今天拿到了板子并且已经下载验证过了,所以发个帖子,大家共同学习。
在建立工程前,首先安装板子的驱动,也就是ST-LINK的驱动。在没有安装驱动前,插上板子,LED2是一直闪烁的。此时提示发现新硬件需要安装驱动,如果点击默认自动安装,是失败的,找不到驱动路径。此时要找到MDK的安装路径下的
ARM\STLink\USBDriver   ST-Link_V2_USBdriver.exe文件,双击安装,安装完毕后在插上板子,选择默认自动安装,不用指定路径,一直点下一步到最后,就完成了驱动安装任务。

好了,现在开始正题,介绍我的工程建立过程:我的目的是先点亮一个LED,有了这个基础,就可以熟悉环境建立和程序下载。
第一步:建立一个项目文件夹:GPIO
第二步:在GPIO文件夹中建立3个文件夹:List,RVMDK,User
                  其中List用于存放编译后的文件和输出文件(这个在后期会详细描述)
           RVMDK用于存放工程文件
          User包括2部分东西(STM32F0lib文件夹和用户文件:比如main.C,stm32f0xx_it.c
         STM32F0lib文件夹里面存放固件库文件中的所有.c.h文件。
第三步:开始建立工程
     打开MDK软件,选择Project-----new  u Vision project

         

       选择板子上的芯片STM32F051R8
      

      点击OK后,出现是否要copy启动代码,这个代码是MDK软件自带的,此处我选择“否”

     接着点击如下图所示的品字图标,建立项目的管理器(此处自己起个名字了,暂时没有想好叫什么)

     
根据需要加入相应的文件,比如我的USER文件夹中加入main.c,stm32f0xx _it.c(用于中断处理函数),init.c(用于初始化),define.h
Lib中加入stm32f0xx_rcc.c, stm32f0xx_gpio.c,system_ stm32f0xx.c(因为此工程中只是用到了GPIO,所以只用加入时钟(RCC),GPIO,系统定义文件(system_stm32f0XX)
Startup中放置启动代码Startup_ stm32f0xx.s(这个在固件库中有),
建立完成后就像下图所示。

   接下来做一些其他设置(配置)如下图,点击魔法棒图标

进行如下的设置:其中 Processor Symbols这里必须要定义,如果不定义会有错误,我会在下一个进程贴中说明有什么错误。
Include Paths这里主要是定义头文件的路径,由于我把所有的头文件都放在User\STM32F0lib文件夹中,所有此处指定路径为这个文件夹。前面的..表示工程路径。

在如下图所示,点击Select Folder for Objects..把路径设置为一开始建立的List文件,这样主要是为了使文件分类保存,不至于太混乱。

最后设置下载器:如下图,在Debug选项下选择ST-Link Debugger

选择Setting---Flash Download,选择flash  (64K)

好了,此时基本配置已经结束了,开始编辑程序:
主程序如下图所示,包括了一个延时函数和LED灯闪烁程序。


在define.h文件中写入如下程序
#define LED0_ON()            GPIO_WriteBit(GPIOC,GPIO_Pin_8,1)       ,点亮LED
#define LED0_OFF()           GPIO_WriteBit(GPIOC,GPIO_Pin_8,0)       ,熄灭LED

在Init.c中主要是初始化函数,包括时钟初始化和GPIO初始化。
(要用到哪个外设,一定要开启时钟,否则该外设不能使用)
void RCC_Configuration(void)
{
SystemInit();                        // ?系统时钟48M
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);       //使能GPIOC时钟   

}
//PC8输出
void GPIO_Configuration(void)
{
GPIO_InitTypeDef    GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
        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(GPIOC, &GPIO_InitStructure);
}
此时把程序保存编译后,没有错误,点击下载,此时板上的LED2是红色和绿色闪烁,表示正在下载程序,当灯变成红色常量时,此时就表示下载完成了。
现在看看板子,LED4蓝色灯开始闪烁了。如果把
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
#define LED0_ON()            GPIO_WriteBit(GPIOC,GPIO_Pin_8,1)       ,点亮LED
#define LED0_OFF()           GPIO_WriteBit(GPIOC,GPIO_Pin_8,0)       ,熄灭LED
改成GPIO_Pin_9,此时板子上的绿灯开始闪烁了,蓝灯不在亮了。这样进一步证明工程建立已经成功了。




分享到:
回复

使用道具 举报

回答|共 5 个

倒序浏览

沙发

MMzhang-319191

发表于 2012-10-29 21:49:58 | 只看该作者

哈哈   我的板还没来呢   看了你的教程我就容易多啦
心中有曲自然嗨!!!
板凳

小鸟_愤怒

发表于 2012-10-29 22:37:03 | 只看该作者

不错,楼主很细心啊,
静心  简单  认真  专注
地板

w932443004

发表于 2012-10-30 20:04:58 | 只看该作者

教程不错 收藏了
5#

┗SKY┛

发表于 2013-1-4 20:11:54 | 只看该作者

lz的教程不错      
6#

visionary

发表于 2013-12-8 22:08:46 | 只看该作者

很不错。收到板子就轻松多了
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条