野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 22468|回复: 2

新手上路,真心求教各位前辈,下面的点亮RGB代码有哪不对

[复制链接]
发表于 2020-10-30 10:16:10 | 显示全部楼层 |阅读模式
//不懂为什么 LED_B(ON)  无效  但LED_B(OFF)有效  以及 给GPIO_PIN 送值的时候 该怎么把三个PIN口的值赋进去


#include "stm32f10x.h"
#include "bsp_led.h"
#include "bsp_key.h"


void Delay(uint32_t count)
{
        for(;count!=0;count--);
}
int main(void)
{
        //来到这里的时候 系统的时钟已经被配置成72M
          LED_GPIO_Config();
                KEY_GPIO_Config();

                while(1)
                {       
                                Delay(0xFFFFF);
                                LED_B(ON);
        //          LED_G(OFF);
        //                LED_R(OFF);
//       
//                        LED_G(OFF);
//                        LED_B(ON);
//                        LED_R(OFF);

//        Delay(0xFFFFF);
//                        LED_G(OFF);
//                        LED_B(OFF);
//                        LED_R(ON);

//                       
//                        if( KEY_scan(KEY_GPIO_PORT,KEY_GPIO_PIN)==KEY_ON)
//                        {
//                                LED_G_TOGGLE;
//                               
//                        }
                }
        }


#include "bsp_led.h"

void LED_GPIO_Config(void)
{
        GPIO_InitTypeDef  GPIO_InitStruct;
       
        //LV
        RCC_APB2PeriphClockCmd(LED_GPIO_CLK, ENABLE);
       

        GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
       
        GPIO_InitStruct.GPIO_Pin = LED_G_GPIO_PIN;
        GPIO_Init(LED_GPIO_PORT, &GPIO_InitStruct);       
}

#ifndef __BSP_LED_H
#define __BSP_LED_H

#include "stm32f10x.h"

#define LED_GPIO_PORT        GPIOB
#define LED_GPIO_CLK         RCC_APB2Periph_GPIOB  
#define LED_R_GPIO_PIN   GPIO_Pin_5
#define LED_B_GPIO_PIN   GPIO_Pin_1
#define LED_G_GPIO_PIN   GPIO_Pin_0

#define ON  1
#define OFF  0

# define LED_G(a) if(a) \
                               GPIO_ResetBits(LED_GPIO_PORT, LED_G_GPIO_PIN); \
                     else  GPIO_SetBits(LED_GPIO_PORT, LED_G_GPIO_PIN);




# define LED_R(a) if(a) \
                               GPIO_ResetBits(LED_GPIO_PORT, LED_R_GPIO_PIN); \
                     else  GPIO_SetBits(LED_GPIO_PORT, LED_R_GPIO_PIN);



# define LED_B(a) if(a) \
                               GPIO_ResetBits(LED_GPIO_PORT, LED_B_GPIO_PIN); \
                     else  GPIO_SetBits(LED_GPIO_PORT, LED_B_GPIO_PIN);


#define LED_G_TOGGLE  { LED_GPIO_PORT->ODR        ^= LED_G_GPIO_PIN ;}



void LED_GPIO_Config(void);

#endif /*__BSP_LED_H */


回复

使用道具 举报

发表于 2020-10-30 14:05:23 | 显示全部楼层
你先清空主函数while,然后把GPIO_ResetBits(LED_GPIO_PORT, LED_G_GPIO_PIN);添加到LED初始化语句的后面,看一下灯能不能亮,然后就是你提出的问题给的信息太少,直接贴代码别人获取的信息太少,先下载例程看是不是硬件问题,如果例程没问题而你自己写的有问题再针对软件修改
回复 支持 反对

使用道具 举报

发表于 2020-10-30 14:19:12 | 显示全部楼层
我也是新手上路 希望跟你一起学习  你把你的问题描述详细点儿:“不懂为什么 LED_B(ON)  无效  但LED_B(OFF)有效 ”
还有你贴的代码里好多 “//” 这些是注释掉的吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 02:45 , Processed in 0.042830 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表