野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12628|回复: 2

ODR检测问题

[复制链接]
发表于 2017-3-21 14:46:45 | 显示全部楼层 |阅读模式
1.   寄存器ODR在“位带”  操作的时候,可不可以像IDR一样    判断输出的高低电平?  
列入IDR操作:  (判断按键操作)         
        if( PAIN(0) == KEY_ON )
        {
                 while(PAIN(0) == KEY_ON);   
                 G_GPIO_Port->ODR ^= G_GPIO_Pin;   
        }


2. 如果不能检测,那么方法
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
是怎么做到的?


拜托 具体点:
回复

使用道具 举报

发表于 2017-3-21 15:04:50 | 显示全部楼层
可以啊,你上面这样用正常吧?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-21 16:10:56 | 显示全部楼层
可是,我用ODR再开发板上没有反应。按键控制不了。
代码:
#define  GPIOB_ODR_Addr  (GPIOB_BASE + 0x0C)

#define  PAOUT(n)   *(unsigned int *)(( GPIOB_ODR_Addr & 0xF0000000) + 0x02000000 +((GPIOB_ODR_Addr & 0x00FFFFFF) << 5) + ( n<<2))


int main (void)
{
       
        led_config();
        key_config();
       
       
        while(1)
        {
               
                if( PAOUT(0)  ==  KEY_ON )
                {
                        while(PAOUT(0)  ==  KEY_ON);
                 G_GPIO_Port->ODR ^= G_GPIO_Pin;   

                }                               
}
       
       
}
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-15 14:15 , Processed in 0.070386 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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