本帖最后由 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通道?
|