GPIOA高8位輸入控制低8位輸出(位運算)
阿新 • • 發佈:2019-01-02
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;
}
}