本次学习的是:
可直接复制粘贴之前的工程文件,重新命名文件名即可使用
方法一、模块化代码:
main.c
#include "stm32f10x.h"
#include "led.h"
#include "key.h"
void Delay(__IO uint32_t nCount);
int main(void)
{
SystemInit();
LED_Config();
Key_Init();
while(1)
{
if(Key_Press()==1) {
LED1_ON();LED2_OFF();LED3_OFF();}
if(Key_Press()==2) {
LED1_OFF();LED2_ON();LED3_OFF();}
if(Key_Press()==3) {
LED1_OFF();LED2_OFF();LED3_ON();}
}
}
void Delay(__IO uint32_t nCount)
{
for(; nCount != 0; nCount--);
}
led.c
#include "led.h"
#include "stm32f10x.h"
void LED_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOD , ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED1 V6//½«V6,V7,V8 配置为通用复用推挽输出
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //翻转速度为50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_3; //LED2, LED3 V7 V8
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOD, &GPIO_InitStructure);
LED_ALL_OFF();
}
led.h
#ifndef _LED_H
#define _LED_H
#include "stm32f10x.h"
#define LED1_ON() GPIO_SetBits(GPIOB, GPIO_Pin_5);
#define LED1_OFF() GPIO_ResetBits(GPIOB, GPIO_Pin_5);
#define LED2_ON() GPIO_SetBits(GPIOD, GPIO_Pin_