使用位带操作,位带操作就是把每个比特膨胀成一个32位的字,当访问这些字的时候就访问这些比特位。
http://www.cnblogs.com/xiaobo-Linux/
然后,端口使能:
//³õʼ»¯PB5ºÍPE5ΪÊä³ö¿Ú.²¢Ê¹ÄÜÕâÁ½¸ö¿ÚµÄʱÖÓ
//LED IO³õʼ»¯
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE); //ʹÄÜPB,PE¶Ë¿ÚʱÖÓ
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->PB.5 ¶Ë¿ÚÅäÖÃ
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //ÍÆÍìÊä³ö
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO¿ÚËÙ¶ÈΪ50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //¸ù¾ÝÉ趨²ÎÊý³õʼ»¯GPIOB.5
GPIO_SetBits(GPIOB,GPIO_Pin_5); //PB.5 Êä³ö¸ß
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED1-->PE.5 ¶Ë¿ÚÅäÖÃ, ÍÆÍìÊä³ö
GPIO_Init(GPIOE, &GPIO_InitStructure); //ÍÆÍìÊä³ö £¬IO¿ÚËÙ¶ÈΪ50MHz
GPIO_SetBits(GPIOE,GPIO_Pin_5); //PE.5 Êä³ö¸ß
}
GPIO_SetBits(GPIOB,GPIO_Pin_5);
这个必须要写,取地址。
GPIO_SetBits(GPIOB,GPIO_Pin_5);这个可以不写,主要是开机不让LED亮;
SetBits 是 高电平 1 ;
RestBits是低电平 0 ;
然后是位带操作:
#ifndef __LED_H
#define __LED_H
#include "sys.h"
#define LED0 PBout(5)// PB5
#define LED1 PEout(5)// PE5
void LED_Init(void);
#endif
#ifndef __LED_H
#define __LED_H
..
..
#endif
是防止重复加载头文件
#define LED0 PBout(5) out是输出 Int是输入
输出PB.5引脚
在main.c中直接就可以像c51那样写 LED0 =1;LED0=0;