[技术问答] 向奔牛咨询两个遇到的小问题

[复制链接]
2310|6
 楼主| DLF5 发表于 2013-11-12 11:49 | 显示全部楼层 |阅读模式
本帖最后由 DLF5 于 2013-11-12 11:52 编辑

我用的是M058LBN,用寄存器方式编程的。
1,关于串行通信接收,接收FIFO为14个字节中断
     UA1_FCR &= 0xFFFFFF0F;        //先清零相应位 RFITL_4      (1<<4)
     UA1_FCR |= RFITL_14;        //FIFO  14BIT
           。
           。
void UART1_IRQHandler(void)
{
  if(UA1_ISR & RDA_INT)                                 //检查是否是接收数据中断(接收和发送用一个中断向量口)
   {               
    while(UA1_ISR & RDA_IF)                  
      {
        while(UA1_FSR & RX_EMPTY==0)                  //检查接收FIFO是否为空,获取所有接收到的数据 ******该语句开通就死在这里
        {
         read_data();
        }        
      }
    }
}
不知为什么程序一直死在while(UA1_FSR & RX_EMPTY==0) ,百思不解。改用直接读取14个字节后程序运行正常,数据正确。


2.AD转换,设成单次转换,单端输入模式,只能转换0通道,而通道1则转换结果一直为零。
  是不是单次转换模式只能用通道0,而别的通道无法用?(应该不太可能)
  技术手册上写“在单次转换模式时,如果软件使能多于1个通道,序号最小的通道被转换,其他通道被忽略。”这句话怎么理解?
  “软件使能”指的是使能的哪一步?是从设置 P1_MFP 开始就算使能?还是最后的  ADCR |= ADEN;   ADCHER  |= CHEN1;   ADCR |= ADST;算使能   ?     
  如何做到随心所欲的转换任何一个AD通道?



long029044 发表于 2013-11-12 12:47 | 显示全部楼层
AD转换,设成单次转换,所有通道都可以的。
使能 -ADEN
随心所欲的转换任何一个AD通道- 他们BSP都有 源代码。
设置选自己需要的通道直接调用通道选择函数就ok
 楼主| DLF5 发表于 2013-11-12 21:55 | 显示全部楼层
我用的是直接寄存器方式。用例程改的也不行。
 楼主| DLF5 发表于 2013-11-20 13:50 | 显示全部楼层
又遇到一个小问题,哪位朋友知道给解答一下。

PWM捕捉问题,我用P2.6口捕捉,当减法定时器到0时产生中断,这个中断怎么用?是否是直接使能PWM中断使能寄存器,寄PIERB|=PWMIE6?
 楼主| DLF5 发表于 2013-11-23 23:11 | 显示全部楼层
没人这么用么?
east森林 发表于 2013-11-25 17:48 | 显示全部楼层
学习中
万法归宗 发表于 2013-11-25 17:54 | 显示全部楼层
进来看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

71

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部