我想用CC2530的UART0的Alternative 1 作为SPI的master。程序如下
void init_port(void)
{
IO_FUNC_PORT_PIN(1, 0, IO_FUNC_GIO); //将P1_0设置为普通的IO口
IO_DIR_PORT_PIN(1, 0, IO_OUT); //设置为输出
IO_FUNC_PORT_PIN(1, 1, IO_FUNC_GIO); //将P1_1设置为普通的IO口
IO_DIR_PORT_PIN(1, 1, IO_OUT); //设置为输出
PERCFG |= 0x00; // PERCFG.U0CFG = 0 P0SEL |= 0x2C; // P0_5, P0_3, and P0_2 are peripherals P0SEL &= ~0x10; // P0_4 is GPIO (SSN) P0DIR |= 0x10; // SSN is set as output}
/******************************************************************************
* @fn init_Baudrate
*
* @brief
* Initializes components Baudrate application example.
*
* Parameters:
*
* @param void
*
* @return void
*
******************************************************************************/
void init_Baudrate(void)
{
U0BAUD = 0x3B; // BAUD_M = 59 9600 F=32M
U0GCR |= 0x08; // BAUD_E = 8
}
/*******************************************************************************
* @fn main
*
* @brief*
* @param none
*
* @return none
*******************************************************************************/
void main(void)
{
halMcuInit(); // 选择32MHz晶体振荡器作为系统时钟源(主时钟源)//设置时钟源32MHZ
init_port(); //初始化端口
init_Baudrate(); //初始化波特率
// SPI Master Mode
U0CSR &= ~0xA0; //选择为SPI为Master
// Configure phase, polarity, and bit order U0GCR &= ~0xC0; // CPOL = CPHA = 0 SHANG SHENG YAN CAI YANG
U0GCR |= 0x20; // ORDER = 1 MSB first
LED1=0;
unsigned char i;
char txBufferMaster[]="hello world";
while(1)
{
for (i = 0; i <= sizeof(txBufferMaster); i++) { SSN = LOW;
U0DBUF = txBufferMaster[i]; //加入要发送的数据
while (!U0TX_BYTE); SSN = HIGH;
U0TX_BYTE = 0;
}
LED1=~LED1;
halMcuWaitMs(1000);
}
}
编译时提示
Error[Pe020]: identifier "U0TX_BYTE" is undefined
就是U0TX_BYTE在头文件里面没有定义,我查看了头文件,只有对 USART 1 的定义
/* USART 1 Control and Status */
SFRBIT( U1CSR , 0xF8, U1MODE, U1RE, U1SLAVE, U1FE, U1ERR, U1RX_BYTE, U1TX_BYTE, U1ACTIVE )
SFR( U1DBUF , 0xF9 ) /* USART 1 Receive/Transmit Data Buffer */
SFR( U1BAUD , 0xFA ) /* USART 1 Baud Rate Control */
SFR( U1UCR , 0xFB ) /* USART 1 UART Control */
SFR( U1GCR , 0xFC ) /* USART 1 Generic Control */
SFR( P0DIR , 0xFD ) /* Port 0 Direction */
SFR( P1DIR , 0xFE ) /* Port 1 Direction */
SFR( P2DIR , 0xFF ) /* Port 2 Direction
当我选择UART1的Alternative 2 作为SPI的master,实验成功。
我的问题是,为什么头文件里面没有对UART0做像UARTI一样的定义呢?
灰小子:
这里有uart0的例程,楼主可以参考下
http://wenku.baidu.com/link?url=4kZCAq87BmnGJcjYDZnn751D2qLjzrHj0kKy9VhLSjraFEu0OB9_RJQYB2Z-gm8j04Mx7FG5D6owv_otKRzkMj9BV-3J3MsPpe-f-PqGSiW
endy mati:
回复 灰小子:
好的,谢谢您。基本实现了功能,但是还是不太明白,在头文件里面,为什么串口0没有与串口1类似的定义。