对于想学习STM32的新手来说,点亮LED灯是学习STM32的第一步,
前面几篇博文我已经大概总结了什么是STM32,以及基于kile5.23版本的模板
工程的创建。
下面我就把点亮STM32 的LED灯过程分享一下:
首先你的了解以下俩点:
1、 了解 STM32 用有几种 GPIO 模式。
2、 怎么学会设置 STM32 的 GPIO 输出控制 LED 灯。
首先我们来看一下我们开发板上面 LED 的接线图:
从上面的图,我们可以看到 LED 灯是接到单片机的 PC 口的 PC0 到 PC7。而
点 亮一盏LED的原理就是把相应LED接到单片机的相应的IO口输出低电平, IO
口 输出为高电平就能够熄灭 LED(由图中得LED灯都是共阳极接高电平,所以
当所接开发板的引脚输出低电平时,有电流流过LED灯,灯才亮)。
了解了这些以后就可以开始动工了》
①创建一个空的工程,
②初始化GPIO。
#ifndef _led_H
#define _led_H
#include "stm32f10x.h"
#define LED GPIO_Pin_All //管脚宏定义
void LED_Init(void);
void led_display(void);
#endif
#include "led.h"
/*******************************************************************************
* 函 数 名 : delay
* 函数功能 : 延时函数,delay(6000000)延时约1s
* 输 入 : i
* 输 出 : 无
*******************************************************************************/
void delay(u32 i)
{
while(i--);
}
/*******************************************************************************
* 函 数 名 : LED_Init
* 函数功能 : LED初始化函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void LED_Init() //端口初始化
{
GPIO_InitTypeDef GPIO_InitStructure; //声明一个结构体变量,用来初始化GPIO
SystemInit(); //时钟初始化
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
/* 配置GPIO的模式和IO口 */
GPIO_InitStructure.GPIO_Pin=LED; //选择你要设置的IO口
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //设置推挽输出模式
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //设置传输速率
GPIO_Init(GPIOC,&GPIO_InitStructure); /* 初始化GPIO */
}
/*******************************************************************************
* 函 数 名 : led_display
* 函数功能 : LED显示函数 LED闪烁
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void led_display()
{
GPIO_SetBits(GPIOC,LED);
delay(6000000);//延时约为1s
GPIO_ResetBits(GPIOC,LED);
delay(6000000);
③主函数写出要实现的功能
int main()
{
LED_Init(); //LED端口及时钟初始化
while(1)
{
led_display(); //led显示
}
}
完整代码在我的资源里上传了,可以免费下载。