1. 程式人生 > >GPIOA高8位輸入控制低8位輸出(位運算)

GPIOA高8位輸入控制低8位輸出(位運算)

1、位操作

int main()
{   
    //高8位浮空輸入,低8位推輓輸出
    GPIOA->CRH = 0x44444444;
    GPIOA->CRL = 0x33333333;
    while(1)
    {
        if((GPIOA->IDR & 0x0100) == 0x0100)
            GPIOA->ODR = GPIOA->ODR | 0x0001;
        else
            GPIOA->ODR = GPIOA->ODR & ~0x0001;

        if((GPIOA->
IDR & 0x0200) == 0x0200) GPIOA->ODR = GPIOA->ODR | 0x0002; else GPIOA->ODR = GPIOA->ODR & ~0x0002; if((GPIOA->IDR & 0x0400) == 0x0400) GPIOA->ODR = GPIOA->ODR | 0x0004; else GPIOA->ODR = GPIOA->ODR & ~0x0004; if
((GPIOA->IDR & 0x0800) == 0x0800) GPIOA->ODR = GPIOA->ODR | 0x0008; else GPIOA->ODR = GPIOA->ODR & ~0x0008; if((GPIOA->IDR & 0x1000) == 0x1000) GPIOA->ODR = GPIOA->ODR | 0x0010; else GPIOA->ODR = GPIOA->ODR & ~0x0010
; if((GPIOA->IDR & 0x2000) == 0x2000) GPIOA->ODR = GPIOA->ODR | 0x0020; else GPIOA->ODR = GPIOA->ODR & ~0x0020; if((GPIOA->IDR & 0x4000) == 0x4000) GPIOA->ODR = GPIOA->ODR | 0x0040; else GPIOA->ODR = GPIOA->ODR & ~0x0040; if((GPIOA->IDR & 0x8000) == 0x8000) GPIOA->ODR = GPIOA->ODR | 0x0080; else GPIOA->ODR = GPIOA->ODR & ~0x0080; } }