STM32 点亮 LED
笔者现在大二,刚刚开学,正在学STM32,以下是笔者入门的第一个例程(如题)
因为,从大一开始就自学Java,这个博客就是我用Java写的,所以对Eclipse 比较熟悉,之前学51单片机时用的是keil,感觉那玩意儿不适合我,快捷键没有Eclipse的用着舒服。所以在STM32的开发环境上我果断用Eclipse。官方推荐的sw4stm32,其实就是eclipse,为了方便我就直接下载了Linux版的sw4stm32。好了废话不多说直接上代码。
首先新建一个项目
选择C项目,然后下一步选择:AC6 STM32 MCU PROJECT。然后继续下一步
经过一下界面,选择STM32的型号,由于我的板子是正点原子mini版 STM32F103RCT6,所以在划红线的地方选择相应的型号即可,很方便。
型号选好后就选择库,我选择的是划红线的标准库选择之前需要下载,下载固件库也很简单,就不一一说明。
如下图所示:
在写代码之前先在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 直接运行 ,成功点亮 !
总结
学习STM32 感觉和Java 差不多,C语言的结构体和Java的类有点类似,所以在我学习STM32会更加简单。在点亮LED的过程中几乎没有难度,建工程比起KEIL MDK 真的很快,所以我很推荐大家使用 sw4stm32 。