zoukankan      html  css  js  c++  java
  • 第二种BitBand操作的方式

    要使用Bitband来訪问外设,一定要得出相应的映射地址。人工计算肯定是不靠谱的,并且也没人想这么干。因此能够通过Excel,拉个列表来计算。想想,这也是一个不错的招数。可是后来想想,还是嫌麻烦,毕竟还是须要建立表格。填入公式,从reference manual中找寻寄存器的地址。

    后来看到EFM32的头文件。想到,既然头文件中已经把全部的寄存器的地址都制定好了的,为什么不直接拿来用的?利用IDE编译器帮我们计算呢?想来这也是比較简便的一条路子了。

    于是立即动手。

    经过半个小时的奋斗,最终ok了。

    为什么要经历这么久的时间,主要是*号,()号。实在是有点多啊。

    。指针,地址,指针值来着。。

    各位看官就不须要反复这个过程了。

    举个样例,想要通过bitband来控制PD7的输出。则宏定义例如以下:

    #define SCK_Port        gpioPortD 
    #define SCK_Pin         7
    #define SCK                (*((uint32_t *)(BITBAND_PER_BASE + (((uint32_t)&(GPIO->P[SCK_Port].DOUT) - PER_MEM_BASE) * 32) + (SCK_Pin * 4))))

    在主函数中操作例如以下:

    int main(void)
    {
        CHIP_Init();
        CMU_ClockEnable(cmuClock_GPIO, true);
        GPIO_PinModeSet(gpioPortD,7,gpioModePushPull,1);
        
        while(1)
        {
            unsigned long Delay = 1000000;
            while(Delay--);
            SCK = 1;
            Delay = 1000000;
            while(Delay--);
            SCK = 0;
        }
    }

    通过查看IAR的汇编窗体。也能看到汇编指令也仅仅须要3条而已。。


  • 相关阅读:
    FW : Unit of Measure related settings in SAP
    SAP PCA: 转移价格的确定
    SAP 关于贸易伙伴(Trading Partner)区分关联方/非关联方/子公司/第三方
    FSV tables in S/4 HANA OB58 , S_E38_98000088
    SAP Profit Center Table Data
    服务器搭建网站完整教程(宝塔面板+wordpress)
    运营
    undefined reference to `std::cout'等错误
    [c++][chromium]C++做与不做 C++ Dos and Don'ts
    [git]快速迁移git仓库
  • 原文地址:https://www.cnblogs.com/mthoutai/p/7215800.html
Copyright © 2011-2022 走看看