TODAY BLOG 由 Pipe 强力驱动

STM32 点亮 LED

笔者现在大二,刚刚开学,正在学STM32,以下是笔者入门的第一个例程(如题)

因为,从大一开始就自学Java,这个博客就是我用Java写的,所以对Eclipse 比较熟悉,之前学51单片机时用的是keil,感觉那玩意儿不适合我,快捷键没有Eclipse的用着舒服。所以在STM32的开发环境上我果断用Eclipse。官方推荐的sw4stm32,其实就是eclipse,为了方便我就直接下载了Linux版的sw4stm32。好了废话不多说直接上代码。

首先新建一个项目

新建工程

选择C项目,然后下一步选择:AC6 STM32 MCU PROJECT。然后继续下一步

选择c项目

经过一下界面,选择STM32的型号,由于我的板子是正点原子mini版 STM32F103RCT6,所以在划红线的地方选择相应的型号即可,很方便。

204549png

型号选好后就选择库,我选择的是划红线的标准库选择之前需要下载,下载固件库也很简单,就不一一说明。

204758png

如下图所示:

205434png

在写代码之前先在src目录下建立led目录,分别建立led.c和led.h文件。下面就正式写代码:

led.h

/*
 * led.h
 *      Author: Today
 */
#ifndef LED_LED_H_
#define LED_LED_H_
//定义要点亮的led所在的pin口
#define LED (GPIO_Pin_15|GPIO_Pin_14|GPIO_Pin_13|GPIO_Pin_12 |GPIO_Pin_11|GPIO_Pin_10|GPIO_Pin_9|GPIO_Pin_8)

void LED_Init(void); //定义led的初始化函数

#endif


led.c:

#include "led.h"

#include <stm32f10x.h>
#include <stm32f10x_gpio.h>
#include <stm32f10x_rcc.h>

void LED_Init()//初始化函数实现
{
    GPIO_InitTypeDef GPIO_Init_type;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);	//io口时钟使能

    GPIO_Init_type.GPIO_Mode         = GPIO_Mode_Out_PP;    //设置GPIO模式:推挽输出
    GPIO_Init_type.GPIO_Pin          = LED;                 //选择输出口
    GPIO_Init_type.GPIO_Speed        = GPIO_Speed_50MHz;    //设置输出速度

    GPIO_Init(GPIOB, &GPIO_Init_type);//初始化
}

main.c

/**
  ******************************************************************************
  * @file    main.c
  * @author  Today
  * @version V1.0
  * @date    01-December-2013
  * @brief   Default main function.
  ******************************************************************************
  */

#include <stm32f10x.h>
#include <stm32f10x_gpio.h>

#include "led/led.h"

int main(void)
{
    LED_Init();
    while(1)
    {
        GPIO_WriteBit(GPIOB,LED,(BitAction)0);//LED公共端:VCC
    }
}

ctrl + F11 直接运行 ,成功点亮 !

211722jpg

总结

学习STM32 感觉和Java 差不多,C语言的结构体和Java的类有点类似,所以在我学习STM32会更加简单。在点亮LED的过程中几乎没有难度,建工程比起KEIL MDK 真的很快,所以我很推荐大家使用 sw4stm32 。

1374 浏览
0评论                
评论
留下你的脚步
0