中级会员
- 积分
- 255
- 金钱
- 255
- 注册时间
- 2014-12-26
- 在线时间
- 117 小时
|
10金钱
单片机用的是stm8s103k,要使用UART和ADC,单独使用UART或ADC都没问题,但吧两个程序都加到main就出问题:加上ADC的程序后,UART不接收数据。开发环境是STVD,以下是初始化代码:
void Adc_Init(void)
{
ADC_CSR = 0x22; //使能转换中断,转换通道0~2
ADC_CR1 = 0x02; //连续转换
ADC_CR2 = 0x0a; //数据右对齐,扫描方式
ADC_CR3 = 0x80; //数据缓冲使能
ADC_TDRL = 0x03;
ADC_CR1 |= 0x01; //启动ADC
// ITC_SPR6 &= 0x4f;
ConvOver_Flag = 0;
}
void UART1_Init(void)
{
UART1_CR1 = 0;
UART1_CR2 = 0;
UART1_CR3 = 0;
UART1_BRR2 = 0x03;
UART1_BRR1 = 0x68;
UART1_CR2 = 0x2c;
// ITC_SPR5 &= 0xdf;
TimeOn_Flag = 0;
Timeout_Flag = 0;
Timeout_Counter = 0;
}
中断函数:
@near @interrupt void ADC_EOC_IRQHandler(void)
{
ADC_CSR &= 0x7f;
adc_buf[V1] = (ADC_DB0RH << 8) + ADC_DB0RL;
adc_buf[V2] = (ADC_DB1RH << 8) + ADC_DB1RL;
adc_buf[IO] = (ADC_DB2RH << 8) + ADC_DB2RL;
ConvOver_Flag = 1;
// ADC_CR1 |= 0x01;
return;
}
只要加上Adc_Init(),UART就接收不到数据,只要把ADC_CSR = 0x22;改成ADC_CSR = 0x02;就能接收数据。请大神指点!!
|
|