野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8673|回复: 7

位带操作

[复制链接]
发表于 2017-9-8 09:34:28 | 显示全部楼层 |阅读模式
位带操作,如图所示,为什么输入的PBout(0)修改为PBout(5)不出现红灯

位带操作点亮LED灯,修改为PBout(1)为什么不能出现蓝灯

位带操作点亮LED灯,修改为PBout(1)为什么不能出现蓝灯
回复

使用道具 举报

发表于 2017-9-8 09:43:51 | 显示全部楼层
代码传上来我测试下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-8 10:27:00 | 显示全部楼层
fire 发表于 2017-9-8 09:43
代码传上来我测试下

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

#define GPIOB_ODR_Addr     (GPIOB_BASE+0X0C)
#define PBout(n)           *(unsigned int*)((GPIOB_ODR_Addr & 0xF0000000)+0x02000000+((GPIOB_ODR_Addr &0x00FFFFFF)<<5)+(n<<2))
       
#define GPIOA_IDR_Addr     (GPIOA_BASE+0X08)
#define PAin(n)            *(unsigned int*)((GPIOA_IDR_Addr & 0xF0000000)+0x02000000+((GPIOA_IDR_Addr &0x00FFFFFF)<<5)+(n<<2))

#define GPIOC_IDR_Addr     (GPIOC_BASE+0X08)
#define PCin(n)            *(unsigned int*)((GPIOC_IDR_Addr & 0xF0000000)+0x02000000+((GPIOC_IDR_Addr &0x00FFFFFF)<<5)+(n<<2))

void Delay( uint32_t count )
{
        for(; count!=0; count--);
}

int main(void)
{
       
        LED_GPIO_Config();
        KEY_GPIO_Config();
#if 1
        while(1)
        {
                PBout(0) = 1;
                Delay(0xFFFFF);
                PBout(0) = 0;
                Delay(0xFFFFF);
        }
#else
        while(1)
        {
                if( PAin(0) == KEY_ON )
                {
                        while(PAin(0) == KEY_ON);
                        LED_G_TOGGLE;
                }

                if( PCin(13) == KEY_ON )
                {
                        while(PCin(13) == KEY_ON);
                        LED_G_TOGGLE;
                }               
        }
#endif       
}
回复 支持 反对

使用道具 举报

发表于 2017-9-8 10:37:23 | 显示全部楼层
280994281 发表于 2017-9-8 10:27
#include "stm32f10x.h"   
#include "bsp_led.h"
#include "bsp_key.h"

整个工程传上来
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-8 10:49:57 | 显示全部楼层
fire 发表于 2017-9-8 10:37
整个工程传上来

十分感谢!!!

14-位带操作—GPIO输出和输入.zip

5.81 MB, 下载次数: 13

回复 支持 反对

使用道具 举报

发表于 2017-9-8 10:54:16 | 显示全部楼层
LED GPIO 初始化函数只初始化了 PB0 ,没有初始化其他的IO,所以你怎么操作都是没有效果的

  1. void LED_GPIO_Config(void)
  2. {
  3.         GPIO_InitTypeDef  GPIO_InitStruct;
  4.         
  5.         RCC_APB2PeriphClockCmd(LED_G_GPIO_CLK, ENABLE);
  6.         
  7.         GPIO_InitStruct.GPIO_Pin = LED_G_GPIO_PIN;
  8.         GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
  9.         GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
  10.         
  11.         GPIO_Init(LED_G_GPIO_PORT, &GPIO_InitStruct);        
  12. }
复制代码

回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-8 11:20:08 | 显示全部楼层
哦哦 知道了  谢谢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-8 11:29:10 | 显示全部楼层
fire 发表于 2017-9-8 10:54
LED GPIO 初始化函数只初始化了 PB0 ,没有初始化其他的IO,所以你怎么操作都是没有效果的

已解决  thanks
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-21 07:56 , Processed in 0.075105 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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