打印
[STM32F4]

STM32F4驱动LED灯的问题

[复制链接]
1362|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wangch_sh|  楼主 | 2014-10-15 14:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用STM32F407驱动LED,发现只有PD口,PF口可以正常工作,其他不行。
大侠给看看。谢谢!
贴出部分程序
#define RCC_AHB1Periph_GPIOA             ((uint32_t)0x00000001)
#define RCC_AHB1Periph_GPIOB             ((uint32_t)0x00000002)
#define RCC_AHB1Periph_GPIOC             ((uint32_t)0x00000004)
#define RCC_AHB1Periph_GPIOD             ((uint32_t)0x00000008)
#define RCC_AHB1Periph_GPIOE             ((uint32_t)0x00000010)
#define RCC_AHB1Periph_GPIOF             ((uint32_t)0x00000020)
#define RCC_AHB1Periph_GPIOG             ((uint32_t)0x00000040)


#define PERIPH_BASE           ((uint32_t)0x40000000)
#define APB2PERIPH_BASE      (PERIPH_BASE + 0x10000)
#define AHB1PERIPH_BASE      (PERIPH_BASE + 0x20000)
#define GPIOA_BASE            (AHB1PERIPH_BASE+ 0x0000)
#define GPIOA               ((GPIO_TypeDef *) GPIOA_BASE)
#define GPIOB_BASE            (AHB1PERIPH_BASE+ 0x0400)
#define GPIOB               ((GPIO_TypeDef *) GPIOB_BASE)
#define GPIOC_BASE            (AHB1PERIPH_BASE+ 0x0800)
#define GPIOC               ((GPIO_TypeDef *) GPIOC_BASE)
#define GPIOD_BASE            (AHB1PERIPH_BASE+ 0x0C00)
#define GPIOD               ((GPIO_TypeDef *) GPIOD_BASE)
#define GPIOE_BASE            (AHB1PERIPH_BASE+ 0x1000)
#define GPIOE               ((GPIO_TypeDef *) GPIOE_BASE)
#define GPIOF_BASE            (AHB1PERIPH_BASE+ 0x1400)
#define GPIOF               ((GPIO_TypeDef *) GPIOF_BASE)
#define GPIOG_BASE            (AHB1PERIPH_BASE+ 0x1800)
#define GPIOG               ((GPIO_TypeDef *) GPIOG_BASE)

沙发
wangch_sh|  楼主 | 2014-10-15 14:36 | 只看该作者
/*使能AHB1总线的时钟,对GPIO的端口F时钟使能*/
           RCC->AHB1ENR |= RCC_AHB1Periph_GPIOF;
         RCC->AHB1ENR |= RCC_AHB1Periph_GPIOD;
            RCC->AHB1ENR |= RCC_AHB1Periph_GPIOE;
         RCC->AHB1ENR |= RCC_AHB1Periph_GPIOG;
         RCC->AHB1ENR |= RCC_AHB1Periph_GPIOA;
         RCC->AHB1ENR |= RCC_AHB1Periph_GPIOB;
         RCC->AHB1ENR |= RCC_AHB1Periph_GPIOC;

/*配置输入输出模式和输入输出的速度*/
         GPIOA->MODER &= 0x0FC000F0;                //01表示通用输入输出
     GPIOA->MODER |= 0x50154505;

         GPIOA->OTYPER &= 0x0000000;                  //0表示上拉输出
     GPIOA->OTYPER |= 0x0000000;

         GPIOA->OSPEEDR        &= 0x00000000;                 //        25MHZ
           GPIOA->OSPEEDR |= 0x50154505;

     GPIOA->PUPDR &= 0x0FC000F0;                //00没上啦,没下拉
     GPIOA->PUPDR |= 0x0000000;

         GPIOB->MODER &= 0x0FC000F0;                //01表示通用输入输出
     GPIOB->MODER |= 0x50154505;

         GPIOB->OTYPER &= 0x0000000;                  //0表示上拉输出
     GPIOB->OTYPER |= 0x0000000;

         GPIOB->OSPEEDR        &= 0x00000000;                 //        25MHZ
           GPIOB->OSPEEDR |= 0x50154505;

     GPIOB->PUPDR &= 0x0FC000F0;                //00没上啦,没下拉
     GPIOB->PUPDR |= 0x0000000;

         GPIOC->MODER &= 0x0FC000F0;                //01表示通用输入输出
     GPIOC->MODER |= 0x50154505;

         GPIOC->OTYPER &= 0x0000000;                  //0表示上拉输出
     GPIOC->OTYPER |= 0x0000000;

         GPIOC->OSPEEDR        &= 0x00000000;                 //        25MHZ
           GPIOC->OSPEEDR |= 0x50154505;

     GPIOC->PUPDR &= 0x0FC000F0;                //00没上啦,没下拉
     GPIOC->PUPDR |= 0x0000000;

         GPIOD->MODER &= 0x0FC000F0;                //01表示通用输入输出
     GPIOD->MODER |= 0x50154505;

         GPIOD->OTYPER &= 0x0000000;                  //0表示上拉输出
     GPIOD->OTYPER |= 0x0000000;

         GPIOD->OSPEEDR        &= 0x00000000;                 //        25MHZ
           GPIOD->OSPEEDR |= 0x50154505;

     GPIOD->PUPDR &= 0x0FC000F0;                //00没上啦,没下拉
     GPIOD->PUPDR |= 0x0000000;

         GPIOE->MODER &= 0x0FC000F0;                //01表示通用输入输出
     GPIOE->MODER |= 0x50154505;

         GPIOE->OTYPER &= 0x0000000;                  //0表示上拉输出
     GPIOE->OTYPER |= 0x0000000;

         GPIOE->OSPEEDR        &= 0x00000000;                 //        25MHZ
           GPIOE->OSPEEDR |= 0x50154505;

     GPIOE->PUPDR &= 0x0FC000F0;                //00没上啦,没下拉
     GPIOE->PUPDR |= 0x0000000;

         GPIOF->MODER &= 0xFFC00FF0;                //01表示通用输入输出
     GPIOF->MODER |= 0x00154001;

         GPIOF->OTYPER &= 0xFFFFB000;                  //0表示上拉输出
     GPIOF->OTYPER |= 0x0000000;

         GPIOF->OSPEEDR        &= 0xFFC00F0;                 //        25MHZ
           GPIOF->OSPEEDR |= 0x00154001;

     GPIOF->PUPDR &= 0xFFC00FF0;                //00没上啦,没下拉
     GPIOF->PUPDR |= 0x0000000;

         GPIOG->MODER &= 0xF0C00FF0;                //01表示通用输入输出
     GPIOG->MODER |= 0x05154001;

         GPIOG->OTYPER &= 0xF0FF0000;                  //0表示上拉输出
     GPIOG->OTYPER |= 0x0000000;

         GPIOG->OSPEEDR        &= 0xF0C00F0;                 //        25MHZ
           GPIOG->OSPEEDR |= 0x05154001;

     GPIOG->PUPDR &= 0xF0C00FF0;                //00没上啦,没下拉
     GPIOG->PUPDR |= 0x0000000;

使用特权

评论回复
板凳
wangch_sh|  楼主 | 2014-10-15 14:36 | 只看该作者
/* Infinite loop 主循环 */
    while (1)
    {
            GPIOA->BSRRL=GPIO_Pin_0;          /*熄灭LED灯*/
                GPIOB->BSRRL=GPIO_Pin_0;          /*熄灭LED灯*/
                GPIOC->BSRRL=GPIO_Pin_0;          /*熄灭LED灯*/
                GPIOD->BSRRL=GPIO_Pin_0;          /*熄灭LED灯*/
                GPIOE->BSRRL=GPIO_Pin_0;          /*熄灭LED灯*/
                GPIOF->BSRRL=GPIO_Pin_9;          /*熄灭LED灯*/
                GPIOF->BSRRL=GPIO_Pin_10;          /*熄灭LED灯*/
              Delay(0x2FFFFFF);
                GPIOA->BSRRH=GPIO_Pin_0;         /*点亮LED灯*/
                GPIOB->BSRRH=GPIO_Pin_0;         /*点亮LED灯*/
                GPIOC->BSRRH=GPIO_Pin_0;         /*点亮LED灯*/
                GPIOD->BSRRH=GPIO_Pin_0;         /*点亮LED灯*/
                GPIOE->BSRRH=GPIO_Pin_0;         /*点亮LED灯*/
                GPIOF->BSRRH=GPIO_Pin_9;         /*点亮LED灯*/       
              GPIOF->BSRRH=GPIO_Pin_10;         /*点亮LED灯*/
              Delay(0x2FFFFFF);
    }

使用特权

评论回复
地板
wangch_sh|  楼主 | 2014-10-15 17:42 | 只看该作者
用库的例程解决了。

使用特权

评论回复
5
mmuuss586| | 2014-10-15 20:40 | 只看该作者
#define RUN_LED_ON              GPIOA->BSRRL = GPIO_Pin_15
#define RUN_LED_OFF             GPIOA->BSRRH = GPIO_Pin_15
我一般这样定义的;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:为江山踏坏了乌骓马,为社稷拉断了宝雕弓。

318

主题

2817

帖子

5

粉丝