通业开发人论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 429|回复: 0

位带操作

[复制链接]
发表于 2015-5-7 12:57:24 | 显示全部楼层 |阅读模式
void * get_bit_band_addr(void * addr, int bit_index)
{
    u32 source_addr = (u32)addr;
    u32 base_addr = 0;
    u32 base_bit_band_addr = 0;
    if(source_addr < SRAM1_BASE)
    {
        base_addr = CCMDATARAM_BASE;
        base_bit_band_addr = CCMDATARAM_BB_BASE;
    }
    else if(source_addr < SRAM2_BASE)
    {
        base_addr = SRAM1_BASE;
        base_bit_band_addr = SRAM1_BB_BASE;
    }
    else if(source_addr < SRAM3_BASE)
    {
        base_addr = SRAM2_BASE;
        base_bit_band_addr = SRAM2_BB_BASE;
    }
    else if(source_addr < PERIPH_BASE)
    {
        base_addr = SRAM3_BASE;
        base_bit_band_addr = SRAM3_BB_BASE;
    }
    else if(source_addr < BKPSRAM_BASE)
    {
        base_addr = PERIPH_BASE;
        base_bit_band_addr = PERIPH_BB_BASE;
    }
    else
    {
        base_addr = BKPSRAM_BASE;
        base_bit_band_addr = BKPSRAM_BB_BASE;
    }

    return (void *)(base_bit_band_addr + ((source_addr - base_addr) << 5) + (bit_index << 2));
}


回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|TongYe R&D Inc.

GMT+8, 2024-5-12 15:29 , Processed in 0.111006 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2000-2022, Tongye. 粤ICP备17061194号

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