(19)ledInit(); (GPIO的设置&&端口复用&&端口重映射)

it2023-09-15  74

目录 

ledInit();    

led.h

关于端口复用和重映射 :

         led.c



 

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口 可以下载程序

最新回复(0)