embeded/Cortex-M3 Ti2015. 10. 23. 16:07

이게 정말 효율적일까? 라는 의문이 새록새록


일단.. 주소 연산하려면

* 2번(혹은 << 2번)

+ 1번

3번의 연산


만약 1비트를 조작하기 위해서 저 연산을 해야 하는데...

negation 과 and 연산이면 충분한데.. 오히려 연산량이 더 필요할 지도?

stellarisware의 bitband.c 예제

#define HWREGBITW(x, b)                                                       \

        HWREG(((unsigned long)(x) & 0xF0000000) | 0x02000000 |                \

              (((unsigned long)(x) & 0x000FFFFF) << 5) | ((b) << 2))


    for(ulIdx = 0; ulIdx < 32; ulIdx++)

    {

        HWREGBITW(&g_ulValue, 31 - ulIdx) = (0xdecafbad >> (31 - ulIdx)) & 1;

        PrintValue(g_ulValue);

        Delay(1);

    }




32비트 주소체계라 4바이트 씩 띄엄띄엄 값이 들어있다.


[링크 : http://www.ti.com/lit/ds/symlink/lm3s1968.pdf]

2013/08/16 - [embeded/Cortex-M3 Ti] - bitband / cortex-m3


'embeded > Cortex-M3 Ti' 카테고리의 다른 글

axf to bin  (6) 2015.11.11
lm3s1607 / lm3s811 비교  (0) 2015.11.03
lm3s617 stepper rdk  (0) 2015.10.13
lm3s spi / ssi  (0) 2015.10.06
lm3s stellarisware SPI  (0) 2015.10.05
Posted by 구차니