基于keil 5的led闪烁程序编译
一、安装并打开keil5.10二、新建led.c文件三、源代码四、参考文献
一、安装并打开keil5.10
1.选择project 点击第一项创建新的工程
2.选择设备目标
① 这里选项可以自己选择
②
二、新建led.c文件
1.选择file,新建.c文件并进行编译 2.将led1.c文件添加进工程,并生成hex文件 ①右击source group1,选择“Add Existing Files to Group 'Source Group 1…”,选择led1.c,如下图: 选择led1.c后,点击add
②右击target1,选择“Options for Target ‘Target1’…”,将output下的“create hex file” 勾上,如下图: 3.编译并查看结果 程序正确 成功输出.hex文件
三、源代码
#define
GPIOB_BASE (APB2PERIPH_BASE + 0x0C00)
#define
GPIOC_BASE (APB2PERIPH_BASE + 0x1000)
#define
GPIOD_BASE (APB2PERIPH_BASE + 0x1400)
#define
GPIOE_BASE (APB2PERIPH_BASE + 0x1800)
#define
GPIOF_BASE (APB2PERIPH_BASE + 0x1C00)
#define
GPIOG_BASE (APB2PERIPH_BASE + 0x2000)
#define
GPIOA_ODR_Addr (GPIOA_BASE+12)
#define
GPIOB_ODR_Addr (GPIOB_BASE+12)
#define
GPIOC_ODR_Addr (GPIOC_BASE+12)
#define
GPIOD_ODR_Addr (GPIOD_BASE+12)
#define
GPIOE_ODR_Addr (GPIOE_BASE+12)
#define
GPIOF_ODR_Addr (GPIOF_BASE+12)
#define
GPIOG_ODR_Addr (GPIOG_BASE+12)
#define
BITBAND(addr
, bitnum
) ((addr
& 0xF0000000)+0x2000000+((addr
&0xFFFFF)<<5)+(bitnum
<<2))
#define
MEM_ADDR(addr
) *((volatile unsigned long
*)(addr
))
#define
LED0 MEM_ADDR(BITBAND(GPIOA_ODR_Addr
,8))
typedef struct
{
volatile unsigned int
CR;
volatile unsigned int
CFGR;
volatile unsigned int
CIR;
volatile unsigned int
APB2RSTR;
volatile unsigned int
APB1RSTR;
volatile unsigned int
AHBENR;
volatile unsigned int
APB2ENR;
volatile unsigned int
APB1ENR;
volatile unsigned int
BDCR;
volatile unsigned int
CSR;
} RCC_TypeDef
;
#define
RCC ((RCC_TypeDef
*)0x40021000)
typedef struct
{
volatile unsigned int
CRL;
volatile unsigned int
CRH;
volatile unsigned int
IDR;
volatile unsigned int
ODR;
volatile unsigned int
BSRR;
volatile unsigned int
BRR;
volatile unsigned int
LCKR;
} GPIO_TypeDef
;
#define
GPIOA ((GPIO_TypeDef
*)GPIOA_BASE)
void LEDInit( void )
{
RCC->APB2ENR|=1<<2;
GPIOA->CRH&=0XFFFFFFF0;
GPIOA->CRH|=0X00000003;
}
void Delay_ms( volatile unsigned int t
)
{
unsigned int i
,n
;
for (n
=0;n
<t
;n
++)
for (i
=0;i
<800;i
++);
}
int
main(void)
{
LEDInit();
while (1)
{
LED0=0;
Delay_ms(500);
LED0=1;
Delay_ms(500);
}
}
四、参考文献
1、百度百科 2、《STM32底座实验指导书》