typedef uint32_t * const bitband_t;
bitband_t pinPowerLed = BITBAND_PERIPH(&GPIOC->ODR, 15);
bitband_t pinDispLed = BITBAND_PERIPH(&GPIOC->ODR, 14);
u32** led_ar[2] = {0, 0};
void led_init(u8 index, u32** led)
{
if(index >= (sizeof(led_ar)/sizeof(u32))) return;
led_ar[index] = led;
}
void led_task(void)
{
for(int i = 0; i < (sizeof(led_ar)/sizeof(u32)); i++)
{
if(led_ar)
{
(**led_ar[i])^= 1;
}
}
}
void main(void)
{
led_init(0, (u32**)&pinPowerLed);
led_init(1, (u32**)&pinDispLed);
}
함수를 작성할때 중복 사용 가능한 구조로 만들어서 bitband를 전달할 경우가 있다 ( 버퍼 전달할 경우도 동일 )
LED에만 적용되는게 아니고 다른 출력, 또는 다른 입력을 사용할 수 있다.
또한 bitband를 배열로 만들어 빠르게 사용 가능하다.
이중 포인터라고 생각하면 된다.
bitbnad가 어차피 포인터이므로 포인터의 주소를 함수에 전달하고.
받은 주소를 포인트로 다시 만들고, 그 포인트에 할당한 곳에다가 값을 주거나 받아온다.
작업 편이 때문에 이런 식으로 많이 사용한다.
왜냐면 또 만들기 귀찮아서..
사업자 정보 표시
봄해(BOMHAI) | 이동현 | 경기도 수원시 장안구 상률로 32 103동 1301 | 사업자 등록번호 : 564-09-02316 | TEL : 010-2977-3322 | Mail : dylan@bomhai.com | 통신판매신고번호 : 2023-수원장안-0750호 | 사이버몰의 이용약관 바로가기
'MCU > TIP' 카테고리의 다른 글
무료툴 Hex Editor Neo (0) | 2023.05.15 |
---|---|
TouchGFX Designer 로 만든 프로젝트 에서 printf 사용 (0) | 2020.06.07 |
STM32CubeIDE 프로젝트 복사해서 재사용하는 방법 (0) | 2020.04.22 |