在线时间3 小时
UID320451
注册时间2010-2-24
NXP金币0
该用户从未签到
中级会员
 
- 积分
- 263
- 最后登录
- 1970-1-1
|
使用IAR软件编译的.
我是用串口调试助手调试的,当MCU发送0X00和0X55时电脑接收正常.发送其他数据电脑显示的不是MCU所发的数据,例如当MCU发送0X01时电脑显示7F,发送0X02电脑的串口高度助手上显示3E.且串口调试助手也是以十六进制数显示的
UART0初始化如下.
void uart0_init (void)
{
SIM_SOPT2 |=0x0c000000u;//SIM_SOPT2_UART0SRC(3); //UART0时钟源选择
/* SIM_SCGC4: UART0=1 */
SIM_SCGC4 |= SIM_SCGC4_UART0_MASK; //打开UART0时钟
PORTB_PCR3 = PORT_PCR_MUX(3); // PTB3引脚为UART0_TXD
PORTB_PCR4 = PORT_PCR_MUX(3); // PTB4引脚为UART0_RXD
/* UART0_C2: TIE=0,TCIE=0,RIE=0,ILIE=0,TE=0,RE=0,RWU=0,SBK=0 */
UART0_C2 = 0x00U; //禁止硬件中断,
/* UART0_BDH: LBKDIE=0,RXEDGIE=0,SBNS=0,SBR=0 */
UART0_BDH = 0x00;
/* UART0_BDL: SBR=4 */
UART0_BDL = 0x04; //设置波特率19230,在内部时钟2M/((采样率0X19+1)*0X04)
/* UART0_MA1: MA=0 */
UART0_MA1 = UART0_MA1_MA(0x00);
/* UART0_MA2: MA=0 */
UART0_MA2 = UART0_MA2_MA(0x00);
/* UART0_C4: MAEN1=0,MAEN2=0,M10=0,OSR=0x19 */
UART0_C4 = UART0_C4_OSR(0x19); //过采样率,设置波特率
/* UART0_C1: LOOPS=0,DOZEEN=0,RSRC=0,M=0,WAKE=0,ILT=0,PE=1,PT=0 */
UART0_C1 = UART0_C1_ILT_MASK|UART0_C1_PE_MASK ; //允许奇偶校验
/* UART0_S1: TDRE=1,TC=1,RDRF=0,IDLE=1,OR=1,NF=1,FE=1,PF=1 */
UART0_S1 = UART0_S1_TDRE_MASK | //发送数据寄存器空标志,0为满,1为空
UART0_S1_TC_MASK | //发送完成标志,0为正在发送,1发送器空闲
UART0_S1_IDLE_MASK | //接收空闲标志,0正
UART0_S1_OR_MASK | //接收溢出标志,0为无溢出,1接收溢出,写字清除该位
UART0_S1_NF_MASK | //噪声标志,0不检测接收无噪声,1检测接收数据中的噪声
UART0_S1_FE_MASK | //帧错误
UART0_S1_PF_MASK; //奇偶错误标志
/* UART0_S2: LBKDIF=1,RXEDGIF=1,MSBF=0,RXINV=0,RWUID=0,BRK13=0,LBKDE=0,RAF=0 */
UART0_S2 = (UART0_S2_LBKDIF_MASK | UART0_S2_RXEDGIF_MASK);
(void) UART0_D; //UART数据寄存器 /* Dummy read of the UART0_D register to clear flags */
/* UART0_C5: TDMAE=0,??=0,RDMAE=0,??=0,??=0,??=0,BOTHEDGE=0,RESYNCDIS=0 */
UART0_C5 = UART0_C5_BOTHEDGE_MASK;
/* UART0_C3: R8T9=0,R9T8=0,TXDIR=0,TXINV=0,ORIE=0,NEIE=0,FEIE=0,PEIE=0 */
UART0_C3 = 0x00U;
/* UART0_C2: TIE=0,TCIE=0,RIE=0,ILIE=0,TE=1,RE=1,RWU=0,SBK=0 */
//使能发送器,接收器
UART0_C2 = (UART0_C2_TE_MASK | UART0_C2_RE_MASK);
}
|
|