要配置GIPOA与GPIOB的IO口,配置完只有GPIOB的IO有输出,不知道什么原因?大神请帮忙分析下,我估计的GPIO端口配置的问题lled.h的代码
- #ifndef __BSP_LED_H
- #define __BSP_LED_H
- #include "stm32f10x.h"
- #define LED1_GPIO_CLK RCC_APB2Periph_GPIOA
- #define LED1_GPIO_PIN GPIO_Pin_3
- #define LED1_GPIO_PORT GPIOA
- #define LED2_GPIO_CLK RCC_APB2Periph_GPIOA
- #define LED2_GPIO_PIN GPIO_Pin_4
- #define LED2_GPIO_PORT GPIOA
- #define LED3_GPIO_CLK RCC_APB2Periph_GPIOA
- #define LED3_GPIO_PIN GPIO_Pin_5
- #define LED3_GPIO_PORT GPIOA
- #define LED4_GPIO_CLK RCC_APB2Periph_GPIOA
- #define LED4_GPIO_PIN GPIO_Pin_6
- #define LED4_GPIO_PORT GPIOA
- #define LED5_GPIO_CLK RCC_APB2Periph_GPIOA
- #define LED5_GPIO_PIN GPIO_Pin_7
- #define LED5_GPIO_PORT GPIOA
- #define LED6_GPIO_CLK RCC_APB2Periph_GPIOB
- #define LED6_GPIO_PIN GPIO_Pin_0
- #define LED6_GPIO_PORT GPIOB
- #define LED7_GPIO_CLK RCC_APB2Periph_GPIOB
- #define LED7_GPIO_PIN GPIO_Pin_1
- #define LED7_GPIO_PORT GPIOB
- #define LED8_GPIO_CLK RCC_APB2Periph_GPIOB
- #define LED8_GPIO_PIN GPIO_Pin_2
- #define LED8_GPIO_PORT GPIOB
- void LED_GPIO_Config(void);
复制代码 led.c代码如下
- #include "BSP_LED.h"
- void LED_GPIO_Config(void)
- {
- GPIO_InitTypeDef GPIO_InitTStruct;
- RCC_APB2PeriphClockCmd(LED1_GPIO_CLK|LED2_GPIO_CLK|LED3_GPIO_CLK|LED4_GPIO_CLK|LED5_GPIO_CLK,ENABLE); //打开GPIOB外设时钟
- GPIO_InitTStruct.GPIO_Pin = LED1_GPIO_PIN|LED2_GPIO_PIN|LED3_GPIO_PIN|LED4_GPIO_PIN|LED5_GPIO_PIN;
- GPIO_InitTStruct.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitTStruct.GPIO_Speed = GPIO_Speed_10MHz;
-
- RCC_APB2PeriphClockCmd(LED6_GPIO_CLK|LED7_GPIO_CLK|LED8_GPIO_CLK,ENABLE); //打开GPIOB外设时钟
- GPIO_InitTStruct.GPIO_Pin = LED6_GPIO_PIN|LED7_GPIO_PIN|LED8_GPIO_PIN;
- GPIO_InitTStruct.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitTStruct.GPIO_Speed = GPIO_Speed_10MHz;
-
- GPIO_Init(LED1_GPIO_PORT,&GPIO_InitTStruct);
- GPIO_ResetBits(LED1_GPIO_PORT,LED1_GPIO_PIN);
-
- GPIO_Init(LED2_GPIO_PORT,&GPIO_InitTStruct);
- GPIO_ResetBits(LED2_GPIO_PORT,LED2_GPIO_PIN);
-
- GPIO_Init(LED3_GPIO_PORT,&GPIO_InitTStruct);
- GPIO_ResetBits(LED3_GPIO_PORT,LED3_GPIO_PIN);
-
- GPIO_Init(LED4_GPIO_PORT,&GPIO_InitTStruct);
- GPIO_ResetBits(LED4_GPIO_PORT,LED4_GPIO_PIN);
-
- GPIO_Init(LED5_GPIO_PORT,&GPIO_InitTStruct);
- GPIO_ResetBits(LED5_GPIO_PORT,LED5_GPIO_PIN);
-
- GPIO_Init(LED6_GPIO_PORT,&GPIO_InitTStruct);
- GPIO_ResetBits(LED6_GPIO_PORT,LED6_GPIO_PIN);
-
- GPIO_Init(LED7_GPIO_PORT,&GPIO_InitTStruct);
- GPIO_ResetBits(LED7_GPIO_PORT,LED7_GPIO_PIN);
-
- GPIO_Init(LED8_GPIO_PORT,&GPIO_InitTStruct);
- GPIO_ResetBits(LED8_GPIO_PORT,LED8_GPIO_PIN);
- // GPIO_SetBits(GPIOB,GPIO_PIN_2);
- // GPIO_InitTStruct.GPIO_Pin=GPIO_PIN_3;
- // GPIO_Init(GPIOB,&GPIO_InitTStruct);
- // GPIO_SetBits(GPIOB,GPIO_PIN_3);
- //
- }
复制代码
|
同样是一个结构体的赋值 开始赋值是LED1的值 还没有进行初始化 又进行LED6的赋值 执行的结果就是最后一次赋值有效
不想看寄存器就记住一点 同一组IO口 同一种配置方式可以使用一个初始化 配置以后必须进行初始化以后在进行下一组IO的配置 否则之前的IO配置无效
评分
查看全部评分
评分
查看全部评分