外设实战总集之LED
2014-6-4
现在开发环境搭建好了,接下来先从最基本的开始,最基本的当然是驱动LED。
接下来是实战步骤:
一、查看电路原理图,LED1对应的是PA2,LED2对应的是PA3,两个LED都是灌电流方式驱动,所以GPIO设置成输出,当输出低电平时,LED亮,输出高电平是,LED灭。
二、开始编写代码:
注意在LED文件中添加包含头文件:
#include "stm32f0xx.h"
下面一些宏和库函数都在stm32f0xx.h文件中有声明
1.初始化LEDS对应的IO外设时钟:
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
2.初始化LEDS对应的IO管脚
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin =GPIO_Pin_2 | GPIO_Pin_3;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStruct.GPIO_OType = GPIO_OType_OD;
GPIO_InitStruct.GPIO_Speed =GPIO_Speed_Level_1;
GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_SetBits(GPIOA, GPIO_Pin_2 | GPIO_Pin_3);
3.设置LED1和LED2亮的函数,也就是设置对应管脚输出低电平
GPIO_ResetBits(GPIOA, GPIO_Pin_2 );
GPIO_ResetBits(GPIOA, GPIO_Pin_3 );
4.设置LED1和LED2灭的函数,也就是设置对应管脚输出高电平
GPIO_SetBits(GPIOA, GPIO_Pin_2 );
GPIO_SetBits(GPIOA, GPIO_Pin_3 );
5.软件延时函数
extern void Delay(int t)
{
int i,j,k;
for(i = 0; i < t;i ++)
for(j = 0 ; j < 100;j++)
for(k = 0 ; k < 100;k ++);
}
6.测试这些函数是否能用
在main函数中:
int main(void)
{
LEDS_Init();
while(1){
LED1_ON();
LED2_OFF();
Delay(1000);
LED1_OFF();
LED2_ON();
Delay(1000);
}
}
编译并下载运行,可以看到两个灯交替亮灭,时间间隔大约1S。这样就验证完了LED部分了。
目前只是用到了IO输出,后面还会需要用到IO输入的。
原文:http://blog.csdn.net/lr2131/article/details/28400327