ledInit();
HARDWARE文件夹下
led.h
#ifndef __LED_H
#define __LED_H
#include "sys.h" //这里面定义了GPIO的地址 PBout PBin 之类
#define LED_BLUE PBout(3)
#define LED_RED PBout(7)
void ledInit(void);/* LED初始化 */
#endif
关于端口复用和重映射 :
stm32 将许多Cortex3的GPIO引脚扩展为外设形成stm32 可以复用为功能引脚;
复用步骤为: 使能总线时钟(例如串口1 PA9 PA10的时钟总线)
→使能复用时钟(直接使能 串口1复用时钟)
→ 配置 串口1 参数
→查表配置复用功能下GPIO的输出状态
→初始化引脚
关于重映射:
led.c
#include "led.h"
void ledInit(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* 禁止JTAG调试功能,将PB3,PB4,PA15用作普通IO口,而保留PA13,PA14的SWD接口,使STM32单片机仍可下载程序与调试*///没太看懂PB3
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);//复用功能使能
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//重映射(没接触过)
/* 初始化LED GPIO配置*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//GPIOB时钟使能
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
/* 关闭所有LED*/
GPIO_SetBits(GPIOB,GPIO_Pin_3);
GPIO_SetBits(GPIOB,GPIO_Pin_7);
}
总结:
ledInit() 配置了PB3 PB7两个引脚
由于PB3牵涉到 JTAG的重映射 因此把它禁止;使能SWD口 可以下载程序