这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » zlgARM 请问zlgARM

共2条 1/1 1 跳转至

zlgARM 请问zlgARM

院士
2006-09-17 18:14:16     打赏
zlgARM 请问zlgARM



关键词: zlgARM     请问    

院士
2006-12-22 22:43:00     打赏
2楼
问 串口初始中你们提供的程序中:
   if(0!=set.parity)
   {    set.parity = set.parity-1;           
   }
是这个样子,是不是要改成这样子
   if(0!=set.parity)
   {    set.parity = set.parity-1;
       set.parity<<=4;
   }


/****************************************************************************
* 名称:UART0_Ini()
* 功能:初始化串口0。设置其工作模式及波特率。
* 入口参数:baud                波特率
*          set          模式设置(UARTMODE数据结构)
* 出口参数:返回值为1时表示初化成功,为0表除参数出错
****************************************************************************/
unsigned char  UART0_Ini(UartMode set)
{  uint32  bak;
   
   /* 参数过滤 */
   if( (0==set.UARTMODE.baudRate)||(set.UARTMODE.baudRate>115200) ) return(0);
   if( (set.datab<5)||(set.datab>8) ) return(0);
   if( (0==set.stopb)||(set.stopb>2) ) return(0);
   if( set.UARTMODE.parity>4 ) return(0);

   /* 设置串口波特率 */
   U0LCR = 0x80;                        // DLAB位置1
   bak = (Fpclk>>4)/set.baudRate;
   U0DLM = bak>>8;
   U0DLL = bak&0xff;
   
   /* 设置串口模式 */
   bak = set.datab-5;                   // 设置字长度
   if(2==set.stopb) bak |= 0x04;        // 判断是否为2位停止位  
   
   
   if(set.parity>3)   // 奇偶校验位,0为无校验,1奇数校验,2为偶数校验
   {    set.parity=0;
   }
   if(0!=set.parity)
   {    set.parity = set.parity-1;
       set.parity<<=4;
   }
   bak |= set.parity;                   // 设置奇偶校验
   U0LCR = bak;
   
   U0FCR = 0x01;
   U0IER = 0x03;
   return(1);
} 1: 怎么没有人回 2: re:还需要使能奇偶校验,这样就可以了:
if(0!=set.parity)
{    set.parity = set.parity-1;           
     bak |= 0x08;
}
bak |= set.parity<<4;
U0LCR = bak;


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]