이게 정말 효율적일까? 라는 의문이 새록새록
일단.. 주소 연산하려면
* 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 |