有人串口服务器不稳定,老周,好几个人碰到串口不稳定问题,请指教一下

老周,好几个人碰到串口不稳定问题,请指教一下

1:UART1中断设置

// UART1中断设置

VICVectAddr4 = (uint32)IRQ_UART1_SERVERS;                              // 设置UART1中断向量地址

VICVectCntl4 = 0x27;                                                  // UART1通道分配到第4通道

VICIntEnable = 0x00000080| VICIntEnable;                              // 使能UART1中断

// 设置串行口UART1的引脚功能

PINSEL0 = (PINSEL0 & 0xfff0ffff) | 0x00050000;                        // 选择管脚为UART1

U1LCR = 0x83;                                                         // 允许访问分频因子寄存器

U1DLM = (Fpclk / (16*DRIVER_UART1_BPS))/256;                          // 设置波特率

U1DLL = (Fpclk / (16*DRIVER_UART1_BPS))%256;                          // 设置波特率

U1LCR = 0x03;                                                         // 禁止访问分频因子寄存器  且设置为8,1,n

U1IER = 0x03;                                                         // 发送中断,接收中断,BIT0是RBR使能中断,BIT1是THRE使能中断

U1FCR = 0x00;                                                         // 初始化FIFO

2:中断程序

void __irq IRQ_UART1_SERVERS(void)

{

uint8   UART1_IRQ_CHOICE,UART1_RBR_TEMP;                              // 程序变量

UART1_IRQ_CHOICE = U1IIR;                                             // 读状态,同时清中断

if(UART1_IRQ_CHOICE & 0x02)                                           // 发送中断

{

;

}// 发送服务程序结束

if(UART1_IRQ_CHOICE & 0x04)                                           // 接收中断

{

UART1_RBR_TEMP = U1RBR;                                              // 从寄存器取出数据

}// 接收服务程序结束

VICVectAddr = 0x00;                                                      // 通知VIC中断处理结束

}

3:  只要串口不活动,就不会经常出现系统重启动问题

4: 串口只发送也不会出现系统重启动问题

5: 一旦串口出现接收中断,就如上现的中断程序,在接收中断里什么都不做

,也会出现系统重启动问题

6:  起初是怀疑电源问题,换了N种电源,做了N种测试,我断定是串口接收中

断的问题,但是我程序减到接收数据什么都不做,还是出现重启动

7: 以上现象,我断定是串口接收中断的设置问题,但这是老周你的设置

很多人碰到这种现象了,请老周你帮帮忙,大家项目都很紧啊!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值