音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

easy2131 UART1的問題

作者:jft 欄目:ARM技術(shù)
easy2131 UART1的問題
不知道為什么EASY2132上電后UART1就不停的發(fā)送亂碼.我用跳線把UART1接到232上,就是代替UART0.用JTAG調(diào)試的時候,程序還沒執(zhí)行,UART1就開始發(fā)送亂碼.這是我的程序:#include "config.h"
const uint32 leds8=(0xff<<18);
typedef struct UartMode
{
uint8 datab;
uint8 stopb;
uint8 parity;

}UARTMODE;

uint32 rcv_buf[8];
volatile uint8 rcv_new;

void delay(uint32 n)
{
uint32 i;
for(;n>0;n--)
     for(i=0;i<50000;i++);
}


void  __irq IRQ_UART1(void)//串口接受中斷,將接受的數(shù)據(jù)存放在數(shù)組rcv_buf[8]
{

uint8 i;

//if((U0IIR&0X0F)==0X04)
rcv_new=1;
for(i=0;i<8;i++)
{rcv_buf[i]=U1RBR;


}
VICVectAddr=0x00;
}

void UART1_SendByte(uint8 dat)//要發(fā)送的數(shù)據(jù)
{
U1THR=dat;

}

void UART1_SendBuf()//往串口發(fā)送數(shù)據(jù)
{
uint8 i;
for(i=0;i<8;i++)
UART1_SendByte(rcv_buf[i]);
while ((U1LSR&0X20)==0);
}


int8 UART1_Int(uint32 baud,UARTMODE set)//串口初始化函數(shù)//
{
uint32 bak;
if((baud==0)||(baud>115200))return(0);///////參數(shù)過濾//
if((set.datab<5)||(set.datab>8))return(0);
if((set.stopb==0)||(set.stopb>2))return(0);
if(set.parity>4)return(0);

//設置波特率//
U1LCR=0X80;
bak=(Fpclk>>4)/baud;
U1DLM=bak>>8;
U1DLL=bak&0XFF;
bak=set.datab-5;
if(set.stopb==2) bak|=0x04;////bak=bak|0x04
if(set.parity!=0)
{set.parity=set.parity-1;
bak|=0x08;
}
bak|=set.parity<<4;///bak=bak|set.parity<<4
U1LCR=bak;//bak=3
return(1);

}

        int main (void)
{
    UARTMODE set;
    set.datab=8;
    set.stopb=1;
    set.parity=0;
    rcv_new=0;
    PINSEL0=0X000f0000;
    PINSEL1=0X0;
    IO1DIR=leds8;
    UART1_Int(115200,set);//串口初始化
    U1FCR=0X81;
    U1IER=0X01;
    IRQEnable();
    VICIntSelect=0x000000;
    VICVectCntl0=0x20|0x07;
    VICVectAddr0=(uint32)IRQ_UART1;//中斷向量的定義和設置
    VICIntEnable=1<<0x07;
    while(1)
    {
    if(rcv_new==1)
    
        {
        UART1_SendBuf();
        //IO1SET=(0X01<<18);
        //delay(20);
        IO1CLR=(0x01<<18);
        delay(50);
        IO1SET=~(0X0);
        rcv_new=0;
        
        }
    }
    
    
    return 0;
}
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/


2樓: >>參與討論
jft
找到原因
PINSEL0=0X000f0000;
修改成PINSEL0=0X00050000;就可以了


參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
LPC2119壞了,EASYJTAG能不能仿真或下載程序,有沒有這個可能?
EASYARM2200 中USB試驗
求EasyARM2200的ADS1.2模板文件
"EasyARM2200開教學實驗開發(fā)平臺"低價轉(zhuǎn)給有需要的同學
請教,周工實驗板周工的例子改為上升沿中斷就不行?
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號