stm8s103UART与ADC冲突的问题

2019-07-19 20:37发布

单片机用的是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;就能接收数据。请大神指点!!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
xiong2088
1楼-- · 2019-07-20 02:18
问题已经解决,貌似ADC采样频率不能太高。
正点原子
2楼-- · 2019-07-20 07:20
帮顶

一周热门 更多>