笔者现在大二,刚刚开学,正在学 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 。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于