以下是我的代码,运行后用串口接收到的全是乱码,串口已经设置了9600,这是怎么回事啊,纠结中。。。
#include <cdefBF518.h>
#include <sys\exception.h>
#include <cdefBF51x_base.h>
#include <blackfin.h>
#include <bfrom.h>
#define NULL 0
unsigned char RXbuf[512];
unsigned char TXbuf[10]={"1111111111"};
void Init_EBIU(void)
{
*pEBIU_AMBCTL0 = 0x7bb07bb0;
*pEBIU_AMBCTL1 = 0xffc07bb0;
*pEBIU_AMGCTL = 0x000f;
}
void Set_PLL(int pmsel,int pssel)
{
int new_PLL_CTL;
*pPLL_DIV = pssel;
asm("ssync;");
new_PLL_CTL = (pmsel & 0x3f) << 9;
*pSIC_IWR |= 0xffffffff;
if (new_PLL_CTL != *pPLL_CTL)
{
*pPLL_CTL = new_PLL_CTL;
asm("ssync;");
asm("idle;");
}
}
void UARTinit(unsigned short div)
{
*pUART0_GCTL=0x000d;
*pUART0_LCR=0x0080;// DLAB=1 允许访问DLL 和DLH
*pUART0_DLL=div;
*pUART0_DLH=div>>8; //DLL DLH分别赋值
*pUART0_LCR=0x0003;// 允许访问 RBR THR 和IER
*pUART0_IER=0x0001;// 接收中断允许
}
void Test_TX(void)
{
int i;
for(i=0;i<10;i++) //发送测试函数,将生成的数据通过IR发送出去。
{
*pUART0_THR=TXbuf[i];
while(!(*pUART0_LSR&0x0020));
}
if (i>10)i=0;
}
int main()
{
Set_PLL(16,3);
UARTinit(868); //9600波特率
// Init_Interrupts();
while(1)
Test_TX();
}