我是初学的,直接对寄存器定义赋值可以理解,在标准的C语言中左移,右移,与,或,非都可以理解
在ARM中,结合一些特殊的数字,一些运算符,位操作,表达式,却搞的我一头雾水,恳请大家赐教 #define En485Tx() (rGPEDAT |= 1<<13)
#define En485Rx() (rGPEDAT &= ~(1<<13))
static __inline void set_io(void)
{
rGPHCON &= ~(0xf<<12);
rGPHCON |= 0xa<<12; //TXD2,RXD2
rGPHUP |= 3<<6; //Uart port pull-up disable
rGPGCON &= ~((3<<4)|(3<<12));
rGPGCON |= (1<<4)|(1<<12);
rGPGDAT &= ~(1<<2);
rGPGDAT |= 1<<6;
rGPECON &= ~(3<<26);
rGPECON |= 1<<26;
En485Rx();
//-------------------set UART--------------------//
//选择功能管脚
//GPH0 -> nCTS0
//GPH1 -> nRTS0
//GPH2 -> TXD0
//GPH3 -> RXD0
//GPH4 -> TXD1
//GPH5 -> RXD1
//GPH6 -> nRTS1/TXD2
//GPH7 -> nTXS1/RXD2
rGPHCON = ( rGPHCON & (~(0xffff)) ) | (0xaaa0);//
//上拉电阻
rGPHUP = 0x0; // The pull up function is enable
//设置串口线性控制器寄存器
rULCON0 |= (0<<6)//No infra-red
|(0<<5)//No panity(set 0xx)
|(0<<2)//One stop bit per frame
|(3<<0);//11 = 8-bit
//设置串口控制寄存器
rUCON0 |= (0<<10)//00 = PCLK
|(1<<9)//Tx interrupt Type = Level
|(1<<8)//Rx interrupt Type = Level
|(0<<7)//Rx Timer out disable
|(1<<6)//Rx error status interrupt enable
|(0<<5)//Loopback mode disable
|(0<<4)//Send break signal disable
|(1<<2)//Transmit mode (01 = inerrupt request or polling mode)
|(1<<0);//Receive mode (01 = interupt request or polling mode)
//设置串口FIFO控制寄存器
rUFCON0 |= (3<<6)//Tx FIFO Trigger Level(11 = 48-byte)
|(3<<4)//Rx FIFO Trigger Level(11 = 32-byte)
|(1<<2)//Tx FIFO reset
|(1<<1)//Rx FIFO reset
|(1<<0);//FIFO Eable
//设置串口波特率分频寄存器
[ 此帖被ywy811216在2010-08-14 15:52重新编辑 ]