|
|||||||||||
| 技術(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ù) |
不知道為什么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 于 2006/1/5 20:38:00 發(fā)布:
找到原因 PINSEL0=0X000f0000; 修改成PINSEL0=0X00050000;就可以了 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |